Heizungen automatisiert ein- und ausschalten
Tags: homeassistant, smarthome, automation, automatisiert
Published: 2023-12-22 20:58:37

![](https://blog.disane.dev/content/images/2023/12/heizungen_ein-und-ausschalten-wenn-fenster-auf-oder-zu_banner-1.jpeg)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:

```yaml
- 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.

```yaml
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 die `entity_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
* 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)
      * Service `climate.turn_off`ausführen mit der/den ermittelten Entität(en)
      * Benachrichtigung senden

---

If you like my posts, it would be nice if you follow my [Blog](https://blog.disane.dev) for more tech stuff.