Hallo,
ich versuche gerade ein DOIF zu erstellen, der meinem Xiaomi Staubsaugrobotor (Staubi) ausschaltet.
Das Problem was ich habe, ist das es viele state Readings (14 Stück) gibt die ich abfragen möchte und wenn dabei nur eins zutrifft, soll das cmd ausgelöst werden.
Dazu muss erst eine Sonoff Steckdose (WZ_Sonoff_Staubi) abgeschaltet werden und danach ein ESP8266 (WZ_ESP_Staubi_Shutdown) der einen Tastendruck simuliert. Das funktioniert auch alles...
Was ich suche ist eine Optimierung, sonst wird das DOIF ziemlich groß.
So funktioniert es leider nicht, ich denke das liegt daran, das alle Bedienungen auf einmal zutreffen müssen:
defmod Staubi_Shutdown DOIF ([Staubi:state] eq "Docked|Charging|Sleeping" and [Staubi:batteryLevel] > "90") (set WZ_Sonoff_Staubi OFF) (set WZ_ESP_Staubi_Shutdown on) DOELSE (set WZ_ESP_Staubi_Shutdown off)
attr Staubi_Shutdown room DOIF
attr Staubi_Shutdown wait 5,5
Gibt es da irgendwie eine Abkürzung, oder muss ich es wirklich so umsetzen:
defmod Staubi_Shutdown DOIF ([Staubi:state] eq "Docked") or ([Staubi:state] eq "Charging") or ([Staubi:state] eq "Sleeping" and [Staubi:batteryLevel] > "90") (set WZ_Sonoff_Staubi OFF) (set WZ_ESP_Staubi_Shutdown on) DOELSE (set WZ_ESP_Staubi_Shutdown off)
attr Staubi_Shutdown room DOIF
attr Staubi_Shutdown wait 5,5
Vielen Dank!
Regex mit =~ abfragen (das hatten wir heute hier schon mal ;) )
DOIF ([Staubi:state] =~ "Docked|Charging|Sleeping" and [Staubi:batteryLevel] > "90")
Das funktioniert, vielen lieben Dank für den Tipp! :) Wieder was dazu gelernt. ;)