FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Tenner am 17 November 2016, 15:30:54

Titel: DOIF innerhalb von at und IF definieren
Beitrag von: Tenner am 17 November 2016, 15:30:54
Hallo,

Ich versuche ein DOIF in einem AT mit IF-ELSE im ELSE-Zweig anzulegen. Jedoch gibt es immer dann die Fehlermeldung " DOIF: no trigger in condition: (open eq "closed") ", wenn das Fenster "open" ist, der ELSE-Fall eintritt und das DOIF angelegt werden soll.
Hier ist mein Code aus der fhem.cfg:
define Heizung_rauf_Wohnzimmer at *08:30:00 \
IF ([Heizung_wohnzimmer] < 19.0) (\
   IF ([Wohnzimmerfenster:state] eq "closed") \
      (set Heizung_wohnzimmer 19.0)\
   ELSE ( \
    define Heizung_rauf_Wohnzimmer_01 DOIF \
    ([Wohnzimmerfenster:state] eq "closed") \
        (set Heizung_wohnzimmer 19.0 , \
        delete Heizung_rauf_Wohnzimmer_01 ) \
  ) \
)


Ich denke, dass ich die Bedingung für das DOIF irgendwie kapseln muss, fhem scheint "[Wohnzimmerfenster:state]" direkt mit "open" zu ersetzen.
Der andere Fall, wenn das Fenster "closed" ist, funktioniert.

Was ich erreichen möchte:
Täglich um 8:30 soll die Heizung auf 19.0 °C gestellt werden, wenn die eingestellte Temeratur kleiner als 19.0 ist. Wenn aber das Fenster offen ist, dann soll die Heizung nach dem Schließen des Fensters auf 19.0 gestellt werden.

Vielen Dank schonmal und viele Grüße,
Tenner
Titel: Antw:DOIF innerhalb von at und IF definieren
Beitrag von: Cobra am 17 November 2016, 15:35:04
Hast du dir schon einmal das Modul HeatingControll angeschaut, das dürfte ja perfekt dafür gemacht sein :-)

http://fhem.de/commandref_DE.html#Heating_Control (http://fhem.de/commandref_DE.html#Heating_Control)

Gruß Cobra
Titel: Antw:DOIF innerhalb von at und IF definieren
Beitrag von: Tenner am 17 November 2016, 15:43:32
Hallo Cobra,

vielen Dank, das Modul kannte ich noch nicht, sieht ja so aus, als ob ich genau das brauche ;)
Ich wede mich da mal reinlesen...

Viele Grüße,
Tenner
Titel: Antw:DOIF innerhalb von at und IF definieren
Beitrag von: Ellert am 17 November 2016, 19:34:54
Zitat von: Tenner am 17 November 2016, 15:30:54
Hallo,

Ich versuche ein DOIF in einem AT mit IF-ELSE im ELSE-Zweig anzulegen. Jedoch gibt es immer dann die Fehlermeldung " DOIF: no trigger in condition: (open eq "closed") ", wenn das Fenster "open" ist, der ELSE-Fall eintritt und das DOIF angelegt werden soll.
Hier ist mein Code aus der fhem.cfg:
define Heizung_rauf_Wohnzimmer at *08:30:00 \
IF ([Heizung_wohnzimmer] < 19.0) (\
   IF ([Wohnzimmerfenster:state] eq "closed") \
      (set Heizung_wohnzimmer 19.0)\
   ELSE ( \
    define Heizung_rauf_Wohnzimmer_01 DOIF \
    ([Wohnzimmerfenster:state] eq "closed") \
        (set Heizung_wohnzimmer 19.0 , \
        delete Heizung_rauf_Wohnzimmer_01 ) \
  ) \
)


Ich denke, dass ich die Bedingung für das DOIF irgendwie kapseln muss, fhem scheint "[Wohnzimmerfenster:state]" direkt mit "open" zu ersetzen.
Der andere Fall, wenn das Fenster "closed" ist, funktioniert.

Was ich erreichen möchte:
Täglich um 8:30 soll die Heizung auf 19.0 °C gestellt werden, wenn die eingestellte Temeratur kleiner als 19.0 ist. Wenn aber das Fenster offen ist, dann soll die Heizung nach dem Schließen des Fensters auf 19.0 gestellt werden.

Vielen Dank schonmal und viele Grüße,
Tenner
DOIF ist ein Modul und kein Befehl, den Du im at, notify einsetzen kannst.
Es muss daher ein DOIF-Gerät definiert werden.

Für Dein Beispiel etwa so
define Heizen_di DOIF ([08:30-00:00] and [Heizung_wohnzimmer] < 19.0 and [Wohnzimmerfenster:state] eq "closed") (set Heizung_wohnzimmer 19.0)