Autor Thema: Rollos Automatisieren mit DOIF  (Gelesen 388 mal)

Offline muechris

  • Newbie
  • Beiträge: 2
Rollos Automatisieren mit DOIF
« am: 26 Juni 2021, 14:56:20 »
Hallo,

ich hänge seit Tagen an meinem ersten DOIF zur Schlafzimmer Rollo Steuerung es soll auf gehen "wenn es hell wird" (dieser erste Zweig funtkioniert)!
Es gibt einen dummy Helligkeit der zwischen "hell" und "dunkel" wechselt und ein Fenster Sensor der "auf" und "zu" erkennt.
Jetzt soll der Rollo runter fahren wenn es "dunkel" wird und das Fenster "zu" ist. War das Fenster noch "auf" soll nichts passieren, wird das Fenster später geschlossen soll der Rollo dann runter fahren.
Ist es noch dunkel und der Rollo ist unten soll der Rollo auf auf eine Position zum Lüften fahren wenn das Fenster geöffnet wird.

Das habe ich so gelöst:
([Helligkeit:"hell"]) (set DUOFERN_492A6D up)
DOELSEIF ([Helligkeit:"dunkel"] and [Schlafzimmerfenster:"zu"]) (set DUOFERN_492A6D down)
DOELSEIF ([Schlafzimmerfenster:"auf"] and [Helligkeit:"dunkel"] and [DUOFERN_492A6D:"closed"]) (set DUOFERN_492A6D position 70)

Was mache ich falsch?
DOELSEIF ([Helligkeit:"dunkel"]) (set DUOFERN_492A6D down) funktioniert
([Schlafzimmerfenster:"zu"]) (set DUOFERN_492A6D down) funktioniert
packe ich das "and" dazwischen klappt es nicht.  :'(



Raw definition:
defmod Schlafzimmer_Rollo_Automatik DOIF ([Helligkeit:"hell"]) (set DUOFERN_492A6D up)\
DOELSEIF ([Helligkeit:"dunkel"] and [Schlafzimmerfenster:"zu"]) (set DUOFERN_492A6D down)\
DOELSEIF ([Schlafzimmerfenster:"auf"] and [Helligkeit:"dunkel"] and [DUOFERN_492A6D:"closed"]) (set DUOFERN_492A6D position 70)
attr Schlafzimmer_Rollo_Automatik do always

setstate Schlafzimmer_Rollo_Automatik initialized
setstate Schlafzimmer_Rollo_Automatik 2021-06-26 14:43:40 cmd 0
setstate Schlafzimmer_Rollo_Automatik 2021-06-26 14:43:40 mode enabled
setstate Schlafzimmer_Rollo_Automatik 2021-06-26 14:43:40 state initialized
« Letzte Änderung: 26 Juni 2021, 14:59:29 von muechris »
Komm auf die dunkle Seite! Wir haben Kekse!

Online Damian

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8684
Antw:Rollos Automatisieren mit DOIF
« Antwort #1 am: 26 Juni 2021, 17:08:49 »
Zitat aus der Commandref zu DOIF: https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events

Zitat
In diesem Beispiel wird nach dem Vorkommen von "on" innerhalb des Events gesucht. Falls "on" gefunden wird, wird der Ausdruck wahr und der if-Fall wird ausgeführt, ansonsten wird der else-if-Fall entsprechend ausgewertet. Die Auswertung von reinen Ereignissen bietet sich dann an, wenn ein Modul keinen Status oder Readings benutzt, die man abfragen kann, wie z. B. beim Modul "sequence". Die Angabe von regulären Ausdrücken kann recht komplex werden und würde die Aufzählung aller Möglichkeiten an dieser Stelle den Rahmen sprengen. Weitere Informationen zu regulären Ausdrücken sollten in der Perl-Dokumentation nachgeschlagen werden. Die logische Verknüpfung "and" mehrerer Ereignisse ist nicht sinnvoll, da zu einem Zeitpunkt immer nur ein Ereignis zutreffen kann.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline muechris

  • Newbie
  • Beiträge: 2
Antw:Rollos Automatisieren mit DOIF
« Antwort #2 am: 26 Juni 2021, 17:56:55 »
Vielen Dank Damian, manchmal braucht man nur einen Schubs in die richtige Richtung. ([event] and [event]) war der Denkfehler habe es auf ([event] and [state]) geändert jetzt scheint es zu funktionieren. ;D

Vielleicht hilft das mal jemandem:
([Helligkeit:"hell"]) (set DUOFERN_492A6D up)
DOELSEIF (([Helligkeit:"dunkel"] and [Schlafzimmerfenster:state] eq "zu") or ([Schlafzimmerfenster:"zu"] and [Helligkeit:state] eq "dunkel")) (set DUOFERN_492A6D down)
DOELSEIF ([Schlafzimmerfenster:"auf"] and [Helligkeit:state] eq "dunkel" and [DUOFERN_492A6D:state] eq "closed") (set DUOFERN_492A6D position 70)
« Letzte Änderung: 29 Juni 2021, 20:22:51 von muechris »
Komm auf die dunkle Seite! Wir haben Kekse!