Mehrere Aktionen ausführen, DOIF

Begonnen von UweUwe, 05 April 2020, 20:13:35

Vorheriges Thema - Nächstes Thema

UweUwe

Hallo,
habe ein DOIF, das inhaltlich funktioniert und mehere Aktionen absetzen soll.
Es ist ein sehr einfaches DOIF, das ich weiter ausbauen möchte, sobald die Grundstruktur funktiuoniert.
Sobald mehrere Bedingungen erfüllt sind. sollen 4 Rolläden auf unterschiedliche Positionen fahren.
Die Bedingungen werden richtig ausgewertet, aber nur die erste von 4 Aktionen wird regelmässig (1 x pro Tag, was ok ist) ausgeführt.
Ich vermute, dass es ein Syntax Thema mit den ; (Semikolon) ist.
Folgende Vorlage aus dem Wiki habe ich verwendet:
ZitatAllgemeines:
      Mehrere Aktionen ausführen
      Die Verwendung der Semikolon erfordert immer besondere Aufmerksamkeit!
         • set lampe1 on ; set lampe2 on → Schaltet sofort beide Lampen ein ( ein bisschen OT, weil kein at)
         • define morgens at *7:00:00 set lampe1 on ; set lampe2 on → schaltet lampe 1 immer um 7 an, aber lampe2 sofort. Der erste Befehl landet in der config (im at) der zweite Befehl wird genau wie der define Befehl einfach sofort ausgeführt.
         • define morgens at *7:00:00 set lampe1 on ;; set lampe2 on → schaltet BEIDE Lampen immer um 7 an. Beide Befehle landen in der config (im at), nur der define Befehl wird ausgeführt
define morgens at *7:00:00 set lampe1,lampe2 on → schaltet BEIDE Lampen immer um 7 an. Geht nur wenn der gleiche Befehl an 2 oder mehr Geräte gesendet werden soll
Mein DOIF lautet:
define WohnenBeschatten DOIF ([Wzimmertemperatur:measured-temp] > 21 and [8:00 - 20:00] ) ((set RolladenWohnzimmerOst pct 50 ;; set RolladenWohnzimmerSued pct 60 ;; set RolladenEsszimmerSued pct 30 ;; set RolladenEsszimmerWest pct 70 )) Im logfile sehe CUL_HM set RolladenWohnzimmerOst pct 50 ; set RolladenWohnzimmerSued pct 60 ; set RolladenEsszimmerSued pct 30 ; set RolladenEsszimmerWest pct 70 Nur die erste Funktion: set RolladenWohnzimmerOst pct 50 wird ausgeführt. Keine Fehlermeldung.
Wo ist mein Fehler?

moskito

Bei DOIF werden die Kommandos mit Komma getrennt.
Die Syntax ist beim DOIF Modul zum Teil etwas anders, deshalb am besten in der Modulhilfe nachschauen.

ZitatAngaben im Ausführungsteil (gilt nur für FHEM-Modus):   back

Der Ausführungsteil wird durch runde Klammern eingeleitet. Es werden standardmäßig FHEM-Befehle angegeben, wie z. B.: ...(set lamp on)

Sollen mehrere FHEM-Befehle ausgeführt werden, so werden sie mit Komma statt mit Semikolon angegeben ... (set lamp1 on, set lamp2 off)

Gruß
Danny
FHEM auf Intel NUC/Proxmox & Debian 12 + HM-CFG-USB + zigbee2mqtt + Zwave + Enocean

UweUwe

Danke für die Hilfe, damit sollte das DOIF so aussehen:

define WohnenBeschatten DOIF ([Wzimmertemperatur:measured-temp] > 21 and [8:00 - 20:00] ) (set RolladenWohnzimmerOst pct 50 , set RolladenWohnzimmerSued pct 60 , set RolladenEsszimmerSued pct 30 , set RolladenEsszimmerWest pct 70 ))

Vielen Dank für ein Ok.
Merci

moskito

Sollte so passen, allerdings ist ganz zum Schluß noch eine Klammer zuviel.  :)
FHEM auf Intel NUC/Proxmox & Debian 12 + HM-CFG-USB + zigbee2mqtt + Zwave + Enocean