NEWS
Sonoff NSPanel
-
firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C" }, secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "weather-pouring", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" }, thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "SoC", ScreensaverEntityUnitText: "%" }, fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" },Sehr seltsam, die gehen bei mir alle.
Hast du denn Fehlermeldungen im Log?@holgerwolf sagte in Sonoff NSPanel:
firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C" }, secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "weather-pouring", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" }, thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "SoC", ScreensaverEntityUnitText: "%" }, fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" },Sehr seltsam, die gehen bei mir alle.
Hast du denn Fehlermeldungen im Log?Die Darstellung der Objekte ist ja Rollen abh
ä
ngig. Welche Rollen sind bei dir diesen DP zugewiesen? Ich vermute dort das Problem.Die Logfiles (debug) geben nicht viel her.
18:28:08.485 info javascript.0 (20526) script.js.Prod.NSPanel.NsPanelTs_ts: pageType~cardEntities 18:28:08.485 info javascript.0 (20526) script.js.Prod.NSPanel.NsPanelTs_ts: entityUpd~Büro~0|1~light~alias.0.MyNSPanel.Steckdosen.KG-Buero~~62251~Drucker~0~shutter~alias.0.MyNSPanel.Rolladen.KG_Buero~~63142~Fenster~Screensaver erzeugt gar keine Logs.
-
@jobr99 sagte in Sonoff NSPanel:
Ich hab in meinem AppDaemon Backend ne Variable f
ü
r die aktuell zum Skript passende Version, also in etwa so:desired_display_firmware_version = 34 version = "v2.8.1" desired_display_firmware_url = f"http://nspanel.pky.eu/lovelace-ui/github/nspanel-{version}.tft"Wenn das Panel auf der startup seite ist, dann sendet es
event,startup,34,euin regelm
ä
ß
igen Abst
ä
nden, bis die Seite gewechselt wird.Ich
ü
berpr
ü
fe dann ob desired_display_firmware_version > version_aus_startup_eventund wenn das true ist, sto
ß
ich meine Funktion zum updaten an.F
ü
r den Berry Treiber mach ich es
ä
hnlich, nur da frage ich aktiv nach der Version mit GetDriverVersion.Wenn du mit dem autoupdate immer zur lui.tft updatest, hast du also die Gefahr, dass irgendwas kaputt ist, wenn du den link zu
http://nspanel.pky.eu/lui-release.tfttauschst hast du es schon mal etwas entsch
ä
rft, wenn du sicher sein willst, dass Skript und Firmware zusammenpassen w
ü
rd ich die URLs aus den Release Notes nehmen.(wenn ich irgendwo quatsch schreibe, dann weil ich mir das typeskript nicht genau genug angeschaut hab
)Nee, passt schon - obwohl ich es eigentlich genauso mache.
beim BerryDriver wird ein "GetDriverVersion" an das Panel gesendet. Die Antwort wird in einen Datenpunkt geschrieben
function get_current_berry_driver_version() { require("request")((['http://',get_current_tasmota_ip_address(),'/cm?cmnd=GetDriverVersion'].join('')), async function (error, response, result) { createState(NSPanel_Path + "Berry_Driver.currentVersion"); setIfExists(NSPanel_Path + 'Berry_Driver.currentVersion', getAttr(result, 'nlui_driver_version')); }); }Mit der Firmwareversion ist es genauso - also auch Startup ausl
ö
sen und die Version einsammelnsetState(config.panelSendTopic, 'pageType~pageStartup');und Daten einsammeln
ü
ber:on({ id: config.panelRecvTopic }, function (obj) { if (obj.state.val.startsWith('\{"CustomRecv":')) { var json = JSON.parse(obj.state.val); var split = json.CustomRecv.split(","); if (split[0] == "event" && split[1] == "startup") { createState(NSPanel_Path + 'Display_Firmware.currentVersion',{ type:'string'}); createState(NSPanel_Path + 'NSPanel_Version',{ type:'string'}); setIfExists(NSPanel_Path + 'Display_Firmware.currentVersion',split[2]); setIfExists(NSPanel_Path + 'NSPanel_Version',split[3]); } } });Die Onlineversionsnummer (Tasmota, Berry, TFT) hole ich direkt bei Github ab.
Dann wird asynchron ein Vergleich durchgef
ü
hrt und bei bedarf ein Update gemacht...Aber die http://nspanel.pky.eu/lui-release.tft wird noch ersetzt - passt. Und aus den Release Notes nehme ich sie auch raus.
W
ä
re sch
ö
n, wenn nicht ein Startup durchgef
ü
hrt werden m
ü
sste, denn das versetzt das Panel beim Abfragen der aktuellen Version immer f
ü
r einen kurzen Moment in den "Waiting for Connection".P.S.: Die Versionsabfrage aus dem Github funktioniert eigentlich
ä
hnlich:
Die Variable aus deinem Script wird vom GitHub extrahiert:function check_online_display_firmware() { exec('curl https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py', function (error, result, stderr){ if (result) { let desired_display_firmware_version = result.substring((result.indexOf("desired_display_firmware_version =") + 34), result.indexOf("desired_display_firmware_version =") + 38).replace(/\s+/g, ''); createState(NSPanel_Path + "Display_Firmware.onlineVersion"); setIfExists(NSPanel_Path + 'Display_Firmware.onlineVersion', desired_display_firmware_version); } }); }Und dann f
ä
llt es dir wie Schuppen aus den Augen
Die Version ins Script schreiben. Jo - warum einfach, wenn's auch kompliziert geht 
W
ä
re sch
ö
n, wenn nicht ein Startup durchgef
ü
hrt werden m
ü
sste, denn das versetzt das Panel beim Abfragen der aktuellen Version immer f
ü
r einen kurzen Moment in den "Waiting for Connection".Die Idee war, dass vor dem aktualisieren ja sowieso das TypeSkript/AppDaemon Skript aktualisiert werden muss und da ist es nicht schlecht, wenn man das Panel wieder in einem definierten Zustand hat. Deshalb hab ich auch die Versionsnummer im Skript, die Version vom Skript passt ja immer zu einer Firmware Version. Immer die aktuelle Firmware passt ggf. nicht zum Skript.
-
W
ä
re sch
ö
n, wenn nicht ein Startup durchgef
ü
hrt werden m
ü
sste, denn das versetzt das Panel beim Abfragen der aktuellen Version immer f
ü
r einen kurzen Moment in den "Waiting for Connection".Die Idee war, dass vor dem aktualisieren ja sowieso das TypeSkript/AppDaemon Skript aktualisiert werden muss und da ist es nicht schlecht, wenn man das Panel wieder in einem definierten Zustand hat. Deshalb hab ich auch die Versionsnummer im Skript, die Version vom Skript passt ja immer zu einer Firmware Version. Immer die aktuelle Firmware passt ggf. nicht zum Skript.
@jobr99 sagte in Sonoff NSPanel:
W
ä
re sch
ö
n, wenn nicht ein Startup durchgef
ü
hrt werden m
ü
sste, denn das versetzt das Panel beim Abfragen der aktuellen Version immer f
ü
r einen kurzen Moment in den "Waiting for Connection".Die Idee war, dass vor dem aktualisieren ja sowieso das TypeSkript/AppDaemon Skript aktualisiert werden muss und da ist es nicht schlecht, wenn man das Panel wieder in einem definierten Zustand hat. Deshalb hab ich auch die Versionsnummer im Skript, die Version vom Skript passt ja immer zu einer Firmware Version. Immer die aktuelle Firmware passt ggf. nicht zum Skript.
siehe oben - bin erst beim Einkaufen drauf gekommen, was du mir wirklich sagen willst
. Ist absolut richtig -
@holgerwolf sagte in Sonoff NSPanel:
firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C" }, secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "weather-pouring", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" }, thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "SoC", ScreensaverEntityUnitText: "%" }, fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" },Sehr seltsam, die gehen bei mir alle.
Hast du denn Fehlermeldungen im Log?Die Darstellung der Objekte ist ja Rollen abh
ä
ngig. Welche Rollen sind bei dir diesen DP zugewiesen? Ich vermute dort das Problem.Die Logfiles (debug) geben nicht viel her.
18:28:08.485 info javascript.0 (20526) script.js.Prod.NSPanel.NsPanelTs_ts: pageType~cardEntities 18:28:08.485 info javascript.0 (20526) script.js.Prod.NSPanel.NsPanelTs_ts: entityUpd~Büro~0|1~light~alias.0.MyNSPanel.Steckdosen.KG-Buero~~62251~Drucker~0~shutter~alias.0.MyNSPanel.Rolladen.KG_Buero~~63142~Fenster~Screensaver erzeugt gar keine Logs.
@a200 Das ist einfach nur ein Datenpunkt. Und solange da Daten drin sind hat er die Daten anzuzeigen.
Ü
brigens funktioniert das schon seit Monaten perfekt... hab es grad mal umgestellt - l
ä
uftif (config.firstScreensaverEntity !== null && config.firstScreensaverEntity.ScreensaverEntity != null && existsState(config.firstScreensaverEntity.ScreensaverEntity)) { updateArray.push(config.firstScreensaverEntity.ScreensaverEntity) }Da wird also folgendes abgefragt:
-Ist der wenn der Inhalt der Entit
ä
ten ungleich "null" ist und das Objekt existiert - dann zeige es an.Somit kommt mindestens eine Bedingung falsch zur
ü
ck.@a200 sagte in Sonoff NSPanel:
@holgerwolf sagte in Sonoff NSPanel:
firstScreensaverEntity: { ScreensaverEntity: "zigbee.0.00158d0002c77840.temperature", ScreensaverEntityIcon: "thermometer", ScreensaverEntityText: "Horreo", ScreensaverEntityUnitText: "°C" }, secondScreensaverEntity: { ScreensaverEntity: "accuweather.0.Daily.Day1.Day.RainProbability", ScreensaverEntityIcon: "weather-pouring", ScreensaverEntityText: "Regen", ScreensaverEntityUnitText: "%" }, thirdScreensaverEntity: { ScreensaverEntity: "mqtt.0.openWB.lp.1.%Soc", ScreensaverEntityIcon: "car-electric", ScreensaverEntityText: "SoC", ScreensaverEntityUnitText: "%" }, fourthScreensaverEntity: { ScreensaverEntity: "javascript.0.Photovoltaik.Leistung_DC_komplett", ScreensaverEntityIcon: "solar-power", ScreensaverEntityText: "PV", ScreensaverEntityUnitText: "W" },Sehr seltsam, die gehen bei mir alle.
Hast du denn Fehlermeldungen im Log?Die Darstellung der Objekte ist ja Rollen abh
ä
ngig. Welche Rollen sind bei dir diesen DP zugewiesen? Ich vermute dort das Problem.Die Logfiles (debug) geben nicht viel her.
18:28:08.485 info javascript.0 (20526) script.js.Prod.NSPanel.NsPanelTs_ts: pageType~cardEntities 18:28:08.485 info javascript.0 (20526) script.js.Prod.NSPanel.NsPanelTs_ts: entityUpd~Büro~0|1~light~alias.0.MyNSPanel.Steckdosen.KG-Buero~~62251~Drucker~0~shutter~alias.0.MyNSPanel.Rolladen.KG_Buero~~63142~Fenster~Screensaver erzeugt gar keine Logs.
Warum machst du nicht einfach ein log rein?
if (config.firstScreensaverEntity !== null && config.firstScreensaverEntity.ScreensaverEntity != null && existsState(config.firstScreensaverEntity.ScreensaverEntity)) { updateArray.push(config.firstScreensaverEntity.ScreensaverEntity) console.log(updateArray[0]); }liefert bei mir
else { //In Config definierte Zustände wenn weatherForecast = false payloadString += GetScreenSaverEntityString(config.firstScreensaverEntity); console.log(payloadString); payloadString += GetScreenSaverEntityString(config.secondScreensaverEntity); payloadString += GetScreenSaverEntityString(config.thirdScreensaverEntity); payloadString += GetScreenSaverEntityString(config.fourthScreensaverEntity); }
weatherUpdate~
~21.2
°
C~Luft~
~45 %~ -
@jobr99 sagte in Sonoff NSPanel:
W
ä
re sch
ö
n, wenn nicht ein Startup durchgef
ü
hrt werden m
ü
sste, denn das versetzt das Panel beim Abfragen der aktuellen Version immer f
ü
r einen kurzen Moment in den "Waiting for Connection".Die Idee war, dass vor dem aktualisieren ja sowieso das TypeSkript/AppDaemon Skript aktualisiert werden muss und da ist es nicht schlecht, wenn man das Panel wieder in einem definierten Zustand hat. Deshalb hab ich auch die Versionsnummer im Skript, die Version vom Skript passt ja immer zu einer Firmware Version. Immer die aktuelle Firmware passt ggf. nicht zum Skript.
siehe oben - bin erst beim Einkaufen drauf gekommen, was du mir wirklich sagen willst
. Ist absolut richtig@armilar @holgerwolf Ich glaube ich habe die Stelle gefunden.
if aus der Zeile 2 wird hier nie true.
Ich nutze kein "weatherEntity" aber dann ist entweder weatherEntity = null oder der DP ist nicht vorhanden. Damit wird der unterer Teil des Screensavers nicht eingeblendet. Also muss ich weatherEntity definieren! Und wenn ich dort einen Temp-DP eingebe, dann funktioniert es auch, auch wenn das Icon aus "GetAccuWeatherIcon" nat
ü
rlich nicht gefunden wird. Also wenigstens die Zwei DP f
ü
r Temp + Wetter-Icon m
ü
ssen gesetzt werden. Dann ist wieder alles gut. Danke!function HandleScreensaverUpdate(): void { if (screensaverEnabled && config.weatherEntity != null && existsObject(config.weatherEntity)) { var icon = getState(config.weatherEntity + ".ICON").val; let temperature: string = existsState(config.weatherEntity + ".ACTUAL") ? getState(config.weatherEntity + ".ACTUAL").val : existsState(config.weatherEntity + ".TEMP") ? getState(config.weatherEntity + ".TEMP").val : "null"; let payloadString = "weatherUpdate~" + Icons.GetIcon(GetAccuWeatherIcon(parseInt(icon))) + "~" + temperature + " " + config.temperatureUnit + "~" /*-------------------------------------------------------------------------------------------------------------------------------------*/ if (weatherForecast == true) { // Accu-Weather Forecast Tag 2 - Tag 5 -- Wenn weatherForecast = true for (let i = 2; i < 6; i++) { 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~"; } } else { //In Config definierte Zustände wenn weatherForecast = false payloadString += GetScreenSaverEntityString(config.firstScreensaverEntity); payloadString += GetScreenSaverEntityString(config.secondScreensaverEntity); payloadString += GetScreenSaverEntityString(config.thirdScreensaverEntity); payloadString += GetScreenSaverEntityString(config.fourthScreensaverEntity); } /*-------------------------------------------------------------------------------------------------------------------------------------*/ SendToPanel(<Payload>{ payload: payloadString }); } } -
Guten Morgen, bin die Anleitung von Armilar durchgegangen, hat aber nichts gen
ü
tzt,
erst als ich den neuen Ts-Script verwendet habe hats geklappt.
Ein paar Baustellen sind noch offen, aber darum werde ich mich k
ü
mmer, wenn die Arbeitswoche vorbei ist.
Danke nochmals, und macht weiter so.
Hier wird noch RICHTIG geholfen.
LG wheinz44 -
ich komm leider einfach nicht weiter und hoffe auf Hilfe
Folgende Fehlermeldung spuckt er aus:
javascript.0 (405) script.js.common.NS_Panel compile failed: at script.js.common.NS_Panel:5918Kann mir einer erkl
ä
ren, was ich falsch mache@stwer2203 Leider l
ä
sst sich das nicht pauschal beantworten. Aber lass uns pr
ü
fen:- Hast du die Datei icon_mapping.ts in global Verzeichnis abgelegt und aktiviert? (script.js.global.icon_mapping_ts)
- Ich pers
ö
nlich nutze schiebe nichts ins common, sondern habe meine Unterverzeichnisse. Das hilft bei der Orientierung. Also habe ich die Unterverzeichnisse Prod und NSPanel. Dort habe ich die Datei NsPanelTs.ts abgelegt: Es sieht dann so aus: script.js.Prod.NSPanel.NsPanelTs_ts - Der Inhalt der NsPanelTs.ts kommt aus: https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
Ich w
ü
rde die Dateinamen genauso
ü
bernehmen. Was bei dir nicht der Fall ist.Check das mal aus und wir k
ö
nnen weiter schauen. Mir wurde hier auch viel geholfen, also keine Sorge, dich kriegen wir auch "verarztet". 
-
@stwer2203 Leider l
ä
sst sich das nicht pauschal beantworten. Aber lass uns pr
ü
fen:- Hast du die Datei icon_mapping.ts in global Verzeichnis abgelegt und aktiviert? (script.js.global.icon_mapping_ts)
- Ich pers
ö
nlich nutze schiebe nichts ins common, sondern habe meine Unterverzeichnisse. Das hilft bei der Orientierung. Also habe ich die Unterverzeichnisse Prod und NSPanel. Dort habe ich die Datei NsPanelTs.ts abgelegt: Es sieht dann so aus: script.js.Prod.NSPanel.NsPanelTs_ts - Der Inhalt der NsPanelTs.ts kommt aus: https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
Ich w
ü
rde die Dateinamen genauso
ü
bernehmen. Was bei dir nicht der Fall ist.Check das mal aus und wir k
ö
nnen weiter schauen. Mir wurde hier auch viel geholfen, also keine Sorge, dich kriegen wir auch "verarztet". 
Hast du die Datei icon_mapping.ts in global Verzeichnis abgelegt und aktiviert? (script.js.global.icon_mapping_ts).
ja, war und ist das Script
Ich pers
ö
nlich nutze schiebe nichts ins common, sondern habe meine Unterverzeichnisse. Das hilft bei der Orientierung. Also habe ich die Unterverzeichnisse Prod und NSPanel. Dort habe ich die Datei NsPanelTs.ts abgelegt: Es sieht dann so aus: script.js.Prod.NSPanel.NsPanelTs_tsich habe im common meine Unterverzeichnisse, aber habe es jetzt genauso wie du
Der Inhalt der NsPanelTs.ts kommt aus: https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts.
das war auch und die mqtt Pfade angepasst
weiterhin bleibt:
13:45:54.626 info javascript.0 (3155) Stop script script.js.Prod.NSPanel.NsPanelTs 13:45:55.037 info javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs: compiling TypeScript source... 13:45:58.202 info javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs: TypeScript compilation successful 13:45:58.225 error javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs compile failed: at script.js.Prod.NSPanel.NsPanelTs:782 -
Hast du die Datei icon_mapping.ts in global Verzeichnis abgelegt und aktiviert? (script.js.global.icon_mapping_ts).
ja, war und ist das Script
Ich pers
ö
nlich nutze schiebe nichts ins common, sondern habe meine Unterverzeichnisse. Das hilft bei der Orientierung. Also habe ich die Unterverzeichnisse Prod und NSPanel. Dort habe ich die Datei NsPanelTs.ts abgelegt: Es sieht dann so aus: script.js.Prod.NSPanel.NsPanelTs_tsich habe im common meine Unterverzeichnisse, aber habe es jetzt genauso wie du
Der Inhalt der NsPanelTs.ts kommt aus: https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts.
das war auch und die mqtt Pfade angepasst
weiterhin bleibt:
13:45:54.626 info javascript.0 (3155) Stop script script.js.Prod.NSPanel.NsPanelTs 13:45:55.037 info javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs: compiling TypeScript source... 13:45:58.202 info javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs: TypeScript compilation successful 13:45:58.225 error javascript.0 (3155) script.js.Prod.NSPanel.NsPanelTs compile failed: at script.js.Prod.NSPanel.NsPanelTs:782- jetzt sehe ich noch einen Unterschied. Das Sktipt hat eine Endung .ts bei dir nicht.
- Die Zeilennummer bei der Fehlermeldung ist anders.
- Hast du den Bereich angepasst?:
export const config: Config = { panelRecvTopic: "mqtt.1.SmartHome.nspanel_C829B4.tele.RESULT", //anpassen panelSendTopic: "mqtt.1.SmartHome.nspanel_C829B4.cmnd.CustomSend", //anpassen -
- jetzt sehe ich noch einen Unterschied. Das Sktipt hat eine Endung .ts bei dir nicht.
- Die Zeilennummer bei der Fehlermeldung ist anders.
- Hast du den Bereich angepasst?:
export const config: Config = { panelRecvTopic: "mqtt.1.SmartHome.nspanel_C829B4.tele.RESULT", //anpassen panelSendTopic: "mqtt.1.SmartHome.nspanel_C829B4.cmnd.CustomSend", //anpassen@a200 sagte in Sonoff NSPanel:
- jetzt sehe ich noch einen Unterschied. Das Sktipt hat eine Endung .ts bei dir nicht.
- Die Zeilennummer bei der Fehlermeldung ist anders.
- Hast du den Bereich angepasst?:
export const config: Config = { panelRecvTopic: "mqtt.1.SmartHome.nspanel_C829B4.tele.RESULT", //anpassen panelSendTopic: "mqtt.1.SmartHome.nspanel_C829B4.cmnd.CustomSend", //anpassenDer Dateiname ist v
ö
llig egal - kannst das Skript hinlegen wo du willst und auch Schneewittchen nennen.Wenn es einen "compile failed" gibt, dann steh in der Regel auch etwas mehr im Protokoll und an irgendeiner Stelle im Code ist es seitlich rot. Ich br
ä
uchte diese Informationen ma kurz 
-
@a200 sagte in Sonoff NSPanel:
- jetzt sehe ich noch einen Unterschied. Das Sktipt hat eine Endung .ts bei dir nicht.
- Die Zeilennummer bei der Fehlermeldung ist anders.
- Hast du den Bereich angepasst?:
export const config: Config = { panelRecvTopic: "mqtt.1.SmartHome.nspanel_C829B4.tele.RESULT", //anpassen panelSendTopic: "mqtt.1.SmartHome.nspanel_C829B4.cmnd.CustomSend", //anpassenDer Dateiname ist v
ö
llig egal - kannst das Skript hinlegen wo du willst und auch Schneewittchen nennen.Wenn es einen "compile failed" gibt, dann steh in der Regel auch etwas mehr im Protokoll und an irgendeiner Stelle im Code ist es seitlich rot. Ich br
ä
uchte diese Informationen ma kurz 
Ich habe auf Github eine neuere Version des TypeScript abgelegt:
https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
Die Version sollte jetzt alle Features unterst
ü
tzen, die auch in der openHAB-Version verf
ü
gbar sind.Bugfixes und Erweiterungen seit letzter Version:
- BugFix: Automatischer Dimmode versetzt NSPanel im Normalbetrieb in Dimmodus ohne Screensaver
- Fix: Auto-Update in definiertem Zustand
- Neu: manuelle Updates (Werden
ü
ber Popup eingeblendet, falls vorhanden)
- Neu cardAlarm (Anleitung/Emulator zum Testen folgt)
- Neu popupNotify (Nachricht
ü
ber separates Popup Fenster im Panel - Anleitung/Emulator zum Testen folgt)Wie immer die Variablen ber
ü
cksichtigen.Ab jetzt gibt es zun
ä
chst (und falls erforderlich) nur noch Bugfixes und weitere Aliase.Viel Spa
ß
beim ausprobieren. -
Ich habe auf Github eine neuere Version des TypeScript abgelegt:
https://github.com/Armilar/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
Die Version sollte jetzt alle Features unterst
ü
tzen, die auch in der openHAB-Version verf
ü
gbar sind.Bugfixes und Erweiterungen seit letzter Version:
- BugFix: Automatischer Dimmode versetzt NSPanel im Normalbetrieb in Dimmodus ohne Screensaver
- Fix: Auto-Update in definiertem Zustand
- Neu: manuelle Updates (Werden
ü
ber Popup eingeblendet, falls vorhanden)
- Neu cardAlarm (Anleitung/Emulator zum Testen folgt)
- Neu popupNotify (Nachricht
ü
ber separates Popup Fenster im Panel - Anleitung/Emulator zum Testen folgt)Wie immer die Variablen ber
ü
cksichtigen.Ab jetzt gibt es zun
ä
chst (und falls erforderlich) nur noch Bugfixes und weitere Aliase.Viel Spa
ß
beim ausprobieren.Ich habe f
ü
r die popupNotify einen kleinen Blockly-Emulator geschrieben - Eventuell m
ö
chte den jemand ausprobieren, um besser zu verstehen, wie die Nachrichten (von au
ß
en - durch andere Skripts (JS, Blockly, TS)) an das Panel
ü
bermittelt werden.Code in neues Blockly importieren, Parameter anpassen und ausf
ü
hren<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="uo@LUG^!/XDby|445u/B">Path</variable> <variable id="$qaJ/IbJ(pbHX=|FSXfR">InternerName</variable> <variable id="REj.ED5|Q5xX,?-aw`5J">Kopfzeile</variable> <variable id="-o6c|nVGu[-e9kJUQ*Py">Text</variable> <variable id="g=qMvdYbq.K$K#qmOxv%">Button1</variable> <variable id="[OV33hQZKYvb2l{,hIz5">Button2</variable> <variable id="GLNUJ.^6GeEeSI!hhRv^">Timeout</variable> </variables> <block type="comment" id="`s6]m,+$3U;:^lwh}RV5" x="62" y="-413"> <field name="COMMENT">Emulation wird jede Minute durchgeführt</field> <next> <block type="schedule" id="0G0P80pyKC8!U~a1%(.E"> <field name="SCHEDULE">* * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="30#(TnQM=_MBK:actv{l"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> <value name="VALUE"> <block type="text" id="h/e(`ygx?v?]11Z`88zp"> <field name="TEXT">0_userdata.0.NSPanel.1.popupNotify.</field> </block> </value> <next> <block type="variables_set" id="R3Wks}hW8#-p/m25k-mK"> <field name="VAR" id="$qaJ/IbJ(pbHX=|FSXfR">InternerName</field> <value name="VALUE"> <block type="text" id="l*M,26M-+$C$vL0GW,XJ"> <field name="TEXT">Waschmaschine</field> </block> </value> <next> <block type="variables_set" id="u3F5ACIOMm{nZ%~T@gN7"> <field name="VAR" id="REj.ED5|Q5xX,?-aw`5J">Kopfzeile</field> <value name="VALUE"> <block type="text_join" id="gilEtg%GtWmZ{Ma7#TH)"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="ar3{89`Ttkt[m[W$ns5W"> <field name="TEXT">Nachricht von </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="W*TW2,-kH?kXp0-zq$m#"> <field name="VAR" id="$qaJ/IbJ(pbHX=|FSXfR">InternerName</field> </block> </value> </block> </value> <next> <block type="variables_set" id="7xV_#HwZp%4fs)`69P7I"> <field name="VAR" id="-o6c|nVGu[-e9kJUQ*Py">Text</field> <value name="VALUE"> <block type="text_join" id="0u!=u_]+ir[CYmK[xb,%"> <mutation items="10"></mutation> <value name="ADD0"> <block type="text" id="ah?o$fm/Du;,mkK#~Wn`"> <field name="TEXT">Der Waschvorgang ist beendet</field> </block> </value> <value name="ADD1"> <block type="text_newline" id="5PgB+z=YZ/Cy(G3`k:LK"> <field name="Type">\r\n</field> </block> </value> <value name="ADD2"> <block type="text_newline" id=",CuP]bnfML_B8A4YWfB0"> <field name="Type">\r\n</field> </block> </value> <value name="ADD3"> <block type="text" id="!i/O$+%ZdbrJ7-^YqXs2"> <field name="TEXT">Diese Nachricht zerstört sich in 15 Sekunden</field> </block> </value> <value name="ADD4"> <block type="text_newline" id="v)hnAj(3J#E:-.SacK9|"> <field name="Type">\r\n</field> </block> </value> <value name="ADD5"> <block type="text" id="bW{bQPK]Zr;DCxw7rx^}"> <field name="TEXT">von selbst</field> </block> </value> <value name="ADD6"> <block type="text_newline" id="e9WhU9G$[u]$hGIHHkOg"> <field name="Type">\r\n</field> </block> </value> <value name="ADD7"> <block type="text_newline" id="#{;D1ACiGtk3DAeH4RvP"> <field name="Type">\r\n</field> </block> </value> <value name="ADD8"> <block type="text" id="{7;]*K(T=]lPCH;#yy,S"> <field name="TEXT">Bist du sicher das du mich abstellen </field> </block> </value> <value name="ADD9"> <block type="text" id="Id60*I{KgLs,7,RNbL#0"> <field name="TEXT">möchtest?</field> </block> </value> </block> </value> <next> <block type="comment" id="MghuTgD][qtrl)GO#HrD"> <field name="COMMENT">Button1 liefert "false" - kann auch leer sein</field> <next> <block type="variables_set" id="d|F8*4v2KA:${~Q;9;n~"> <field name="VAR" id="g=qMvdYbq.K$K#qmOxv%">Button1</field> <value name="VALUE"> <block type="text" id="gHu6:V~JvgPcVq53w1.="> <field name="TEXT">Nein</field> </block> </value> <next> <block type="comment" id="C5?qa0+JRgTU%GlVW$g4"> <field name="COMMENT">Button2 liefert "true" - kann auch leer sein</field> <next> <block type="variables_set" id="aG7hBeg1fGHN@a_`sUbZ"> <field name="VAR" id="[OV33hQZKYvb2l{,hIz5">Button2</field> <value name="VALUE"> <block type="text" id="1O$?!70tQ:aSFIXlS7A,"> <field name="TEXT">OK</field> </block> </value> <next> <block type="comment" id="]h~w+hG;N$9l!}_GV+4B"> <field name="COMMENT">Kann auch auf 0 für manuell schließen</field> <next> <block type="variables_set" id="CGGwa_Ykf}kYYeR)IkR."> <field name="VAR" id="GLNUJ.^6GeEeSI!hhRv^">Timeout</field> <value name="VALUE"> <block type="math_number" id="([Hku{[tr5;;mM@qHQ$t"> <field name="NUM">15</field> </block> </value> <next> <block type="control_ex" id="1dL$wOk9{m-yOy|2=*1g"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="p%b].;f)Tg{x/hQ,(`:E"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="amkxN:qSczo2d]97yqgU"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="k;cYrw$(3p-R5GTFvMW%"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="C6sE8F@i_5VZ)C,x0(s_"> <field name="TEXT">popupNotifyHeading</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="*FA,Qt^=:a61n5.Y3.x]"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="MTH3SkAm}pe/1Cg:N1dV"> <field name="VAR" id="REj.ED5|Q5xX,?-aw`5J">Kopfzeile</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="-DlWt*-;[s9PI#Xyv}ZS"> <field name="NUM">0</field> </shadow> </value> <next> <block type="comment" id="F,R/t@f|GO,Z.QfkIwd$"> <field name="COMMENT">Im Text wird die Zeit mitgegeben</field> <next> <block type="comment" id="F-3#0=OVZNca`nOED6Ls"> <field name="COMMENT">ohne Änderung des Textes wir kein popup angezeigt</field> <next> <block type="control_ex" id="?uUW)tMaHVs%}4f(O{3R"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="%,m?2:R:N?)ZD,$vBC`d"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="w~,,}#T_:R!@(91x(KY)"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="35hU_%k~-#4$(:LcM6,1"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="g`M._dA#Yo[g)P0|,[*N"> <field name="TEXT">popupNotifyText</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="R`0o?%kFD}=);P5,o-V2"> <field name="BOOL">TRUE</field> </shadow> <block type="text_join" id="9LX]H?SV#xzIh`X!vZVX"> <mutation items="3"></mutation> <value name="ADD0"> <block type="convert_from_date" id="L^EjJxj1V$OZ/Ga7/4*2"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">TT.MM.JJJJ SS:mm:ss</field> <value name="VALUE"> <block type="time_get" id="rjD9!@$v?CDm/5n}@(GA"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">object</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text_newline" id="n{mP0B^59fa`=3,/=tlV"> <field name="Type">\r\n</field> </block> </value> <value name="ADD2"> <block type="variables_get" id="%hXKnQkTTz?%Waf1T0%i"> <field name="VAR" id="-o6c|nVGu[-e9kJUQ*Py">Text</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="{5ff|Qz@z:(ZrW[T:`)E"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="mHM54A6B1nA*)Tl`4bTs"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="Ya+g|Cl+i7=.p/Ie(AtO"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="GI+;?qw:YE[{U2_kxJZg"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="wybh?!k``1,iP%|P]c[p"> <field name="TEXT">popupNotifyButton1Text</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="YA2[S#5qR#UG$jHlfQ%S"> <field name="VAR" id="g=qMvdYbq.K$K#qmOxv%">Button1</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="?=AGjEn:juA9us=H]a%;"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="8_BX{?-?Oi|$d|Gg$1Cy"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="He1!cC/^[205l;-1}ASR"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="jw4DW_qno}iIHugSt,}8"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="lr.F~YZdc$sfF|z#V.w5"> <field name="TEXT">popupNotifyButton2Text</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="]l!LD%wcjPA[2)SfUHHs"> <field name="VAR" id="[OV33hQZKYvb2l{,hIz5">Button2</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="OdWpiHsNV#30R]Aq!$Gu"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id=":`/?=XT;sJqhXvIA~Q_R"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="jCD!fuaPfAai?P8U9,?n"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="b]8Y@1:l8%|,xImg{V(_"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="VCw44y[yzUF][09V_+OU"> <field name="TEXT">popupNotifySleepTimeout</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="z;!QKJE2cka}x5~oL8%2"> <field name="VAR" id="GLNUJ.^6GeEeSI!hhRv^">Timeout</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="1YUXTd5z~e^I*6/?o_;0"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="d,*_!q{w=02C~^vvZlYP"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="cQlWDwPHeE4tzR|+)TlH"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="}bZBoWEFal{Z@vm_im$#"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="fK9rd_%mPOgv)BI14-(I"> <field name="TEXT">popupNotifyInternalName</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="?Ue4ZS-9tnXRHWmu?j$u"> <field name="VAR" id="$qaJ/IbJ(pbHX=|FSXfR">InternerName</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="KSV7H~p;Rw}X]^fgXGA;"> <field name="NUM">0</field> </shadow> </value> <next> <block type="comment" id="k}-$zkTkx#NVPnhQ+zzM"> <field name="COMMENT">Output-Parameter werden abgefragt</field> <next> <block type="on_ext" id="Q$YB)v(VTl#wB2|u;63q"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="^prU7]O!M$KjiHYwI?{T"> <field name="oid">0_userdata.0.NSPanel.1.popupNotify.popupNotifyAction</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="USh#T`M700~2CAoY2d#e"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id=";L2c+1)qFU}F1Z=qjFbU"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="orbJ;#C((8Dtuf7!S17/"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="gP!v0w[Yj`(AAv=w66@^"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="[A=mJCJZXmf%8fuZKr8/"> <field name="COMMENT">Aktion für "false" durchführen</field> <next> <block type="debug" id="QR:oB2FD{+gth,B^eN%4"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="|NuBbx-lPVkd#K@m:cZ#"> <field name="TEXT">test</field> </shadow> <block type="text" id="nEbw|*BtC5J,K~$cfr7S"> <field name="TEXT">Es wurde Button1 gedrückt</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="+EYB1H+OhaH?$hux,j{`"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="t)S*(~jk01onDN%F3Up["> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="p8I|SmJp#?Ja8]g4h;-G"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="comment" id=":)$,fqkdSEZ}qHWxBKQJ"> <field name="COMMENT">Aktion für "true" durchführen</field> <next> <block type="debug" id="wmpOOSJ=^fxqOo$:5Gk0"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text" id="u1yn4=-4Qr$ZKL$Ma6-P"> <field name="TEXT">Es wurde Button2 gedrückt</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </xml> -
Ich habe f
ü
r die popupNotify einen kleinen Blockly-Emulator geschrieben - Eventuell m
ö
chte den jemand ausprobieren, um besser zu verstehen, wie die Nachrichten (von au
ß
en - durch andere Skripts (JS, Blockly, TS)) an das Panel
ü
bermittelt werden.Code in neues Blockly importieren, Parameter anpassen und ausf
ü
hren<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="uo@LUG^!/XDby|445u/B">Path</variable> <variable id="$qaJ/IbJ(pbHX=|FSXfR">InternerName</variable> <variable id="REj.ED5|Q5xX,?-aw`5J">Kopfzeile</variable> <variable id="-o6c|nVGu[-e9kJUQ*Py">Text</variable> <variable id="g=qMvdYbq.K$K#qmOxv%">Button1</variable> <variable id="[OV33hQZKYvb2l{,hIz5">Button2</variable> <variable id="GLNUJ.^6GeEeSI!hhRv^">Timeout</variable> </variables> <block type="comment" id="`s6]m,+$3U;:^lwh}RV5" x="62" y="-413"> <field name="COMMENT">Emulation wird jede Minute durchgeführt</field> <next> <block type="schedule" id="0G0P80pyKC8!U~a1%(.E"> <field name="SCHEDULE">* * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="30#(TnQM=_MBK:actv{l"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> <value name="VALUE"> <block type="text" id="h/e(`ygx?v?]11Z`88zp"> <field name="TEXT">0_userdata.0.NSPanel.1.popupNotify.</field> </block> </value> <next> <block type="variables_set" id="R3Wks}hW8#-p/m25k-mK"> <field name="VAR" id="$qaJ/IbJ(pbHX=|FSXfR">InternerName</field> <value name="VALUE"> <block type="text" id="l*M,26M-+$C$vL0GW,XJ"> <field name="TEXT">Waschmaschine</field> </block> </value> <next> <block type="variables_set" id="u3F5ACIOMm{nZ%~T@gN7"> <field name="VAR" id="REj.ED5|Q5xX,?-aw`5J">Kopfzeile</field> <value name="VALUE"> <block type="text_join" id="gilEtg%GtWmZ{Ma7#TH)"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="ar3{89`Ttkt[m[W$ns5W"> <field name="TEXT">Nachricht von </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="W*TW2,-kH?kXp0-zq$m#"> <field name="VAR" id="$qaJ/IbJ(pbHX=|FSXfR">InternerName</field> </block> </value> </block> </value> <next> <block type="variables_set" id="7xV_#HwZp%4fs)`69P7I"> <field name="VAR" id="-o6c|nVGu[-e9kJUQ*Py">Text</field> <value name="VALUE"> <block type="text_join" id="0u!=u_]+ir[CYmK[xb,%"> <mutation items="10"></mutation> <value name="ADD0"> <block type="text" id="ah?o$fm/Du;,mkK#~Wn`"> <field name="TEXT">Der Waschvorgang ist beendet</field> </block> </value> <value name="ADD1"> <block type="text_newline" id="5PgB+z=YZ/Cy(G3`k:LK"> <field name="Type">\r\n</field> </block> </value> <value name="ADD2"> <block type="text_newline" id=",CuP]bnfML_B8A4YWfB0"> <field name="Type">\r\n</field> </block> </value> <value name="ADD3"> <block type="text" id="!i/O$+%ZdbrJ7-^YqXs2"> <field name="TEXT">Diese Nachricht zerstört sich in 15 Sekunden</field> </block> </value> <value name="ADD4"> <block type="text_newline" id="v)hnAj(3J#E:-.SacK9|"> <field name="Type">\r\n</field> </block> </value> <value name="ADD5"> <block type="text" id="bW{bQPK]Zr;DCxw7rx^}"> <field name="TEXT">von selbst</field> </block> </value> <value name="ADD6"> <block type="text_newline" id="e9WhU9G$[u]$hGIHHkOg"> <field name="Type">\r\n</field> </block> </value> <value name="ADD7"> <block type="text_newline" id="#{;D1ACiGtk3DAeH4RvP"> <field name="Type">\r\n</field> </block> </value> <value name="ADD8"> <block type="text" id="{7;]*K(T=]lPCH;#yy,S"> <field name="TEXT">Bist du sicher das du mich abstellen </field> </block> </value> <value name="ADD9"> <block type="text" id="Id60*I{KgLs,7,RNbL#0"> <field name="TEXT">möchtest?</field> </block> </value> </block> </value> <next> <block type="comment" id="MghuTgD][qtrl)GO#HrD"> <field name="COMMENT">Button1 liefert "false" - kann auch leer sein</field> <next> <block type="variables_set" id="d|F8*4v2KA:${~Q;9;n~"> <field name="VAR" id="g=qMvdYbq.K$K#qmOxv%">Button1</field> <value name="VALUE"> <block type="text" id="gHu6:V~JvgPcVq53w1.="> <field name="TEXT">Nein</field> </block> </value> <next> <block type="comment" id="C5?qa0+JRgTU%GlVW$g4"> <field name="COMMENT">Button2 liefert "true" - kann auch leer sein</field> <next> <block type="variables_set" id="aG7hBeg1fGHN@a_`sUbZ"> <field name="VAR" id="[OV33hQZKYvb2l{,hIz5">Button2</field> <value name="VALUE"> <block type="text" id="1O$?!70tQ:aSFIXlS7A,"> <field name="TEXT">OK</field> </block> </value> <next> <block type="comment" id="]h~w+hG;N$9l!}_GV+4B"> <field name="COMMENT">Kann auch auf 0 für manuell schließen</field> <next> <block type="variables_set" id="CGGwa_Ykf}kYYeR)IkR."> <field name="VAR" id="GLNUJ.^6GeEeSI!hhRv^">Timeout</field> <value name="VALUE"> <block type="math_number" id="([Hku{[tr5;;mM@qHQ$t"> <field name="NUM">15</field> </block> </value> <next> <block type="control_ex" id="1dL$wOk9{m-yOy|2=*1g"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="p%b].;f)Tg{x/hQ,(`:E"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="amkxN:qSczo2d]97yqgU"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="k;cYrw$(3p-R5GTFvMW%"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="C6sE8F@i_5VZ)C,x0(s_"> <field name="TEXT">popupNotifyHeading</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="*FA,Qt^=:a61n5.Y3.x]"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="MTH3SkAm}pe/1Cg:N1dV"> <field name="VAR" id="REj.ED5|Q5xX,?-aw`5J">Kopfzeile</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="-DlWt*-;[s9PI#Xyv}ZS"> <field name="NUM">0</field> </shadow> </value> <next> <block type="comment" id="F,R/t@f|GO,Z.QfkIwd$"> <field name="COMMENT">Im Text wird die Zeit mitgegeben</field> <next> <block type="comment" id="F-3#0=OVZNca`nOED6Ls"> <field name="COMMENT">ohne Änderung des Textes wir kein popup angezeigt</field> <next> <block type="control_ex" id="?uUW)tMaHVs%}4f(O{3R"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="%,m?2:R:N?)ZD,$vBC`d"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="w~,,}#T_:R!@(91x(KY)"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="35hU_%k~-#4$(:LcM6,1"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="g`M._dA#Yo[g)P0|,[*N"> <field name="TEXT">popupNotifyText</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="R`0o?%kFD}=);P5,o-V2"> <field name="BOOL">TRUE</field> </shadow> <block type="text_join" id="9LX]H?SV#xzIh`X!vZVX"> <mutation items="3"></mutation> <value name="ADD0"> <block type="convert_from_date" id="L^EjJxj1V$OZ/Ga7/4*2"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">TT.MM.JJJJ SS:mm:ss</field> <value name="VALUE"> <block type="time_get" id="rjD9!@$v?CDm/5n}@(GA"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">object</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text_newline" id="n{mP0B^59fa`=3,/=tlV"> <field name="Type">\r\n</field> </block> </value> <value name="ADD2"> <block type="variables_get" id="%hXKnQkTTz?%Waf1T0%i"> <field name="VAR" id="-o6c|nVGu[-e9kJUQ*Py">Text</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="{5ff|Qz@z:(ZrW[T:`)E"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="mHM54A6B1nA*)Tl`4bTs"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="Ya+g|Cl+i7=.p/Ie(AtO"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="GI+;?qw:YE[{U2_kxJZg"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="wybh?!k``1,iP%|P]c[p"> <field name="TEXT">popupNotifyButton1Text</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="YA2[S#5qR#UG$jHlfQ%S"> <field name="VAR" id="g=qMvdYbq.K$K#qmOxv%">Button1</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="?=AGjEn:juA9us=H]a%;"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="8_BX{?-?Oi|$d|Gg$1Cy"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="He1!cC/^[205l;-1}ASR"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="jw4DW_qno}iIHugSt,}8"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="lr.F~YZdc$sfF|z#V.w5"> <field name="TEXT">popupNotifyButton2Text</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="]l!LD%wcjPA[2)SfUHHs"> <field name="VAR" id="[OV33hQZKYvb2l{,hIz5">Button2</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="OdWpiHsNV#30R]Aq!$Gu"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id=":`/?=XT;sJqhXvIA~Q_R"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="jCD!fuaPfAai?P8U9,?n"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="b]8Y@1:l8%|,xImg{V(_"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="VCw44y[yzUF][09V_+OU"> <field name="TEXT">popupNotifySleepTimeout</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="z;!QKJE2cka}x5~oL8%2"> <field name="VAR" id="GLNUJ.^6GeEeSI!hhRv^">Timeout</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="1YUXTd5z~e^I*6/?o_;0"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="d,*_!q{w=02C~^vvZlYP"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="cQlWDwPHeE4tzR|+)TlH"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="}bZBoWEFal{Z@vm_im$#"> <field name="VAR" id="uo@LUG^!/XDby|445u/B">Path</field> </block> </value> <value name="ADD1"> <block type="text" id="fK9rd_%mPOgv)BI14-(I"> <field name="TEXT">popupNotifyInternalName</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="?Ue4ZS-9tnXRHWmu?j$u"> <field name="VAR" id="$qaJ/IbJ(pbHX=|FSXfR">InternerName</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="KSV7H~p;Rw}X]^fgXGA;"> <field name="NUM">0</field> </shadow> </value> <next> <block type="comment" id="k}-$zkTkx#NVPnhQ+zzM"> <field name="COMMENT">Output-Parameter werden abgefragt</field> <next> <block type="on_ext" id="Q$YB)v(VTl#wB2|u;63q"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="^prU7]O!M$KjiHYwI?{T"> <field name="oid">0_userdata.0.NSPanel.1.popupNotify.popupNotifyAction</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="USh#T`M700~2CAoY2d#e"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id=";L2c+1)qFU}F1Z=qjFbU"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="orbJ;#C((8Dtuf7!S17/"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="gP!v0w[Yj`(AAv=w66@^"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="[A=mJCJZXmf%8fuZKr8/"> <field name="COMMENT">Aktion für "false" durchführen</field> <next> <block type="debug" id="QR:oB2FD{+gth,B^eN%4"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="|NuBbx-lPVkd#K@m:cZ#"> <field name="TEXT">test</field> </shadow> <block type="text" id="nEbw|*BtC5J,K~$cfr7S"> <field name="TEXT">Es wurde Button1 gedrückt</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="+EYB1H+OhaH?$hux,j{`"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="t)S*(~jk01onDN%F3Up["> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="p8I|SmJp#?Ja8]g4h;-G"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="comment" id=":)$,fqkdSEZ}qHWxBKQJ"> <field name="COMMENT">Aktion für "true" durchführen</field> <next> <block type="debug" id="wmpOOSJ=^fxqOo$:5Gk0"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text"> <field name="TEXT">test</field> </shadow> <block type="text" id="u1yn4=-4Qr$ZKL$Ma6-P"> <field name="TEXT">Es wurde Button2 gedrückt</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </xml>Jetzt ein weiterer Blockly-Emulator f
ü
r die cardAlarmHintergrund: Nach Aktivierung des Alarms wird in einen Datenpunkt (Pin/Status/Typ) geschrieben. Da ich davon ausgehe, dass alle anderen Aktionen, wie Bewegungen/Fenster- und T
ü
rsensoren, etc.
ü
ber externe Skripts verarbeitet werden, gibt es quasi eine Schnittstelle:- Pin: Eingabe wird nach Aktivierung
ü
bernommen und in Datenpunkt 0.userdata.0......Alarm.AlarmPin hinterlegt. Bei Deaktivierung wird der Pin erneut abgefragt. - Typ: ist der ausgew
ä
hlte Alarmtyp (Kann separat extern ausprogrammiert werden (z.B. Unterschiedliche Steuerung des Alarms f
ü
r Vollschutz, Nachts (wenn im Sommer Fenster auf sein sollen), Besuch, etc.. (0.userdata.0......Alarm.AlarmType) - State: Das Panel sendet keine Zust
ä
nde wie "armed" oder "disarmed", sondern "arming" oder "pending" an den Datenpunkt 0.userdata.0......Alarm.AlarmState. Das nachtr
ä
glich verarbeitende "externe" Skript" setzt den Status "armed" bei erfolgreicher Aktivierung oder "disarmed" bei erfolgreicher Deaktivierung. Wenn der Alarm ausgel
ö
st wurde, so wird in den Datenpunkt (ebenfalls
ü
ber externes Skript) ein "triggered" geschrieben.
Der Emulator reagiert auf das "arming" und "pending" und schreibt entsprechend ein "armed" oder "disarmed" zur
ü
ck.<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on_ext" id="q!?(x}z/f~TClQnNmbyU" x="113" y="38"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="]~f@4kO$zmxdg=}/810C"> <field name="oid">0_userdata.0.NSPanel.1.Alarm.AlarmState</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="=_e7bf!`Q]$tg*0U1_2F"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="0_9gv(MmSSJ{2a$j{}(P"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="H$WWrxxX|NaWkT%W]g!Z"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="_TnyjJ5x!)JY~rQ:Opj)"> <field name="TEXT">arming</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="eO}0c$0s~08Di)?sMM0("> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.NSPanel.1.Alarm.AlarmState</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"> <block type="text" id="J(va8~n[/dogNBn!W].I"> <field name="TEXT">armed</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="]p3s+ouB~BJkfd:e)G:("> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id=":n]Z,t6+q#-l_hP+MEI@"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="([Ep{MPBu5s.C-lOdHgr"> <field name="TEXT">pending</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="s77gpG^9o0A)T{f}{#,c"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.NSPanel.1.Alarm.AlarmState</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"> <block type="text" id="4DC5l(?mcdlhZ/jIumty"> <field name="TEXT">disarmed</field> </block> </value> </block> </statement> </block> </statement> </block> </xml> - Pin: Eingabe wird nach Aktivierung
-
Jetzt ein weiterer Blockly-Emulator f
ü
r die cardAlarmHintergrund: Nach Aktivierung des Alarms wird in einen Datenpunkt (Pin/Status/Typ) geschrieben. Da ich davon ausgehe, dass alle anderen Aktionen, wie Bewegungen/Fenster- und T
ü
rsensoren, etc.
ü
ber externe Skripts verarbeitet werden, gibt es quasi eine Schnittstelle:- Pin: Eingabe wird nach Aktivierung
ü
bernommen und in Datenpunkt 0.userdata.0......Alarm.AlarmPin hinterlegt. Bei Deaktivierung wird der Pin erneut abgefragt. - Typ: ist der ausgew
ä
hlte Alarmtyp (Kann separat extern ausprogrammiert werden (z.B. Unterschiedliche Steuerung des Alarms f
ü
r Vollschutz, Nachts (wenn im Sommer Fenster auf sein sollen), Besuch, etc.. (0.userdata.0......Alarm.AlarmType) - State: Das Panel sendet keine Zust
ä
nde wie "armed" oder "disarmed", sondern "arming" oder "pending" an den Datenpunkt 0.userdata.0......Alarm.AlarmState. Das nachtr
ä
glich verarbeitende "externe" Skript" setzt den Status "armed" bei erfolgreicher Aktivierung oder "disarmed" bei erfolgreicher Deaktivierung. Wenn der Alarm ausgel
ö
st wurde, so wird in den Datenpunkt (ebenfalls
ü
ber externes Skript) ein "triggered" geschrieben.
Der Emulator reagiert auf das "arming" und "pending" und schreibt entsprechend ein "armed" oder "disarmed" zur
ü
ck.<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on_ext" id="q!?(x}z/f~TClQnNmbyU" x="113" y="38"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="]~f@4kO$zmxdg=}/810C"> <field name="oid">0_userdata.0.NSPanel.1.Alarm.AlarmState</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="=_e7bf!`Q]$tg*0U1_2F"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="0_9gv(MmSSJ{2a$j{}(P"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="H$WWrxxX|NaWkT%W]g!Z"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="_TnyjJ5x!)JY~rQ:Opj)"> <field name="TEXT">arming</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="eO}0c$0s~08Di)?sMM0("> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.NSPanel.1.Alarm.AlarmState</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"> <block type="text" id="J(va8~n[/dogNBn!W].I"> <field name="TEXT">armed</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="]p3s+ouB~BJkfd:e)G:("> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id=":n]Z,t6+q#-l_hP+MEI@"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="([Ep{MPBu5s.C-lOdHgr"> <field name="TEXT">pending</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="s77gpG^9o0A)T{f}{#,c"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.NSPanel.1.Alarm.AlarmState</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"> <block type="text" id="4DC5l(?mcdlhZ/jIumty"> <field name="TEXT">disarmed</field> </block> </value> </block> </statement> </block> </statement> </block> </xml>Falls jemand wissen m
ö
chte, wie ein spezieller Alias aussehen muss - dann einfach Bescheid geben. Kann gerne ein Screenshot aus dem Adapter "Ger
ä
te verwalten" machen.Im Verlauf des Threads habe ich schon den ein oder anderen Alias f
ü
r Lampe, Dimmer, etc. aufgef
ü
hrt.Ebenso sollte sich bereits der Alias f
ü
r die cardMedia (Alexa-Player) im Thread befinden, der sich allerdings nur korrekt
ü
ber den Adapter "Alias-Manager (wie ebenfalls beschrieben) erzeugen lie
ß
. Hier versagt der Adapter "Ger
ä
te verwalten" komplett.F
ü
r den Alias cardThermo setzte ich jetzt bereits einen Screenshot vom Alias-Typ: Thermostat ein:
und etwas tiefer (scrollen):

Ist in diesem Fall ein Thermostat von homaticIP - wer andere Typen hat, kann auch weitere Indikatoren f
ü
llen - Pin: Eingabe wird nach Aktivierung
-
Falls jemand wissen m
ö
chte, wie ein spezieller Alias aussehen muss - dann einfach Bescheid geben. Kann gerne ein Screenshot aus dem Adapter "Ger
ä
te verwalten" machen.Im Verlauf des Threads habe ich schon den ein oder anderen Alias f
ü
r Lampe, Dimmer, etc. aufgef
ü
hrt.Ebenso sollte sich bereits der Alias f
ü
r die cardMedia (Alexa-Player) im Thread befinden, der sich allerdings nur korrekt
ü
ber den Adapter "Alias-Manager (wie ebenfalls beschrieben) erzeugen lie
ß
. Hier versagt der Adapter "Ger
ä
te verwalten" komplett.F
ü
r den Alias cardThermo setzte ich jetzt bereits einen Screenshot vom Alias-Typ: Thermostat ein:
und etwas tiefer (scrollen):

Ist in diesem Fall ein Thermostat von homaticIP - wer andere Typen hat, kann auch weitere Indikatoren f
ü
llenDer Alias f
ü
r die cardAlarm war etwas trickreicher...Habe einen Alias vom Typ "Feueralarm" verwendet und um "Zustand hinzuf
ü
gen (schwarzes +)", die Zust
ä
nde PIN (Rolle: state; Datentyp: string) und TYPE (Rolle: state; Datentyp: string) hinzugef
ü
gt.
Nach dem Speichern habe ich den ACTUAL unter alias.0...Alarm.ACTUAL von "boolean" auf "string" umgebogen

-
Der Alias f
ü
r die cardAlarm war etwas trickreicher...Habe einen Alias vom Typ "Feueralarm" verwendet und um "Zustand hinzuf
ü
gen (schwarzes +)", die Zust
ä
nde PIN (Rolle: state; Datentyp: string) und TYPE (Rolle: state; Datentyp: string) hinzugef
ü
gt.
Nach dem Speichern habe ich den ACTUAL unter alias.0...Alarm.ACTUAL von "boolean" auf "string" umgebogen

Das ist mein Alias f
ü
r das aktuelle Wetter im Screensaver:
und etwas weiter gescrollt die Temperatur (bei mir direkt aus der Wetterstation)

-
Das ist mein Alias f
ü
r das aktuelle Wetter im Screensaver:
und etwas weiter gescrollt die Temperatur (bei mir direkt aus der Wetterstation)

Und noch eine HUE-Lampe (bei mir nur emuliert in 0_userdata, da ich in Wirklichkeit keine habe)

-
@mameier1234 @Leone-Mortuo ,
Ich habe meinen NSPanel laut das Video von Mathias Kleine am l
ä
ufenden, aber ich schaffe es leider nicht um meinen Shelly RGBW an zu steuern mit Ihren Blockly.
Ich verstehe leider nicht wie ich der Shelly RGBW Json payload umwandeln muss nach der von Tasmota/NSPanel.
Hat jemand ein Idee?


Shelly RGBW Doku:link text
Vielen Dank,
Gr
ü
sse aus Belgien,Hallo, hat jemand ein Idee/Vorschlag?
Vielen lieben Dank,
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login