FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: bjoernbo am 10 September 2015, 08:16:22

Titel: Heizungssteuerung mit DOIF
Beitrag von: bjoernbo am 10 September 2015, 08:16:22
Hallo zusammen,

ich habe mich seit kurzem mal mit der Funktion DOIF auseinander gesetzt und hierzu eine Frage, da ich leider nicht weiterkomme.
Ich habe im Garten "Aussen" eine NetatmoWetterstation. Ich möchte nun, dass wenn die Außentemperatur unter <= 10 Grad ist die Heizung im Wohnzimmer angeht. Vom ControlMode "manual" in "auto" wechselt.

define hzg_wohnzimmer DOIF ([Aussen:temperature] <= 10) (set Wohnzimmer.Wandthermostat:controlMode "auto") DOELSEIF
(Wohnzimmer.Wandthermostat:controlMode "manual")


1. ich bekomme folgende Meldung
Zitathzg_wohnzimmer DOIF: no trigger in condition: Wohnzimmer.Wandthermostat:controlMode "manual"

2. habe ich in der CommandRef gelesen das dies nicht so sinnvoll ist und ich mit "alwaysOn" arbeiten soll!?

Könnte mir jem. weiterhelfen? Vielen Dank!

Titel: Antw:Heizungssteuerung mit DOIF
Beitrag von: Brockmann am 10 September 2015, 09:38:03
Es muss am Ende entweder DOELSEIF(Bedingung)(Aktion) oder DOELSE(Aktion) heißen, also in dem Fall vermutlich

define hzg_wohnzimmer DOIF ([Aussen:temperature] <= 10) (set Wohnzimmer.Wandthermostat:controlMode "auto") DOELSE
(set Wohnzimmer.Wandthermostat:controlMode "manual")
Titel: Antw:Heizungssteuerung mit DOIF
Beitrag von: bjoernbo am 10 September 2015, 12:49:22
Danke Brockmann, die Einbindung hat jetzt funktioniert, allerdings bekomme ich nicht das gewünschte Ergebnis.
(Habe den Wert für die Temperatur mal auf 20 Grad gesetzt in der Hoffnung das sich dadurch der Status ändert, leider nicht) :-[+
Zitat([Aussen:temperature] < 20) (set Wohnzimmer.Wandthermostat:controlMode eq "auto") DOELSE (set Wohnzimmer.Wandthermostat:controlMode eq "manual")
Titel: Antw:Heizungssteuerung mit DOIF
Beitrag von: Brockmann am 10 September 2015, 13:26:25
Das liegt daran, dass Du da - warum auch immer - "eq"s eingefügt hast, die da nichts zu suchen haben.
Titel: Antw:Heizungssteuerung mit DOIF
Beitrag von: SvenJust am 10 September 2015, 13:28:17
([Aussen:temperature] < 20) (setreading Wohnzimmer.Wandthermostat controlMode auto) DOELSE (setreading Wohnzimmer.Wandthermostat controlMode manual)ungetestet

...da war jemand schneller...
Titel: Antw:Heizungssteuerung mit DOIF
Beitrag von: bjoernbo am 10 September 2015, 13:44:41
Danke für die schnelle Unterstützung. Leider ohne Erfolg. Kann es ggf. daran liegen, dass ich bei der Netatmo-Wetterstation den Alias Namen verwende???
Ps: Die Wetterstation zeigt aktuell 16.7 Grad an :-)
Titel: Antw:Heizungssteuerung mit DOIF
Beitrag von: Brockmann am 10 September 2015, 13:52:07
Zitat von: bjoernbo am 10 September 2015, 13:44:41
Kann es ggf. daran liegen, dass ich bei der Netatmo-Wetterstation den Alias Namen verwende???
Ja. Das DOIF reagiert auf Events, die das entsprechende Device triggert. Dabei kannst Du Dich am Event monitor orientieren. Nur was da drin steht, triggert auch ein DOIF. Und Aliase tauchen im Event monitor nicht auf.

Generell bei Frage zu DOIFs möglichst ein list <Name des DOIFs> machen und mitposten. Am Besten in dem Moment, wo das DOIF sich nicht so wie erwartet verhält. Das beschleunigt die Ursachenforschung.

Titel: Antw:Heizungssteuerung mit DOIF
Beitrag von: bjoernbo am 10 September 2015, 14:00:17
Dann weiß ich wo mein Problem liegt: Die Netatmo hat als NAME
Zitatnetatmo_M02:00:00:00:24:a2
und die Doppelpunkte werden bei der Anlage von doif als Zeitparameter interpretiert.
Zitathzg_wohnzimmer DOIF: unknown expression format: 00



list:
ZitatInternals:
   DEF        ([Aussen:temperature] < 20) (setreading Wohnzimmer.Wandthermostat controlMode auto) DOELSE (setreading Wohnzimmer.Wandthermostat controlMode manual)
   NAME       hzg_wohnzimmer
   NR         327
   NTFY_ORDER 50-hzg_wohnzimmer
   STATE      initialized
   TYPE       DOIF
   Readings:
     2015-09-10 13:59:57   state           initialized
   Devices:
   Helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   Itimer:
   State:
   Timerfunc:
Attributes:
   loglevel   1
   room       Wohnzimmer
Titel: Antw:Heizungssteuerung mit DOIF
Beitrag von: Brockmann am 10 September 2015, 14:15:23
Dann musst Du das Device umbenennen (rename-Kommando). Wenn da noch Filelogs, SVGs usw. dranhängen, musst Du das allerdings alles manuell nachziehen.
Deshalb benennen ich Device immer von Anfang an sinnvoll bzw. benennen automatisch erzeugte ggf. um. Alias verwende ich gar nicht mehr.

Im list sieht man, dass das DOIF noch nie getriggert wurde, aber Du hast ja selbst erkannt, warum.