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
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.
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".