Heizungen automatisiert ein- und ausschalten
Du willst deine Heizungsthermostate automatisiert steuern über Tür und Fensterkontakte in Home Assistant? Ich zeig dir wie es geht 🎉
Seit dem ich mein zuhause nun überall mit smarten Thermostaten ausgerüstet habe und alle Fenster mit entsprechenden Kontakten von Aqara versehen habe, stellt sich nun die Frage, wie ich am geschicktesten die Thermostate schalten kann, sobald ein Fenster geöffnet wird.
Warum das ganze? 🤔
Als ich noch im Ökosystem von AVM unterwegs war, bot es sich an auch von AVM entsprechende Thermostate zu holen. Das klappte auch sehr gut. Aber, der "Lüftungsmodus" klappt mit den Thermostaten im Altbau recht schlecht. Darum musste ich das über Home Assistant automatisieren.
Voraussetzungen 📃
Damit das klappt, solltest du zum einen Heizkörper-Thermostate haben und entsprechende Tür- bzw. Fensterkontakte haben. Von welchem Hersteller ist erst einmal egal, Hauptsache sie sind schon in Home Assistant eingebunden.
Dann solltest du entsprechende Räume als "Areas" in Home Assistant anlegen und die Sensoren als auch Thermostate diesen Bereichen zuweisen.
Die Automation 🤖
Ist alles getan, legst du eine neue Automation an, die den nachfolgenden Inhalt hat. Bitte passe die entsprechende Zeilen an:
- binary_sensor.fenster_badezimmer
- binary_sensor.fenster_wohnzimmer
- binary_sensor.fenster_kinderzimmer
- binary_sensor.fenster_schlafzimmer
Diese Liste sollte deine binary_sensor
der Fenster- und Türkontakte enthalten.
alias: Heizung aus wenn Fenster auf
description: ""
trigger:
- platform: state
to:
- "on"
- "off"
entity_id:
- binary_sensor.fenster_badezimmer
- binary_sensor.fenster_wohnzimmer
- binary_sensor.fenster_kinderzimmer
- binary_sensor.fenster_schlafzimmer
condition: []
action:
- variables:
area: "{{ area_name(trigger.entity_id) }}"
targets: >
{{ expand(area_entities(area)) | selectattr('domain','eq','climate') |
map(attribute='entity_id') | join(',') }}
- choose:
- conditions:
- condition: template
value_template: "{{ trigger.to_state.state == 'on' }}"
sequence:
- service: scene.create
data:
scene_id: thermostat_settings_{{area | lower}}
snapshot_entities: "{{ targets }}"
- delay: 5
- service: climate.turn_off
target:
entity_id: "{{ targets }}"
- service: notify.notify
data:
title: "{{ state_attr(trigger.entity_id, 'friendly_name') }} geöffnet"
message: Heizungen in {{ area }} abgeschaltet
- conditions:
- condition: template
value_template: "{{ trigger.to_state.state == 'off' }}"
sequence:
- service: scene.turn_on
target:
entity_id: scene.thermostat_settings_{{area | lower}}
- service: notify.notify
data:
title: "{{ state_attr(trigger.entity_id, 'friendly_name') }} geschlossen"
message: Heizungen in {{ area }} eingeschaltet
mode: parallel
max: 10
Eigentlich ist die Automation recht simpel, denn sie macht folgendes:
- Variablen-Zuweisung:
- area = Der auslösende Bereich
- targets = Alle Entitäten mit der Domain
climate
, Rückgabe nur dieentity_id
und getrennt mit Komma
- Kondition wenn wenn der State der Entität
on
ist:- Die Sequenz ausführen:
- Anlage einer Szene zum Zwischenspeichern des aktuellen Status des Thermostates
- 5 Sekunden warten
- Service
climate.turn_off
ausführen mit der/den ermittelten Entität(en) - Benachrichtigung senden
- Die Sequenz ausführen:
- Kondition wenn wenn der State der Entität
off
ist:- Die Sequenz enthält:
- Einschalten der zuvor gespeicherten Szene (Zurücksetzen des Status vor Öffnen der Fenster)
- Die Sequenz enthält:
- Service
climate.turn_off
ausführen mit der/den ermittelten Entität(en) - Benachrichtigung senden