DOIF innerhalb von at und IF definieren

Begonnen von Tenner, 17 November 2016, 15:30:54

Vorheriges Thema - Nächstes Thema

Tenner

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

Cobra

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

Gruß Cobra
FHEM in Docker auf Synology, CCU3,
Diverse HM-Komponenten, Netatmo, Hue, Sonos, Nuki

Tenner

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

Ellert

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)