Hallo
Ich habe ein Syntaxproblem mit DOIF.
define EG_AZ_nacht DOIF ([{twilight("Daemmerung","ss_civil","17:00","23:00")}]) (\
set EG_AZ_Rollade_Status_alt 0;;\
{if (Value("EG_AZ_Fenster_Status") eq "closed" && Value("EG_AZ_Rolladenautomatik") eq "on") {\
fhem("set EG_AZ_Rollade 0;; set EG_AZ_Rollade_Status 0;; set EG_AZ_Rollade_Status_alt 0")\
}}\
)
attr EG_AZ_nacht do always
Der erste Teil mit Twilight funktioniert. Der Ausführungsteil allerdings nicht. Folgende Meldung im Log:
2016.07.13 22:26:28 2: EG_AZ_nacht: set EG_AZ_Rollade_Status_alt 0; {if (Value("EG_AZ_Fenster_Status") eq "closed" && Value("EG_AZ_Rolladenautomatik") eq "on") { fhem("set EG_AZ_Rollade 0; set EG_AZ_Rollade_Status 0; set EG_AZ_Rollade_Status_alt 0") }} : Unknown command {if, try help.
Zunächst hatte ich den IF-Teil nicht in {} eingebettet was aber das gleiche Ergebnis hatte.
Ich würde mich sehr freuen wenn mir jemand mit meinem Syntaxproblem helfen würde.
Gruß
Daniel
1. Versuch mal, vor die \ ein Leerzeichen zu setzen.
2. im DOIF werden Befehle mit Komma, nicht mit Doppelsemikolon getrennt
3. statt Perl-if würde ich das Fhem-IF nehmen:
define EG_AZ_nacht DOIF ([{twilight("Daemmerung","ss_civil","17:00","23:00")}]) ( \
set EG_AZ_Rollade_Status_alt 0, \
IF ([EG_AZ_Fenster_Status] eq "closed" && [EG_AZ_Rolladenautomatik] eq "on") ( \
set EG_AZ_Rollade 0, set EG_AZ_Rollade_Status 0, set EG_AZ_Rollade_Status_alt 0) \
)
attr EG_AZ_nacht do always
Außerdem setzt du EG_AZ_Rollade_Status_alt ein- oder zweimal, je nach IF.
Danke! Es funktioniert nun wie gewünscht!
define EG_AZ_nacht DOIF ([{twilight("Daemmerung","ss_civil","17:00","23:00")}]) (\
set EG_AZ_Rollade_Status_alt 0,\
IF ([EG_AZ_Fenster_Status] eq "closed" && [EG_AZ_Rolladenautomatik] eq "on") ( \
set EG_AZ_Rollade 0, set EG_AZ_Rollade_Status 0) \
)
attr EG_AZ_nacht do always
attr EG_AZ_nacht room EG_Arbeitszimmer