From a8fb5c6c764e7c330de0fc6c2b6ce9e122d06a8e Mon Sep 17 00:00:00 2001 From: Armilar <102996011+Armilar@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:43:11 +0200 Subject: [PATCH 1/6] Language File en-EN, de-DE, nl-NL, da-DK, es-ES, fr-FR, it-IT, ru-RU --- ioBroker/ioBroker_NSPanel_locales.json | 143 +++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 ioBroker/ioBroker_NSPanel_locales.json diff --git a/ioBroker/ioBroker_NSPanel_locales.json b/ioBroker/ioBroker_NSPanel_locales.json new file mode 100644 index 00000000..82269063 --- /dev/null +++ b/ioBroker/ioBroker_NSPanel_locales.json @@ -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":"действие" + } + } +} From cfaa1da87bd261c2c457b1429227ea1e1bc9939d Mon Sep 17 00:00:00 2001 From: joBr99 <29555657+joBr99@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:53:48 +0200 Subject: [PATCH 2/6] Update pages.py --- apps/nspanel-lovelace-ui/luibackend/pages.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/nspanel-lovelace-ui/luibackend/pages.py b/apps/nspanel-lovelace-ui/luibackend/pages.py index b4b7d218..18fabe71 100644 --- a/apps/nspanel-lovelace-ui/luibackend/pages.py +++ b/apps/nspanel-lovelace-ui/luibackend/pages.py @@ -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: From 5363acbf4c27debd302436a1347abe1eba2afbb8 Mon Sep 17 00:00:00 2001 From: Armilar <102996011+Armilar@users.noreply.github.com> Date: Thu, 16 Jun 2022 22:18:37 +0200 Subject: [PATCH 3/6] Use localString for time, date and multilingualism - Date/time in the screensaver based on localString (de-DE/en-EN/nl-NL/etc.) - Multilingual - config.locale (en-EN, de-DE, nl-NL, da-DK, es-ES, fr-FR, it-IT, ru-RU) --- ioBroker/NsPanelTs.ts | 201 ++++++++++++++++++++++++++---------------- 1 file changed, 127 insertions(+), 74 deletions(-) diff --git a/ioBroker/NsPanelTs.ts b/ioBroker/NsPanelTs.ts index 6af1f12c..947e401e 100644 --- a/ioBroker/NsPanelTs.ts +++ b/ioBroker/NsPanelTs.ts @@ -15,6 +15,8 @@ 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) Wenn Rule definiert, dann können die Hardware-Tasten ebenfalls für Seitensteuerung (dann nicht mehr als Releais) genutzt werden Tasmota Konsole: @@ -68,10 +70,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 +79,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 +90,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 }; @@ -379,7 +379,7 @@ var Service: PageEntities = "heading": "NSPanel Service", "useColor": true, "subPage": false, - "parent": Service, + "parent": Service, "items": [ { id: "alias.0.NSPanel_1.NSPanel_AutoUpdate", name: "Auto-Updates" ,icon: "update", offColor: MSRed, onColor: MSGreen}, { navigate: true, id: "NSPanel_Infos", icon: "information-outline", onColor: White, name: "NSPanel Infos"}, @@ -445,9 +445,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 +542,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; @@ -947,27 +961,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: _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: "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: "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: "time~" + _SendTime }); } function ScreensaverDimmode() { @@ -1216,12 +1235,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 +1301,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 +1374,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") { @@ -1621,25 +1654,45 @@ 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 + + "" + "~" + + "" + }); } +/*thermometer +entityUpd~ +heading~ +navigation~ +internalNameEntiy +currentTempcdestTemp +status +minTemp +maxTemp +stepTemp +[[~*iconId*~*activeColor*~*state*~*hvac_action*]] +tCurTempLbl +tStateLbl +tALbl +iconTemperature +dstTempTwoTempMode +*/ - - if (Debug) console.log(out_msgs); + //if (Debug) + console.log(out_msgs); return out_msgs } @@ -2276,9 +2329,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 +2376,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 +2440,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 +2502,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 +2568,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 +2615,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 +2638,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 +2683,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 { From 72a5cb8b0de00e3b9b02f77e7bb2cda15e81b6f2 Mon Sep 17 00:00:00 2001 From: Armilar <102996011+Armilar@users.noreply.github.com> Date: Thu, 16 Jun 2022 22:42:06 +0200 Subject: [PATCH 4/6] Bugfix by Grrzzz - Subpages - Issue #286 --- ioBroker/NsPanelTs.ts | 39 +++++++++++---------------------------- 1 file changed, 11 insertions(+), 28 deletions(-) diff --git a/ioBroker/NsPanelTs.ts b/ioBroker/NsPanelTs.ts index 947e401e..f6746f7a 100644 --- a/ioBroker/NsPanelTs.ts +++ b/ioBroker/NsPanelTs.ts @@ -17,6 +17,7 @@ ReleaseNotes: - 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: @@ -142,7 +143,7 @@ var weatherForecast = true; //true = WheatherForecast 5 Days --- false = Config //Alexa-Instanz var alexaInstanz = "alexa2.0" -var alexaDevice = "G0XXXXXXXXXXXXXX"; //Primär zu steuerndes Device oder Gruppe aus alexa2-Adapter (Seriennummer) +var alexaDevice = "G070RR1075220388"; //Primär zu steuerndes Device oder Gruppe aus alexa2-Adapter (Seriennummer) // Wenn alexaSpeakerList definiert, dann werden Einträge verwendet, sonst alle relevanten Devices aus Alexa-Instanz // Speakerwechsel funktioniert nicht bei Radio/TuneIn sonden bei Playlists @@ -898,7 +899,7 @@ function HandleMessage(typ: string, method: string, page: number, words: Array e.id === searching); + let pageItem = activePage.items.find(e => e.id === searching); if (pageItem !== undefined) { return pageItem; @@ -1413,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]) }); + subscriptions[id] = (on({ id: id, change: 'any' }, function (data) { 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) }); })) } @@ -1668,31 +1669,13 @@ function GenerateThermoPage(page: PageThermo): Payload[] { + findLocale("thermostat","State") + "~" //Bezeicner vor + findLocale("thermostat","Action") + "~" //Bezeichner vor HVAC + config.temperatureUnit + "~" //Bezeichner hinter Solltemp - + "" + "~" - + "" + + "" + "~" //iconTemperature + + "" //dstTempTwoTempMode }); } -/*thermometer -entityUpd~ -heading~ -navigation~ -internalNameEntiy -currentTempcdestTemp -status -minTemp -maxTemp -stepTemp -[[~*iconId*~*activeColor*~*state*~*hvac_action*]] -tCurTempLbl -tStateLbl -tALbl -iconTemperature -dstTempTwoTempMode -*/ - //if (Debug) - console.log(out_msgs); + if (Debug) console.log(out_msgs); return out_msgs } @@ -1984,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": From ac7dd6937763a50e921e5ddaf98d0b6bdba05b3c Mon Sep 17 00:00:00 2001 From: Armilar <102996011+Armilar@users.noreply.github.com> Date: Thu, 16 Jun 2022 22:43:28 +0200 Subject: [PATCH 5/6] Bugfix by Grrzzz - Subpages - Issue #286 --- ioBroker/NsPanelTs.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ioBroker/NsPanelTs.ts b/ioBroker/NsPanelTs.ts index f6746f7a..be4883fe 100644 --- a/ioBroker/NsPanelTs.ts +++ b/ioBroker/NsPanelTs.ts @@ -143,7 +143,7 @@ var weatherForecast = true; //true = WheatherForecast 5 Days --- false = Config //Alexa-Instanz var alexaInstanz = "alexa2.0" -var alexaDevice = "G070RR1075220388"; //Primär zu steuerndes Device oder Gruppe aus alexa2-Adapter (Seriennummer) +var alexaDevice = "G0XXXXXXXXXXXXXX"; //Primär zu steuerndes Device oder Gruppe aus alexa2-Adapter (Seriennummer) // Wenn alexaSpeakerList definiert, dann werden Einträge verwendet, sonst alle relevanten Devices aus Alexa-Instanz // Speakerwechsel funktioniert nicht bei Radio/TuneIn sonden bei Playlists From 40bb63e5cb9810f845fb0e7f8ecb31069be08a38 Mon Sep 17 00:00:00 2001 From: joBr99 <29555657+joBr99@users.noreply.github.com> Date: Thu, 16 Jun 2022 23:16:19 +0200 Subject: [PATCH 6/6] Update pages.py --- apps/nspanel-lovelace-ui/luibackend/pages.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/nspanel-lovelace-ui/luibackend/pages.py b/apps/nspanel-lovelace-ui/luibackend/pages.py index 18fabe71..b3efca38 100644 --- a/apps/nspanel-lovelace-ui/luibackend/pages.py +++ b/apps/nspanel-lovelace-ui/luibackend/pages.py @@ -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}"