NEWS
Tasmota Plug: IF in Rules verwenden
-
Hi Leute,
ich habe bei einem Tasmota Plug folgende Rule erstellt:ON ENERGY#Power>0 DO Publish stat/sonoff/RESULT {\"ENERGY_Status\":true} ENDON ON ENERGY#Power=0 DO Publish stat/sonoff/RESULT {\"ENERGY_Status\":false} ENDONEs sendet an den Datenpunkt "ENERGY_Status" ein true, wenn die Leistung > 0 ist und false wenn nicht. Ich musste das so lösen, weil die Leistung auf iobroker Seite nur alle 10 Sekunden aktualisiert wird. Ich muss es aber schneller mitbekommen, wenn die Leistung > 0 ist.
Mit der Rule funktioniert es aber das Problem ist, das der Status dann ständig gesendet wird (gefühlt jede Sekunde). Deshalb hatte ich die Rule umgebaut und noch ein IF reingepackt, damit der Status nur gesendet wird, wenn dessen Wert sich ändert.
ON ENERGY#Power>0 DO IF [Var1]!=1 DO Publish stat/sonoff/RESULT {"ENERGY_Status":true} ENDIF; Var1 1 ENDON ON ENERGY#Power=0 DO IF [Var1]!=0 DO Publish stat/sonoff/RESULT {"ENERGY_Status":false} ENDIF; Var1 0 ENDONDas Problem ist, dass das IF einen Fehler verursacht und der Status nicht versendet wird. In der Konsole wird dann folgendes ausgegeben:
"Command":"Unknown"Das kommt nur wenn IF mit Publish in der Rule steht. IF und Publish scheinen sich nicht zu verstehen.
Mit ChatGPT drehe ich mich nur im Kreis.
Kennt jemand das Problem und hat vielleicht eine Lösung? -
Du könntest das alles wieder rausnehmen und von ioBroker aus per MQTT die Abfrage Triggern.
Und dann ioBroker an dencmnd\Statusdie 8 senden, z.B.mqtt.0.cmnd.AC-Temp-2104.STATUSWenn man in der Konsole auf dem Tasmota-Gerät
status 8eingibt, werden die Energiewerte angezeigt. Gleichzeitig sendet er die dann über MQTT
Alternativ könntest du dir per Webrequest den Wert holen wenn du ihn gerade brauchst:
http://192.168.2.10/cm?user=admin&password=test1234&cmnd=Status%208Du bekommst dann den JSON von Status 8 (und er wird dann auch noch mal per MQTT gesendet). So hast du aber sofort den Wert, beim Antriggern müsstest du sonst ja noch warten das der Wert kommt
-
H Homoran verschob dieses Thema von Hardware
-
Hi Leute,
ich habe bei einem Tasmota Plug folgende Rule erstellt:ON ENERGY#Power>0 DO Publish stat/sonoff/RESULT {\"ENERGY_Status\":true} ENDON ON ENERGY#Power=0 DO Publish stat/sonoff/RESULT {\"ENERGY_Status\":false} ENDONEs sendet an den Datenpunkt "ENERGY_Status" ein true, wenn die Leistung > 0 ist und false wenn nicht. Ich musste das so lösen, weil die Leistung auf iobroker Seite nur alle 10 Sekunden aktualisiert wird. Ich muss es aber schneller mitbekommen, wenn die Leistung > 0 ist.
Mit der Rule funktioniert es aber das Problem ist, das der Status dann ständig gesendet wird (gefühlt jede Sekunde). Deshalb hatte ich die Rule umgebaut und noch ein IF reingepackt, damit der Status nur gesendet wird, wenn dessen Wert sich ändert.
ON ENERGY#Power>0 DO IF [Var1]!=1 DO Publish stat/sonoff/RESULT {"ENERGY_Status":true} ENDIF; Var1 1 ENDON ON ENERGY#Power=0 DO IF [Var1]!=0 DO Publish stat/sonoff/RESULT {"ENERGY_Status":false} ENDIF; Var1 0 ENDONDas Problem ist, dass das IF einen Fehler verursacht und der Status nicht versendet wird. In der Konsole wird dann folgendes ausgegeben:
"Command":"Unknown"Das kommt nur wenn IF mit Publish in der Rule steht. IF und Publish scheinen sich nicht zu verstehen.
Mit ChatGPT drehe ich mich nur im Kreis.
Kennt jemand das Problem und hat vielleicht eine Lösung?