FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: WhyTea am 14 Juli 2016, 08:30:53

Titel: Rolladensteuerung mit DOIF und Twilight und IF im Ausführungsteil
Beitrag von: WhyTea am 14 Juli 2016, 08:30:53
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
Titel: Antw:Rolladensteuerung mit DOIF und Twilight und IF im Ausführungsteil
Beitrag von: Per am 14 Juli 2016, 11:20:07
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.
Titel: Antw:Rolladensteuerung mit DOIF und Twilight und IF im Ausführungsteil
Beitrag von: WhyTea am 18 Juli 2016, 11:31:58
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