Fenster steuert Heizkörper
Wie ich schon in meinem Artikel über mein Smarthomesetup geschrieben habe, sind die Automationen das, was ein Smarthome erst smart macht. Hier beschreibe ich, wie ich den Heizkörper herunterregle, wenn das Fenster geöffnet wird und wieder zurückstelle, wenn das Fenster geschlossen wird.
Update vom 13.01.2021: Mittlerweile lasse ich die Automation nicht mehr über Node-Red laufen, sondern nutze dafür die in Home Assistant eingebauten Automationen.
Beteiligte Komponenten
Das Fenster wird mit einem Xiaomi Aqara Tür-/Fensterkontakt überwacht. Der sendet den Status per Zigbee an den Conbee Stick. Der Conbee ist per Deconz in Home Assistant eingebunden.
Am Heizkörper ist ein Homematic Heizkörperthermostat montiert. Als Homematiczentrale läuft bei mir ein Raspberry Pi mit Raspberrymatic. Die Thermostate stehen immer auf manuell, weil sie ausschließlich über Home Assistant gesteuert werden.
Die Absenktemperatur wird über eine input_number Entity eingestellt.
Automation in Home Assistant
Ich habe für jedes Fenster eine Automation erstellt. Die Automation läuft im Modus Neu Starten, weil ich eine Warten-Aktion verwende und gegebenenfalls noch laufende Instanzen der Automation so abgebrochen werden.
Der Auslöser ist ganz einfach: Wenn der Fensterkontakt den Zustand zu on
wechselt, ist das Fenster geöffnet und die Automation soll starten.
Ich habe hier noch eine Bedingung eingefügt, dass meine Heizungsanlage laufen muss. Wenn im Sommer die Heizung ausgeschaltet ist, soll die Automation nicht am Heizkörper rumdrehen.
Nun folgen die Aktionen, die ausgeführt werden sollen. Als erstes wird eine temporäre Szene erstellt, in der der Zustand des Thermostaten gespeichert wird.
Dafür wird der Dienst scene.create
aufgerufen und eine scene_id
sowie die Entities übergeben.
Als nächstes wird der Dienst climate.set_temperature
aufgerufen. Die Temperatur ist nicht fest eingetragen, sondern wird mit Hilfe eines Templates aus dem input_number-Helfer ausgelesen.
Danach wird eine Auf Auslöser warten Aktion gestartet, die die Automation pausiert bis der Fensterkontakt wieder geschlossen meldet. Es ist kein Timeout eingetragen, so dass die Automation theoretisch ewig aktiv bleibt.
Wenn das Fenster wieder geschlossen ist, folgt als letzte Aktion das Aktivieren der vorher gespeicherten Szene.
Hier noch die Automation als YAML zum Importieren:
|
|
NodeRed (nicht mehr genutzt)
Die Automation ist in NodeRed umgesetzt und besteht aus sechs Nodes.
Die state node „Fenster“ reagiert auf einen Zustandswechsel des Fensterkontakts.
Die switch node verzweigt je nach Zustand in den oberen oder unteren Weg. Der Binäre Sensor des Fensterkontakts hat den Zustand on
, wenn das Fenster geöffnet ist, und off
, wenn das Fenster geschlossen ist.
Wenn das Fenster geöffnet wurde, wird als erstes der aktuelle Zustand des Thermostat mit der call service node in einer temporären Szene gespeichert. Im Data Feld muss der Name der Szene und eine Liste der zu speichernden Entities übergeben werden.
|
|
Als nächstes wird der Wert der input_number Entity mit einer current state node ausgelesen.
Zuletzt wird der Thermostat mit einer call service node auf den ausgelesenen Wert gesetzt. Dafür wird im Data Feld {{payload}}
als Template verwendet.
|
|
Beim Schließen des Fensters wird die vorher gespeicherte Szene mit einer weiteren call service node aktiviert. Hier muss nur der Name der Szene im Data Feld übergeben werden.
|
|
Solch einen Flow gibt es für jedes Zimmer, in dem ein smarter Thermostat montiert ist. Der Vorteil dieser Methode mit temporärer Szene liegt in der Erweiterbarkeit. Wenn weitere Entities berücksichtigt werden sollen, müssen sie nur an einer Stelle hinzugefügt werden.
Hier noch der komplette Flow zum importieren:
|
|