FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Keule_09 am 27 Februar 2019, 21:48:19

Titel: DOIF Umsetzungsproblem für mehrere Devices
Beitrag von: Keule_09 am 27 Februar 2019, 21:48:19
Hallo

hab eine Frage zu einem DOIF das folgendermassen aussieht:

defmod autoRollBad_DOIF DOIF ([auto_rolladen_bad_fenster] eq "on"\
and\
(([auto_rolladen_zentral] eq "Sommer"\
and\
[daemmerung_messwert] ge [auto_wetterstation_daemmerung_so:state:d]\
and\
[temperatur_wetterstation] ge [auto_wetterstation_temp:state:d]\
)\
or\
(\
[auto_rolladen_zentral] eq "Winter"\
and\
[daemmerung_messwert] le [auto_wetterstation_daemmerung_wi:state:d]\
and\
[[auto_rolladen_starttime_wi]-[auto_rolladen_endtime_wi]]\
)\
)\
)\
(set rolladen_bad_fenster Nacht)
attr autoRollBad_DOIF DbLogExclude .*
attr autoRollBad_DOIF cmdpause 14400
attr autoRollBad_DOIF do always
attr autoRollBad_DOIF group Rolladenautomatik
attr autoRollBad_DOIF room Automation->DOIF


Ich möchte nun das Ganze für 9 andere Fenster/Türen auch anlegen, es ändert sich nur aber nur der fett markierte Teil: rolladen_bad_fenster und auto_rolladen_bad_fenster.
Muss ich für alle ein einzelnes DOIF anlegen oder kann man da den Code irgendwie zusammenfassen ?

Gruß Marco
Titel: Antw:DOIF Umsetzungsproblem für mehrere Devices
Beitrag von: Per am 28 Februar 2019, 13:40:41
Du kannst das auto_rolladen_bad_fenster aus der Bedingung nehmen und auf der Ausführungsseite einen Filter verwenden.
Titel: Antw:DOIF Umsetzungsproblem für mehrere Devices
Beitrag von: Damian am 28 Februar 2019, 14:00:02
Du könntest mit $DEVICE arbeiten :

defmod autorollo DOIF ( ["rolladen_.*_fenster"] and  [?auto_$DEVICE] eq "on"] ...
Titel: Antw:DOIF Umsetzungsproblem für mehrere Devices
Beitrag von: Keule_09 am 08 März 2019, 08:55:48
ok danke werde es die Tage mal ausprobieren
Titel: Antw:DOIF Umsetzungsproblem für mehrere Devices
Beitrag von: rabehd am 09 März 2019, 21:28:34
Mein Problem ist ähnlich, aber die Lösung scheint bei mir nicht zu funktionieren.
Ich möchte mit indirekten Zeiten arbeiten und habe für jedes Device ein DOIF angelegt.
Bedingungsteil:([{strftime("%H:%M",localtime([WeckerRT:aWeckTime]))}] and ($ymd eq {strftime("%Y-%m-%d", localtime([WeckerRT:aWeckTime]))}))
Es gibt die Decive WeckerRT und WeckerKT und später noch mehr.
Kann man hier auch mit Wildcards arbeiten?