NEWS
NSPanel - Hardwarebuttons und MQTT Problem (gelöst)
-
Hast du die Button abgekoppelt von den Relais mit diesem Befehl?
Rule2 on Button1#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button2"} endon
mit dem Befehl aktivierst du die Regel
Rule2 1
Zeige mal bitte deine MQTT einstellungen vom Panel
Dann ist mir aufgefallen das bei GIPO27 bei mir eine 2 steht
-
@tt-tom sagte in NSPanel - Hardwarebuttons und MQTT Problem:
Rule2 on Button1#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button2"} endon
Habe ich gerade eben erledigt:
14:40:38.840 CMD: Rule2 on Button1#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button2"} endon 14:40:38.846 RUL: Stored uncompressed, would compress from 177 to 81 (-54%) 14:40:38.853 MQT: SmartHome/NSPanel/stat/RESULT = {"Rule2":{"State":"OFF","Once":"OFF","StopOnError":"OFF","Length":177,"Free":334,"Rules":"on Button1#state do Publish %topic%/%prefix%/RESULT {\"CustomRecv\":\"event,button1\"} endon on Button2#state do Publish %topic%/%prefix%/RESULT {\"CustomRecv\":\"event,button2\"} endon"}}
NSPanel neu gestartet:
00:00:00.002 HDW: ESP32-D0WD-V3 00:00:00.029 UFS: FlashFS mounted with 276 kB free 00:00:00.044 CFG: Loaded from File, Anzahl 2101 00:00:00.054 QPC: Count 1 00:00:00.161 BRY: Berry initialized, RAM used=4041 bytes 00:00:00.174 TFS: File '.drvset003' not found 00:00:00.174 CFG: Energy use defaults as file system not ready or file not found 00:00:00.184 Projekt tasmota - Tasmota Version 12.4.0(tasmota)-2_0_6(2023.02.24 15:41:22) 00:00:00.370 NXP: Initializing Driver 00:00:00.378 BRY: Successfully loaded 'autoexec.be' 00:00:00.974 WIF: verbinden mit AP1 xxx Channel 6 BSSId xx:xx:xx:xx:xx:xx in Modus 11n als NSPanel-XXXX... 00:00:02.879 WIF: verbunden 00:00:03.189 HTP: Web-Server aktiv bei NSPanel-XXXX mit IP-Adresse 192.168.x.y 14:44:25.168 MQT: Verbindungsversuch... 14:44:25.214 MQT: verbunden 14:44:25.218 MQT: SmartHome/NSPanel/tele/LWT = Online (beibehalten) 14:44:25.220 MQT: SmartHome/NSPanel/cmnd/POWER = 14:44:25.227 MQT: SmartHome/NSPanel/tele/INFO1 = {"Info1":{"Module":"NSPanel","Version":"12.4.0(tasmota)","FallbackTopic":"cmnd/NSPanel_fb/","GroupTopic":"SmartHome/tasmotas/cmnd/"}} 14:44:25.242 MQT: SmartHome/NSPanel/tele/INFO2 = {"Info2":{"WebServerMode":"Admin","Hostname":"NSPanel-XXXX","IPAddress":"192.168.x.y","IP6Global":"","IP6Local":"xyz"}} 14:44:25.256 MQT: SmartHome/NSPanel/tele/INFO3 = {"Info3":{"RestartReason":"Software reset CPU","BootCount":93}} 14:44:25.269 MQT: SmartHome/NSPanel/stat/RESULT = {"POWER1":"OFF"} 14:44:25.273 MQT: SmartHome/NSPanel/stat/POWER1 = OFF 14:44:25.275 MQT: SmartHome/NSPanel/stat/RESULT = {"POWER2":"OFF"} 14:44:25.290 MQT: SmartHome/NSPanel/stat/POWER2 = OFF 14:44:25.522 MQT: SmartHome/NSPanel/stat/RESULT = {"POWER1":"OFF"} 14:44:25.524 MQT: SmartHome/NSPanel/stat/POWER1 = OFF 14:44:25.600 MQT: SmartHome/NSPanel/stat/RESULT = {"CustomSend":"Done"} 14:44:25.628 MQT: SmartHome/NSPanel/stat/RESULT = {"POWER1":"OFF"} 14:44:25.630 MQT: SmartHome/NSPanel/stat/POWER1 = OFF 14:44:25.702 MQT: SmartHome/NSPanel/stat/RESULT = {"CustomSend":"Done"} 14:44:25.734 MQT: SmartHome/NSPanel/stat/RESULT = {"POWER1":"OFF"} 14:44:25.737 MQT: SmartHome/NSPanel/stat/POWER1 = OFF 14:44:25.799 MQT: SmartHome/NSPanel/stat/RESULT = {"CustomSend":"Done"} 14:44:27.092 MQT: SmartHome/NSPanel/tele/RESULT = {"CustomRecv":"event,startup,50,eu"} 14:44:27.208 MQT: SmartHome/NSPanel/stat/RESULT = {"CustomSend":"Done"} 14:44:27.251 MQT: SmartHome/NSPanel/stat/RESULT = {"CustomSend":"Done"} 14:44:27.298 MQT: SmartHome/NSPanel/stat/RESULT = {"CustomSend":"Done"} 14:44:27.361 MQT: SmartHome/NSPanel/stat/RESULT = {"CustomSend":"Done"} 14:44:27.515 MQT: SmartHome/NSPanel/stat/RESULT = {"CustomSend":"Done"} 14:44:27.564 MQT: SmartHome/NSPanel/stat/RESULT = {"CustomSend":"Done"} 14:44:27.595 MQT: SmartHome/NSPanel/stat/RESULT = {"POWER1":"OFF"} 14:44:27.598 MQT: SmartHome/NSPanel/stat/POWER1 = OFF 14:44:27.664 MQT: SmartHome/NSPanel/stat/RESULT = {"CustomSend":"Done"} 14:44:27.929 QPC: Reset 14:44:29.933 MQT: SmartHome/NSPanel/tele/STATE = {"Time":"2023-03-12T14:44:29","Uptime":"0T00:00:09","UptimeSec":9,"Heap":132,"SleepMode":"Dynamic","Sleep":0,"LoadAvg":198,"MqttCount":1,"Berry":{"HeapUsed":16,"Objects":239},"POWER1":"OFF","POWER2":"OFF","Wifi":{"AP":1,"SSId":"XYZ","BSSId":"xx:xx:xx:xx:xx:xx","Channel":6,"Mode":"11n","RSSI":26,"Signal":-87,"LinkCount":1,"Downtime":"0T00:00:04"}} 14:44:29.974 MQT: SmartHome/NSPanel/tele/SENSOR = {"Time":"2023-03-12T14:44:29","ANALOG":{"Temperature1":22.3},"ESP32":{"Temperature":57.2},"TempUnit":"C"} 14:44:37.471 MQT: SmartHome/NSPanel/tele/RESULT = {"CustomRecv":"event,sleepReached,cardEntities"}
Betätige ich den Button 1 (Ein / Aus) bekomme ich in der Console folgendes angezeig:
14:50:52.383 MQT: SmartHome/NSPanel/tele/RESULT = {"CustomRecv":"event,buttonPress2,screensaver,bExit,1"} 14:50:54.006 MQT: SmartHome/NSPanel/stat/RESULT = {"POWER1":"ON"} 14:50:54.009 MQT: SmartHome/NSPanel/stat/POWER1 = ON 14:50:56.344 MQT: SmartHome/NSPanel/stat/RESULT = {"POWER1":"OFF"} 14:50:56.346 MQT: SmartHome/NSPanel/stat/POWER1 = OFF
Rule2 1
ausgeführt und ... Feierabend. Kann per Buttons kein Licht mehr schalten...
-
Habe jetzt auch folgendes (ohne Erfolg) probiert:
Rule2 on Button1#state do Publish SmartHome/%topic%/%prefix%/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish SmartHome/%topic%/%prefix%/RESULT {"CustomRecv":"event,button2"} endon
Hier die MQTT Config:
-
mit Rule2 0 kannst du es wieder deaktivieren. Also du möchtest mit den Button die Relais schalten direkt?
EDIT: Was möchtest du den genau machen?
-
@tt-tom :
Ich möchte einfach per physikalischen Druck auf den Buttons das Licht Ein/Ausschalten und den jeweiligen Zustand z.B. in Jarvis angezeigt bekommen.
Das Problm ist, dass der Zustand nicht an ioBroker übermittelt wird, weshalb dieser weder in Jarvis, noch direkt auf dem NSPanel (Screensaver obere Ecken) angezeigt wird. -
@dark-angel Wenn du auf die Tasten drückst bekommst du doch auf dem MQTT die Meldung Power1 on /off bzw. Power2 on/off. Diese kannst du doch auswerten
mqtt.x.SmartHome.NSPanelBüro.stat.POWER1
-
@dark-angel es gibt jetzt eine Erweiterung mit der Version 4.0.4.1 und höher. Dazu musst du aber bitte mal ein Test für mich machen. Da ich die Kiste mit den Relais nicht hinten dran habe. kann ich das jetzt nicht testen. in den Service Seiten unter Einstellung / Relais solltest du die Relais schalten können, bitte mal testen.
Dann gibt es eine Möglichkeit über das Script zu steuern.
-
@tt-tom sagte in NSPanel - Hardwarebuttons und MQTT Problem:
@dark-angel Wenn du auf die Tasten drückst bekommst du doch auf dem MQTT die Meldung Power1 on /off bzw. Power2 on/off. Diese kannst du doch auswerten
mqtt.x.SmartHome.NSPanelBüro.stat.POWER1
Da muss ich wohl noch etwas basteln um den Wert als Alias abzulegen in der Hoffnung, dass es dann in Jarvis klappt (und auch in dem TrueScript für den NSPanel).
@tt-tom sagte in NSPanel - Hardwarebuttons und MQTT Problem:
@dark-angel es gibt jetzt eine Erweiterung mit der Version 4.0.4.1 und höher. Dazu musst du aber bitte mal ein Test für mich machen. Da ich die Kiste mit den Relais nicht hinten dran habe. kann ich das jetzt nicht testen. in den Service Seiten unter Einstellung / Relais solltest du die Relais schalten können, bitte mal testen.
Dann gibt es eine Möglichkeit über das Script zu steuern.
Ich habe schon die 4.0.4.2 "am laufen".
Wenn ich in den Einstellungen > Relais schalte, dann.. Ja dann wird der Wert auch ordentlich an ioBroker übermittelt und dem entsprechend auch in Jarvis angezeigt, sowie auch in den oberen Screensaver Ecken am NSPanel.
Umgekehrt ist es auch so, dass wenn ich das Licht per Jarvis einschalte, auch die Werte richtig in den Screensaver Ecken und unter Einstellungen > Relais angezeigt werden.Es ist tatsächlich nur die fehlende Kommunikation zw. den Hardwarebuttons und ioBroker.
-
@dark-angel Dann aktiviere nochmal die Rule2 und im Script musst du dann für die Button folgende Einstellung machen. Beispiel für Button 1
button1: { mode: 'toggle', // Mögliche Werte wenn Rule2 definiert: page, toggle, set - Wenn nicht definiert --> mode: null page: null, // Zielpage - Verwendet wenn mode = page (bisher button1Page) entity: '0_userdata.0.NSPanel.Büro.Relay.1', // Zielentity - Verwendet wenn mode = set oder toggle setValue: null // Zielwert - Verwendet wenn mode = set }
-
@TT-Tom
anhand meiner MQTT Konfig auf dem NSPanel, welcher wäre eigentlich der richtige Befehl?Rule2 on Button1#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button2"} endon
oder
Rule2 on Button1#state do Publish SmartHome/%topic%/%prefix%/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish SmartHome/%topic%/%prefix%/RESULT {"CustomRecv":"event,button2"} endon
-
@dark-angel der zweite
-
@tt-tom
Danke.
Funktioniert leider trotzdem nicht:State "mqtt.0.SmartHome.NSPanel.%prefix%.RESULT" has no existing object, this might lead to an error in future versions
-
@dark-angel Wo kommt die Meldung den jetzt her?
-
@tt-tom aus dem ioBroker Protokol.
Anscheinend sendet das NSPanel schon "irgendwas", sobald man auf dem Button klickt, aber das ist nicht das richtige.
Das steht dann in der Tasmota Console auf dem NSPanel:16:42:15.477 RUL: BUTTON1#STATE performs "Publish SmartHome/NSPanel/%prefix%/RESULT {"CustomRecv":"event,button1"}" 16:42:15.485 MQT: SmartHome/NSPanel/%prefix%/RESULT = {"CustomRecv":"event,button1"} 16:42:17.078 RUL: BUTTON1#STATE performs "Publish SmartHome/NSPanel/%prefix%/RESULT {"CustomRecv":"event,button1"}" 16:42:17.085 MQT: SmartHome/NSPanel/%prefix%/RESULT = {"CustomRecv":"event,button1"}
-
@dark-angel sorry da habe ich mich getäuscht. du hast doch oben schon die richtige Rule angelegt
bitte das noch einmal anlegen.
-
Tasmota:
16:57:00.259 RUL: BUTTON1#STATE performs "Publish NSPanel/%prefix%/RESULT {"CustomRecv":"event,button1"}" 16:57:00.267 MQT: NSPanel/%prefix%/RESULT = {"CustomRecv":"event,button1"} 16:57:01.909 RUL: BUTTON1#STATE performs "Publish NSPanel/%prefix%/RESULT {"CustomRecv":"event,button1"}" 16:57:01.918 MQT: NSPanel/%prefix%/RESULT = {"CustomRecv":"event,button1"}
ioBroker:
State "mqtt.0.NSPanel.%prefix%.RESULT" has no existing object, this might lead to an error in future versions
Ich hoffe nur, dass es bei mir ein Einzellfall ist und nicht ein generelles Problem, denn: Wenn die Lösung darin besteht die Hardwarebuttons von ihre eigentliche Funktion (Licht Ein/Aus schalten) zu entkoppeln, wird der "Lichtschalter" praktisch ohne Funktion sein, solange kein Steuerungsscript im Hintergrund läuft.
Mit der Einstellung "Rule2 0" kann man nach wie vor das Licht schalten, selbst wenn das Display noch Runden dreht und auf Daten von ioBroker wartet.
Wie schon gesagt: bis vor kurzem hat es noch funktioniert... -
@dark-angel Ja mit Rule2 0 verbindest du Relais und Button direkt über Tasmota.
Wenn du die Sicherheit haben möchtest das es immer funktioniert dann ist es mMn nicht anders möglich. Die Relais bringen keinen Status
Wenn du es doch über das Script probieren möchtest, dann gib in der Console noch einmal die richtige Rule-Definition ein.
Rule2 on Button1#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button2"} endon
dann Rule2 1
-
@tt-tom sagte in NSPanel - Hardwarebuttons und MQTT Problem:
Rule2 1
Also... Hirn eingeschalten, nachgeschaut und schon hat es funktioniert:
Rule2 on Button1#state do Publish SmartHome/%topic%/tele/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish SmartHome/%topic%/tele/RESULT {"CustomRecv":"event,button2"} endon Rule2 1
Jetzt bleibt nur noch (zumindest für mich) die Frage zu klären, wieso der NSPanel in der Konsole nichts mit %prefix% anzufangen weiß.
P.S. Hätte mir viel Nachdenken erspart, hätte ich in dem Kapitel etwas besser aufgepasst: NSPanel-Tasmota-FAQ#1-hardware-buttons
Dort wird nirgends der %prefix% erwähnt.
Ich glaube, die Kurze Info im TrueScript sollte dahingehend überarbeitet werden.
Zeile 130:129 Tasmota Konsole: 130 Rule2 on Button1#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button1"} endon on Button2#state do Publish %topic%/%prefix%/RESULT {"CustomRecv":"event,button2"} endon 131 Rule2 1 (Rule aktivieren) 132 Rule2 0 (Rule deaktivieren)
An dieser Stelle möchte ich mich recht herzlich bei @TT-Tom für die Unterstützung bedanken.
-
@dark-angel sagte in NSPanel - Hardwarebuttons und MQTT Problem (gelöst):
Ich glaube, die Kurze Info im TrueScript sollte dahingehend überarbeitet werden.
Zeile 130:Danke für die Rückinfo, wir werden es mit aufnehmen. Viel Spass weiterhin.