FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Ralf.E am 19 April 2016, 11:26:18

Titel: DOIF wird zeitgesteuert ausgeführt?
Beitrag von: Ralf.E am 19 April 2016, 11:26:18
Moin,

ich bin gerade über ein Verhalten des DOIF's gestolpert, welches ich mir nicht genau erklären kann.

DOELSEIF( [sys_var_SetHeizungHaus] eq "home" and [00:00-16:30] and [sys_var_HeizungHaus] ne "home" )
(
   ( set sys_var_HeizungHaus $EVENT)
)


Obiges DOELSEIF wird jedesmal um 00:00 ausgeführt, was aber nicht beabsichtigt ist. Beabsichtigt ist, dass nur ein Event von 'sys_var_SetHeizungHaus' in der Zeit von 00:00-16:30 und mit der Randbedingung '[sys_var_HeizungHaus] ne "home"' zur Ausführung des Zweiges führt.

'sys_var_SetHeizungHaus = home' und '[sys_var_HeizungHaus] ne "home"' können beim Auslösen des Timers vom aktuellen Status durchaus zutreffen.

Ich denke folgende Änderung (Fragezeichen) könnte zum beabsichtigten Verhalten führen, aber ich möchte gerne verstehen was beim obigen Beispiel passiert:
DOELSEIF( [sys_var_SetHeizungHaus] eq "home" and [?00:00-16:30] and [?sys_var_HeizungHaus] ne "home" )
(
   ( set sys_var_HeizungHaus $EVENT)
)


Danke
Ralf
Titel: Antw:DOIF wird zeitgesteuert ausgeführt?
Beitrag von: CoolTux am 19 April 2016, 11:53:02

DOELSEIF( [sys_var_SetHeizungHaus] eq "home" and [?00:00-16:30] and [?sys_var_HeizungHaus] ne "home" ) ( set sys_var_HeizungHaus $EVENT)


Keine Ahnung ob Du Klammergeil bist aber ich habe da mal bisschen gekürzt.
Das Fragezeichen bedeutet das nicht getriggert wird sondern nur eine Abfrage erfolgt.
Titel: Antw:DOIF wird zeitgesteuert ausgeführt?
Beitrag von: Per am 19 April 2016, 12:18:07
Zitat von: reb am 19 April 2016, 11:26:18aber ich möchte gerne verstehen was beim obigen Beispiel passiert
0:00 wird ein Event ausgelöst, alle Bedingungen passen und DOELSEIF löst aus.
Allerdings ist $EVENT in dem Moment 0:00 (wobei ich die Schreibweise gerade nicht prüfen kann), wird also nicht das gewünschte Ergebnis bringen.
Bei der Abfrage mit den Fragezeichen ist $EVENT natürlich "home" (darauf prüfst du ja explizit), daher kannst du im Ausführungsteil auch
(set sys_var_HeizungHaus home)
"fest verdrahten".