mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-20 22:47:01 +01:00
Merge branch 'main' of https://github.com/joBr99/nspanel-lovelace-ui
This commit is contained in:
@@ -172,7 +172,7 @@ class LuiPagesGen(object):
|
||||
status_entity = self._ha_api.get_entity(item.status)
|
||||
icon_color = self.get_entity_color(status_entity)
|
||||
if item.status.startswith("sensor") and cardType == "cardGrid":
|
||||
icon_id = status_entity.state[:3]
|
||||
icon_id = status_entity.state[:4]
|
||||
if icon_id[-1] == ".":
|
||||
icon_id = icon_id[:-1]
|
||||
else:
|
||||
@@ -236,7 +236,7 @@ class LuiPagesGen(object):
|
||||
unit_of_measurement = entity.attributes.get("unit_of_measurement", "")
|
||||
value = entity.state + " " + unit_of_measurement
|
||||
if cardType == "cardGrid" and entityType == "sensor":
|
||||
icon_id = entity.state[:3]
|
||||
icon_id = entity.state[:4]
|
||||
if icon_id[-1] == ".":
|
||||
icon_id = icon_id[:-1]
|
||||
else:
|
||||
@@ -274,7 +274,7 @@ class LuiPagesGen(object):
|
||||
icon_id = get_icon_id_ha("input_text", overwrite=icon)
|
||||
value = entity.state
|
||||
return f"~text~{entityId}~{icon_id}~17299~{name}~{value}"
|
||||
return f"~text~{entityId}~{get_icon_id('alert-circle-outline')}~17299~error~"
|
||||
return f"~text~{entityId}~{get_icon_id('alert-circle-outline')}~17299~unsupported~"
|
||||
|
||||
def generate_entities_page(self, navigation, heading, items, cardType):
|
||||
command = f"entityUpd~{heading}~{navigation}"
|
||||
|
||||
@@ -15,6 +15,9 @@ ReleaseNotes:
|
||||
- 08.05.2022 - Schalter (Licht, Dimmer, Hue, etc) in cardGrid lassen sich wieder schalten
|
||||
- 14.06.2022 - Aktion auf Submenüs schaltet unmittelbar auf vorheriges Mainmenu (Many thanks to Grrzzz)
|
||||
- 14.06.2022 - Menü-Pfeile in Subpages (z.B. card QR, cardMedia, etc) (Many thanks to Grrzzz)
|
||||
- 15.06.2022 - Date/Time im Screensaver auf Basis localString (de-DE/en-EN/nl-NL/etc.)
|
||||
- 16.06.2022 - Multilingual - config.locale (en-EN, de-DE, nl-NL, da-DK, es-ES, fr-FR, it-IT, ru-RU)
|
||||
- 16.06.2022 - Bugfix by Grrzzz - Subpages
|
||||
|
||||
Wenn Rule definiert, dann können die Hardware-Tasten ebenfalls für Seitensteuerung (dann nicht mehr als Releais) genutzt werden
|
||||
Tasmota Konsole:
|
||||
@@ -68,10 +71,8 @@ Interne Sonoff-Sensoren (über Tasmota):
|
||||
(!!! Achtung: der interne Sonoff-Sensor liefert keine exakten Daten, da das NSPanel-Board und der ESP selbst Hitze produzieren !!!
|
||||
ggf. Offset einplanen oder besser einen externen Sensor über Zigbee etc. verwenden)
|
||||
Timestamp - wird in 0_userdata.0. Zeitpunkt der letzten Sensorübertragung
|
||||
|
||||
Tasmota-Status0 - (zyklische Ausführung)
|
||||
liefert relevanten Tasmota-Informationen und kann bei Bedarf in "function get_tasmota_status0()" erweitert werden. Daten werden in 0_userdata.0. abgelegt
|
||||
|
||||
Erforderliche Adapter:
|
||||
Accu-Wheater: - Bei Nutzung der Wetterfunktionen (und zur Icon-Konvertierung) im Screensaver
|
||||
Alexa2: - Bei Nutzung der dynamischen SpeakerList in der cardMedia
|
||||
@@ -79,7 +80,6 @@ Erforderliche Adapter:
|
||||
Alias-Manager - !!! ausschießlich für MEDIA-Alias
|
||||
MQTT-Adapter - Für Kommunikation zwischen Skript und Tasmota
|
||||
JavaScript-Adapter
|
||||
|
||||
Upgrades in Konsole:
|
||||
Tasmota BerryDriver : Backlog UpdateDriverVersion https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be; Restart 1
|
||||
TFT EU STABLE Version : FlashNextion http://nspanel.pky.eu/lovelace-ui/github/nspanel-v3.0.0.tft
|
||||
@@ -91,8 +91,9 @@ const NSPanel_Path = "0_userdata.0.NSPanel.1."
|
||||
const Debug = false;
|
||||
var manually_Update = true;
|
||||
|
||||
const Months = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
|
||||
const Days = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
|
||||
//const Months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
||||
//const Days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
|
||||
|
||||
//const Off: RGB = { red: 68, green: 115, blue: 158 }; //Blau-Off
|
||||
const Off: RGB = { red: 253, green: 128, blue: 0 }; //Orange-Off - schönere Farbübergänge
|
||||
const On: RGB = { red: 253, green: 216, blue: 53 };
|
||||
@@ -445,9 +446,9 @@ export const config: Config = {
|
||||
dimmode: 8,
|
||||
active: 100, //Standard-Brightness TFT
|
||||
screenSaverDoubleClick: false,
|
||||
locale: "de_DE",
|
||||
timeFormat: "%H:%M",
|
||||
dateFormat: "%A, %d. %B %Y",
|
||||
locale: "en-EN", //en-EN, de-DE, nl-NL, da-DK, es-ES, fr-FR, it-IT, ru-RU
|
||||
timeFormat: "%H:%M", //currently not used
|
||||
dateFormat: "%A, %d. %B %Y", //currently not used
|
||||
weatherEntity: "alias.0.Wetter",
|
||||
defaultOffColor: Off,
|
||||
defaultOnColor: On,
|
||||
@@ -542,12 +543,26 @@ schedule("*/30 * * * *", function () {
|
||||
});
|
||||
|
||||
//Mit Start auf Updates checken
|
||||
get_locales();
|
||||
setState(config.panelSendTopic, 'pageType~pageStartup');
|
||||
get_tasmota_status0()
|
||||
get_tasmota_status0();
|
||||
get_panel_update_data();
|
||||
check_updates();
|
||||
|
||||
//------------------Begin Update Functions
|
||||
|
||||
function get_locales() {
|
||||
exec('curl https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/ioBroker/ioBroker_NSPanel_locales.json', function (error, result, stderr){
|
||||
if (result) {
|
||||
let BerryDriverVersionOnline = result.substring((result.indexOf("version_of_this_script = ") + 24), result.indexOf("version_of_this_script = ") + 27).replace(/\s+/g, '');
|
||||
createState(NSPanel_Path + "NSPanel_locales_json");
|
||||
var timer = setTimeout(function() {
|
||||
setIfExists(NSPanel_Path + 'NSPanel_locales_json', result);
|
||||
}, 2000);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function check_updates() {
|
||||
|
||||
const desired_display_firmware_version = 37;
|
||||
@@ -884,7 +899,7 @@ function HandleMessage(typ: string, method: string, page: number, words: Array<s
|
||||
}
|
||||
|
||||
function findPageItem(searching: String) : PageItem {
|
||||
let pageItem = config.pages[pageId].items.find(e => e.id === searching);
|
||||
let pageItem = activePage.items.find(e => e.id === searching);
|
||||
|
||||
if (pageItem !== undefined) {
|
||||
return pageItem;
|
||||
@@ -947,27 +962,32 @@ function HandleStartupProcess(): void {
|
||||
}
|
||||
|
||||
function SendDate(): void {
|
||||
|
||||
var d = new Date();
|
||||
var day = Days[d.getDay()];
|
||||
var date = d.getDate();
|
||||
var month = Months[d.getMonth()];
|
||||
var year = d.getFullYear();
|
||||
var _sendDate = "date~" + day + " " + date + " " + month + " " + year;
|
||||
SendToPanel(<Payload>{ payload: _sendDate });
|
||||
var month = d.getMonth();
|
||||
var day = d.getDate();
|
||||
const date = new Date(year,month,day,1,1,1);
|
||||
const options : any = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
|
||||
var _SendDate = date.toLocaleDateString(config.locale, options);
|
||||
|
||||
SendToPanel(<Payload>{ payload: "date~" + _SendDate });
|
||||
|
||||
}
|
||||
|
||||
function SendTime(): void {
|
||||
var d = new Date();
|
||||
var hr = d.getHours().toString();
|
||||
var min = d.getMinutes().toString();
|
||||
|
||||
if (d.getHours() < 10) {
|
||||
hr = "0" + d.getHours().toString();
|
||||
}
|
||||
if (d.getMinutes() < 10) {
|
||||
min = "0" + d.getMinutes().toString();
|
||||
}
|
||||
SendToPanel(<Payload>{ payload: "time~" + hr + ":" + min });
|
||||
var d = new Date();
|
||||
var year = d.getFullYear();
|
||||
var month = d.getMonth();
|
||||
var day = d.getDate();
|
||||
var hr = d.getHours();
|
||||
var min = d.getMinutes();
|
||||
const date = new Date(year, month, day, hr, min, 1);
|
||||
|
||||
var _SendTime = date.toLocaleTimeString(config.locale, { hour: '2-digit', minute: '2-digit', hour12: false});
|
||||
|
||||
SendToPanel(<Payload>{ payload: "time~" + _SendTime });
|
||||
}
|
||||
|
||||
function ScreensaverDimmode() {
|
||||
@@ -1216,12 +1236,12 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
if (getState(pageItem.id + ".ACTUAL").val) {
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == "door" ? Icons.GetIcon("door-open") : Icons.GetIcon("window-open-variant");
|
||||
iconColor = GetIconColor(pageItem, false, useColors);
|
||||
var windowState = "opened"
|
||||
var windowState = findLocale("window","opened");
|
||||
} else {
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == "door" ? Icons.GetIcon("door-closed") : Icons.GetIcon("window-closed-variant");
|
||||
//iconId = Icons.GetIcon("window-closed-variant");
|
||||
iconColor = GetIconColor(pageItem, true, useColors);
|
||||
var windowState = "closed"
|
||||
var windowState = findLocale("window","closed");
|
||||
}
|
||||
RegisterEntityWatcher(pageItem.id + ".ACTUAL");
|
||||
}
|
||||
@@ -1282,11 +1302,11 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
if (getState(pageItem.id + ".ACTUAL").val) {
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon("lock");
|
||||
iconColor = GetIconColor(pageItem, true, useColors);
|
||||
var lockState = "UNLOCK"
|
||||
var lockState = findLocale("lock","UNLOCK")
|
||||
} else {
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon("lock-open-variant");
|
||||
iconColor = GetIconColor(pageItem, false, useColors);
|
||||
var lockState = "LOCK"
|
||||
var lockState = findLocale("lock","LOCK")
|
||||
}
|
||||
lockState = pageItem.buttonText !== undefined ? pageItem.buttonText : lockState;
|
||||
RegisterEntityWatcher(pageItem.id + ".ACTUAL");
|
||||
@@ -1355,6 +1375,20 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
return "~delete~~~~~"
|
||||
}
|
||||
|
||||
function findLocale(controlsObject: string, controlsState: string) : string {
|
||||
var locale = config.locale;
|
||||
var strJson = getState(NSPanel_Path + 'NSPanel_locales_json').val;
|
||||
var obj = JSON.parse(strJson);
|
||||
var strLocale = obj[controlsObject][controlsState][locale];
|
||||
|
||||
if (strLocale != undefined) {
|
||||
return strLocale;
|
||||
} else {
|
||||
return controlsState;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function GetIconColor(pageItem: PageItem, value: (boolean | number), useColors: boolean): number {
|
||||
// dimmer
|
||||
if ((pageItem.useColor || useColors) && pageItem.interpolateColor && typeof (value) === "number") {
|
||||
@@ -1380,16 +1414,16 @@ function GetIconColor(pageItem: PageItem, value: (boolean | number), useColors:
|
||||
}
|
||||
|
||||
function RegisterEntityWatcher(id: string): void {
|
||||
if (subscriptions.hasOwnProperty(id) || activePage.subPage ) {
|
||||
if (subscriptions.hasOwnProperty(id)) {
|
||||
return;
|
||||
}
|
||||
subscriptions[id] = (on({ id: id, change: 'any' }, function (data) {
|
||||
if(pageId >= 0)
|
||||
SendToPanel({ payload: GeneratePageElements(config.pages[pageId]) });
|
||||
if(pageId == -1 && config.button1Page != undefined)
|
||||
SendToPanel({ payload: GeneratePageElements(config.button1Page) });
|
||||
if(pageId == -2 && config.button2Page != undefined)
|
||||
SendToPanel({ payload: GeneratePageElements(config.button2Page) });
|
||||
if(activePage!=undefined)
|
||||
SendToPanel({ payload: GeneratePageElements(activePage) });
|
||||
}))
|
||||
}
|
||||
|
||||
@@ -1621,24 +1655,26 @@ function GenerateThermoPage(page: PageThermo): Payload[] {
|
||||
|
||||
|
||||
out_msgs.push({ payload: "entityUpd~"
|
||||
+ name + "~" //Heading
|
||||
+ GetNavigationString(pageId) + "~" //Page Navigation
|
||||
+ id + "~" //internalNameEntiy
|
||||
+ currentTemp + "°C" + "~" //Ist-Temperatur (String)
|
||||
+ destTemp + "~" //Soll-Temperatur (numerisch ohne Komma)
|
||||
+ statusStr + "~" //Mode
|
||||
+ minTemp + "~" //Thermostat Min-Temperatur
|
||||
+ maxTemp + "~" //Thermostat Max-Temperatur
|
||||
+ stepTemp + "~" //Schritte für Soll (5°C)
|
||||
+ icon_res //Icons Status
|
||||
+ "Aktuell" + "~" //Bezeicher vor Aktueller Raumtemperatur
|
||||
+ "Status" + "~" //Bezeicner vor
|
||||
+ "HVAC" + "~" //Bezeichner vor HVAC
|
||||
+ "°C"}) //Bezeichner Hinter Solltemp
|
||||
+ name + "~" //Heading
|
||||
+ GetNavigationString(pageId) + "~" //Page Navigation
|
||||
+ id + "~" //internalNameEntiy
|
||||
+ currentTemp + config.temperatureUnit + "~" //Ist-Temperatur (String)
|
||||
+ destTemp + "~" //Soll-Temperatur (numerisch ohne Komma)
|
||||
+ statusStr + "~" //Mode
|
||||
+ minTemp + "~" //Thermostat Min-Temperatur
|
||||
+ maxTemp + "~" //Thermostat Max-Temperatur
|
||||
+ stepTemp + "~" //Schritte für Soll (5°C)
|
||||
+ icon_res //Icons Status
|
||||
+ findLocale("thermostat","Currently") + "~" //Bezeicher vor Aktueller Raumtemperatur
|
||||
+ findLocale("thermostat","State") + "~" //Bezeicner vor
|
||||
+ findLocale("thermostat","Action") + "~" //Bezeichner vor HVAC
|
||||
+ config.temperatureUnit + "~" //Bezeichner hinter Solltemp
|
||||
+ "" + "~" //iconTemperature
|
||||
+ "" //dstTempTwoTempMode
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (Debug) console.log(out_msgs);
|
||||
return out_msgs
|
||||
}
|
||||
@@ -1931,7 +1967,7 @@ function HandleButtonEvent(words): void {
|
||||
}
|
||||
} else {
|
||||
if (Debug) console.log("bExit: " + words[4] + " - "+ pageId)
|
||||
GeneratePage(config.pages[pageId]);
|
||||
GeneratePage(activePage);
|
||||
}
|
||||
break;
|
||||
case "notifyAction":
|
||||
@@ -2276,9 +2312,9 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
|
||||
+ "disable" + "~" //sliderBrightnessPos
|
||||
+ "disable" + "~" //sliderColorTempPos
|
||||
+ "disable" + "~" //colorMode
|
||||
+ "Color" + "~" //Color-Bezeichnung
|
||||
+ "Temperature" + "~" //Temperature-Bezeichnung
|
||||
+ "Brightness" }) //Brightness-Bezeichnung
|
||||
+ findLocale("lights","Color") + "~" //Color-Bezeichnung
|
||||
+ findLocale("lights","Temperature") + "~" //Temperature-Bezeichnung
|
||||
+ findLocale("lights","Brightness")}); //Brightness-Bezeichnung
|
||||
}
|
||||
|
||||
//Dimmer
|
||||
@@ -2323,9 +2359,9 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
|
||||
+ brightness + "~" //sliderBrightnessPos
|
||||
+ "disable" + "~" //sliderColorTempPos
|
||||
+ "disable" + "~" //colorMod
|
||||
+ "Color" + "~" //Color-Bezeichnung
|
||||
+ "Temperature" + "~" //Temperature-Bezeichnung
|
||||
+ "Brightness" }) //Brightness-Bezeichnung
|
||||
+ findLocale("lights","Color") + "~" //Color-Bezeichnung
|
||||
+ findLocale("lights","Temperature") + "~" //Temperature-Bezeichnung
|
||||
+ findLocale("lights","Brightness")}); //Brightness-Bezeichnung
|
||||
|
||||
}
|
||||
|
||||
@@ -2387,9 +2423,9 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
|
||||
+ brightness + "~" //sliderBrightnessPos
|
||||
+ colorTemp + "~" //sliderColorTempPos
|
||||
+ colorMode + "~" //colorMode (if hue-alias without hue-datapoint, then disable)
|
||||
+ "Color" + "~" //Color-Bezeichnung
|
||||
+ "Temperature" + "~" //Temperature-Bezeichnung
|
||||
+ "Brightness" }) //Brightness-Bezeichnung
|
||||
+ findLocale("lights","Color") + "~" //Color-Bezeichnung
|
||||
+ findLocale("lights","Temperature") + "~" //Temperature-Bezeichnung
|
||||
+ findLocale("lights","Brightness")}); //Brightness-Bezeichnung
|
||||
}
|
||||
|
||||
//RGB-Licht
|
||||
@@ -2449,9 +2485,9 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
|
||||
+ brightness + "~" //sliderBrightnessPos
|
||||
+ colorTemp + "~" //sliderColorTempPos
|
||||
+ colorMode + "~" //colorMode (if hue-alias without hue-datapoint, then disable)
|
||||
+ "Color" + "~" //Color-Bezeichnung
|
||||
+ "Temperature" + "~" //Temperature-Bezeichnung
|
||||
+ "Brightness" }) //Brightness-Bezeichnung
|
||||
+ findLocale("lights","Color") + "~" //Color-Bezeichnung
|
||||
+ findLocale("lights","Temperature") + "~" //Temperature-Bezeichnung
|
||||
+ findLocale("lights","Brightness")}); //Brightness-Bezeichnung
|
||||
}
|
||||
|
||||
//RGB-Licht-einzeln (HEX)
|
||||
@@ -2515,9 +2551,9 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
|
||||
+ brightness + "~" //sliderBrightnessPos
|
||||
+ colorTemp + "~" //sliderColorTempPos
|
||||
+ colorMode + "~" //colorMode (if hue-alias without hue-datapoint, then disable)
|
||||
+ "Color" + "~" //Color-Bezeichnung
|
||||
+ "Temperature" + "~" //Temperature-Bezeichnung
|
||||
+ "Brightness" }) //Brightness-Bezeichnung)
|
||||
+ findLocale("lights","Color") + "~" //Color-Bezeichnung
|
||||
+ findLocale("lights","Temperature") + "~" //Temperature-Bezeichnung
|
||||
+ findLocale("lights","Brightness")}); //Brightness-Bezeichnung
|
||||
}
|
||||
|
||||
//Farbtemperatur
|
||||
@@ -2562,16 +2598,16 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
|
||||
console.warn("Alias-Datenpunkt: " + id + ".TEMPERATURE could not be read");
|
||||
}
|
||||
|
||||
out_msgs.push({ payload: "entityUpdateDetail" + "~" //entityUpdateDetail
|
||||
+ icon + "~" //iconId
|
||||
+ iconColor + "~" //iconColor
|
||||
+ switchVal + "~" //buttonState
|
||||
+ brightness + "~" //sliderBrightnessPos
|
||||
+ colorTemp + "~" //sliderColorTempPos
|
||||
+ colorMode + "~" //colorMode (if hue-alias without hue-datapoint, then disable)
|
||||
+ "Color" + "~" //Color-Bezeichnung
|
||||
+ "Temperature" + "~" //Temperature-Bezeichnung
|
||||
+ "Brightness" }) //Brightness-Bezeichnung
|
||||
out_msgs.push({ payload: "entityUpdateDetail" + "~" //entityUpdateDetail
|
||||
+ icon + "~" //iconId
|
||||
+ iconColor + "~" //iconColor
|
||||
+ switchVal + "~" //buttonState
|
||||
+ brightness + "~" //sliderBrightnessPos
|
||||
+ colorTemp + "~" //sliderColorTempPos
|
||||
+ colorMode + "~" //colorMode (if hue-alias without hue-datapoint, then disable)
|
||||
+ findLocale("lights","Color") + "~" //Color-Bezeichnung
|
||||
+ findLocale("lights","Temperature") + "~" //Temperature-Bezeichnung
|
||||
+ findLocale("lights","Brightness")}); //Brightness-Bezeichnung
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2585,10 +2621,10 @@ function GenerateDetailPage(type: string, pageItem: PageItem): Payload[] {
|
||||
val = getState(id + ".SET").val;
|
||||
RegisterDetailEntityWatcher(id + ".SET", pageItem, type);
|
||||
}
|
||||
out_msgs.push({ payload: "entityUpdateDetail" + "~" //entityUpdateDetail
|
||||
+ val + "~" //Shutterposition
|
||||
out_msgs.push({ payload: "entityUpdateDetail" + "~" //entityUpdateDetail
|
||||
+ val + "~" //Shutterposition
|
||||
+ "" + "~"
|
||||
+ "Position"}) //Position-Bezeichnung
|
||||
+ findLocale("blinds","Position")}); //Position-Bezeichnung
|
||||
}
|
||||
}
|
||||
return out_msgs
|
||||
@@ -2630,7 +2666,7 @@ function HandleScreensaverUpdate(): void {
|
||||
let TempMax = getState("accuweather.0.Summary.TempMax_d" + i).val;
|
||||
let DayOfWeek = getState("accuweather.0.Summary.DayOfWeek_d" + i).val;
|
||||
let WeatherIcon = GetAccuWeatherIcon(getState("accuweather.0.Summary.WeatherIcon_d" + i).val);
|
||||
payloadString += DayOfWeek + "~" + Icons.GetIcon(WeatherIcon) + "~" + TempMax + " °C~";
|
||||
payloadString += DayOfWeek + "~" + Icons.GetIcon(WeatherIcon) + "~" + TempMax + " " + config.temperatureUnit + "~";
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
143
ioBroker/ioBroker_NSPanel_locales.json
Normal file
143
ioBroker/ioBroker_NSPanel_locales.json
Normal file
@@ -0,0 +1,143 @@
|
||||
{
|
||||
"lights":{
|
||||
"Brightness":{
|
||||
"en-EN":"Brightness",
|
||||
"de-DE":"Helligkeit",
|
||||
"nl-NL":"Helderheid",
|
||||
"da-DK":"Lysstyrke",
|
||||
"es-ES":"Brillo",
|
||||
"fr-FR":"Luminosité",
|
||||
"it-IT":"Luminosità",
|
||||
"ru-RU":"Яркость"
|
||||
},
|
||||
"Color":{
|
||||
"en-EN":"Color",
|
||||
"de-DE":"Farbe",
|
||||
"nl-NL":"Kleur",
|
||||
"da-DK":"Farve",
|
||||
"es-ES":"Colore",
|
||||
"fr-FR":"Couleur",
|
||||
"ru-RU":"цвет"
|
||||
},
|
||||
"Temperature":{
|
||||
"en-EN":"Temperature",
|
||||
"de-DE":"Temperatur",
|
||||
"nl-NL":"Temperatuur",
|
||||
"da-DK":"Temperatur",
|
||||
"es-ES":"temperatura",
|
||||
"fr-FR":"Température",
|
||||
"it-IT":"Temperatura",
|
||||
"ru-RU":"температура"
|
||||
}
|
||||
},
|
||||
"window":{
|
||||
"closed":{
|
||||
"en-EN":"closed",
|
||||
"de-DE":"geschlossen",
|
||||
"nl-NL":"gesloten",
|
||||
"da-DK":"lukket",
|
||||
"es-ES":"cerrada",
|
||||
"fr-FR":"fermée ",
|
||||
"it-IT":"chiusa",
|
||||
"ru-RU":"закрыто"
|
||||
},
|
||||
"opened":{
|
||||
"en-EN":"opened",
|
||||
"de-DE":"offen",
|
||||
"nl-NL":"geopend",
|
||||
"da-DK":"åbnede",
|
||||
"es-ES":"abierta",
|
||||
"fr-FR":"ouverte ",
|
||||
"it-IT":"aperta",
|
||||
"ru-RU":"открыто"
|
||||
}
|
||||
},
|
||||
"door":{
|
||||
"closed":{
|
||||
"en-EN":"closed",
|
||||
"de-DE":"geschlossen",
|
||||
"nl-NL":"gesloten",
|
||||
"da-DK":"lukket",
|
||||
"es-ES":"cerrada",
|
||||
"fr-FR":"fermée ",
|
||||
"it-IT":"chiusa",
|
||||
"ru-RU":"закрыто"
|
||||
},
|
||||
"opened":{
|
||||
"en-EN":"opened",
|
||||
"de-DE":"offen",
|
||||
"nl-NL":"geopend",
|
||||
"da-DK":"åbnede",
|
||||
"es-ES":"abierta",
|
||||
"fr-FR":"ouverte ",
|
||||
"it-IT":"aperta",
|
||||
"ru-RU":"открыто"
|
||||
}
|
||||
},
|
||||
"lock":{
|
||||
"LOCK":{
|
||||
"en-EN":"lock",
|
||||
"de-DE":"schließen",
|
||||
"nl-NL":"stilgelegd",
|
||||
"da-DK":"låse",
|
||||
"es-ES":"cerrar",
|
||||
"fr-FR":"bloquer ",
|
||||
"it-IT":"serratura",
|
||||
"ru-RU":"замок"
|
||||
},
|
||||
"UNLOCK":{
|
||||
"en-EN":"unlock",
|
||||
"de-DE":"öffnen",
|
||||
"nl-NL":"openen",
|
||||
"da-DK":"at åbne",
|
||||
"es-ES":"abrir",
|
||||
"fr-FR":"ouvrir ",
|
||||
"it-IT":"aprire",
|
||||
"ru-RU":"открыть"
|
||||
}
|
||||
},
|
||||
"blinds":{
|
||||
"Position":{
|
||||
"en-EN":"Position",
|
||||
"de-DE":"Position",
|
||||
"nl-NL":"Positie",
|
||||
"da-DK":"Blindstilling",
|
||||
"es-ES":"Posición",
|
||||
"fr-FR":"Position ",
|
||||
"it-IT":"Posizione",
|
||||
"ru-RU":"Слепая"
|
||||
}
|
||||
},
|
||||
"thermostat":{
|
||||
"Currently":{
|
||||
"en-EN":"Currently",
|
||||
"de-DE":"Aktuell",
|
||||
"nl-NL":"momenteel",
|
||||
"da-DK":"i øjeblikket",
|
||||
"es-ES":"corrientemente",
|
||||
"fr-FR":"actuellement ",
|
||||
"it-IT":"attualmente",
|
||||
"ru-RU":"актуальный"
|
||||
},
|
||||
"State":{
|
||||
"en-EN":"State",
|
||||
"de-DE":"Status",
|
||||
"nl-NL":"toestand",
|
||||
"da-DK":"stat",
|
||||
"es-ES":"estado",
|
||||
"fr-FR":"statut ",
|
||||
"it-IT":"stato",
|
||||
"ru-RU":"статус"
|
||||
},
|
||||
"Action":{
|
||||
"en-EN":"Action",
|
||||
"de-DE":"Aktion",
|
||||
"nl-NL":"actie",
|
||||
"da-DK":"handling",
|
||||
"es-ES":"acción",
|
||||
"fr-FR":"action ",
|
||||
"it-IT":"azione",
|
||||
"ru-RU":"действие"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user