FHEM: Raumsteuerung auf DOIF umgestellt

Von | 17. August 2020

Bisher lief die Einstellung der Temperatur der Thermostate immer über Notify. Dabei zeigte sich aber zunehmend ein Problem. Wenn zum Beispiel das Fenster offen ist und sich dann der Home-Status ändert, wird die Temperatur trotzdem gesendet und die Fenster-Offen-Temperatur übersteuert.

Um das Problem zu umgehen, hätte ich unzählige Notify anlegen müssen. Mit DOIF reicht eine Schleife pro Raum.

defmod doif_Temp_Computerzimmer DOIF ([HM_6591A8:state] eq "closed" and [p_Eltern:state] eq "present" and [HomeStatus:state] == 1) (set HM_5029B4_Clima controlManu 21.0) \
DOELSEIF ([HM_6591A8:state] eq "closed" and [p_Eltern:state] eq "absent" and [HomeStatus:state] <3) (set HM_5029B4_Clima controlManu 19.0) \
DOELSEIF ([HM_6591A8:state] eq "closed" and [HomeStatus:state] == 2) (set HM_5029B4_Clima controlManu 19.0) \
DOELSEIF ([HM_6591A8:state] eq "open") (set HM_5029B4_Clima controlManu 12.0)
attr doif_Temp_Computerzimmer room Computerzimmer

hier kann ich jetzt für jeden Raum die Temperatur steuern. Auch wird hier das offene Fenster berücksichtigt. Wichtig zum Verständnis: DOIF läuft nicht ständig in einer Schleife, sondern nur wenn Sie getriggert wird. Trigger sind hier nur die Geräte im DOIF selbst:

NOTIFYDEVHM_6591A8,HomeStatus,p_Eltern,global

Erklärung:

HomeStatus == 1 bedeutet Tag

HomeStatus == 2 Nacht

HomeStatus == 3 & 4 Abwesenheit bzw. Urlaub

p_Eltern:state ist der Status der Anwesenheit (structure von mehreren G-TAGs und Handy)

HM_6591A8:state ist ein Fensterkontakt

Natürlich lässt sich die Logik noch weiter ausbauen, aber fürs erste läuft es jetzt wie gewünscht.