Hallo,
ich zerbreche mir jetzt schon lange genug den Kopf. Hat jemand eine Idee wieso nach einmaliger Ausführung das DOIF nie wieder ausgeühft wird? Die Bedingung wird erneut wahr, jedoch hängt er seit der Beendigung wohl bei "cmd_1" fest und kommt niemals bei "cmd_2" an? Oder anders, wieso muss immer bei den Einsteigerleitfaden Beispielen explizit das DOIF aktualisiert werden? https://wiki.fhem.de/wiki/DOIF/partielle_Deaktivierung_der_Befehlsausf%C3%BChrung,_Zur%C3%BCcksetzen_eines_Wait-Timers_mit_%24SELF_oder_IsDisabled_verhindern,_im_Vergleich#:~:text=Mit%20der%20internen%20FHEM%2DFunktion,cmdState%20auf%20inactive%20gesetzt%20werden.
define verdichter_hyst_regelproblem DOIF (..... [vclient:KK_VerdichterLeistung] == 23.0) ({Log 1, "START"})(set vitoconnect XX 1)(set vitoconnect XX 2)(set vitoconnect XX 3)({Log 1, "END"})\
DOELSEIF ([$SELF] !~ "cmd_1_1|cmd_1_2|cmd_1_3|cmd_1_4") \
({Log 1, "should never happen"})
attr verdichter_hyst_regelproblem wait 0,0,300,1800,0
Ich will eigentlich nur ein DOIF das nach dem Start nicht unterbrochen werden kann , auch wenn sich Bedingungen ändern und damit der (leere) DOELSE Fall eintritt.
Grüße
Zitat von: h0nIg am 05 März 2023, 23:32:40
Hallo,
ich zerbreche mir jetzt schon lange genug den Kopf. Hat jemand eine Idee wieso nach einmaliger Ausführung das DOIF nie wieder ausgeühft wird? Die Bedingung wird erneut wahr, jedoch hängt er seit der Beendigung wohl bei "cmd_1" fest und kommt niemals bei "cmd_2" an? Oder anders, wieso muss immer bei den Einsteigerleitfaden Beispielen explizit das DOIF aktualisiert werden? https://wiki.fhem.de/wiki/DOIF/partielle_Deaktivierung_der_Befehlsausf%C3%BChrung,_Zur%C3%BCcksetzen_eines_Wait-Timers_mit_%24SELF_oder_IsDisabled_verhindern,_im_Vergleich#:~:text=Mit%20der%20internen%20FHEM%2DFunktion,cmdState%20auf%20inactive%20gesetzt%20werden.
define verdichter_hyst_regelproblem DOIF (..... [vclient:KK_VerdichterLeistung] == 23.0) ({Log 1, "START"})(set vitoconnect XX 1)(set vitoconnect XX 2)(set vitoconnect XX 3)({Log 1, "END"})\
DOELSEIF ([$SELF] !~ "cmd_1_1|cmd_1_2|cmd_1_3|cmd_1_4") \
({Log 1, "should never happen"})
attr verdichter_hyst_regelproblem wait 0,0,300,1800,0
Ich will eigentlich nur ein DOIF das nach dem Start nicht unterbrochen werden kann , auch wenn sich Bedingungen ändern und damit der (leere) DOELSE Fall eintritt.
Grüße
Wenn du nicht mit Zuständen arbeiten willst, dann solltest du DOIF im Perlmodus nutzen, dort wird nichts unterbrochen und es wird immer alles wiederholt:
https://wiki.fhem.de/wiki/DOIF/Perl-Modus
Das Konzept des DOIF im FHEM-Modus musst du dir noch mal in der Einleitung genau durchlesen, dort steht warum etwas nicht wiederholt wird und wie die wait-Timer funktionieren.
https://fhem.de/commandref_DE.html#DOIF
Zwei Stichpunkte: Selftriggerung und do always.
Zwei Lösungsansätze: einen Dummy setzen und wieder löschen oder mit AT Timer statt wait arbeiten.