Fenster öffnet, Heizung stoppt — Ein Blueprint für jedes Zimmer
Wie ich den Heizkörper in Louises Zimmer automatisiert habe — aus wenn das Fenster auf ist, an wenn es geschlossen wird — als wiederverwendbares Blueprint damit das nächste Zimmer 30 Sekunden dauert.
Der Heizkörper in Louises Zimmer lief auf Hochtouren — bei offenem Fenster. Sie ist fast zwanzig, und daran zu denken das Fenster zu schließen passiert nicht zuverlässig. Ich bemerkte dass das Fenster eine Stunde offen gestanden hatte, Heizung an, Außentemperatur um die 4°C. Kein Drama, aber eine vorhersehbare Verschwendung die sich wiederholen würde — Geld zum Fenster hinauswerfen, buchstäblich.
Die Lösung war ein Fenstersensor und eine einzige Home Assistant-Automatisierung. Die extra Stunde investierte ich darin sie als Blueprint zu bauen — damit das nächste Zimmer 30 Sekunden braucht, nicht einen weiteren Nachmittag.
Hardware: IKEA Fenstersensor + Mill-Heizkörper
Ein IKEA MYGGBETT Tür-/Fenstersensor an Louises Fenster (binary_sensor.myggbett_door_window_sensor_door). Der Heizkörper ist ein Erstgenerations-Mill-Gerät — climate.louise — das nur zwei Modi unterstützt: heat und off. Das gleiche Erstgenerationsmodell steht auch in meinem Büro.
Das Schlafzimmer und die Küche laufen mit neueren Mill-Heizkörpern mit mehr HVAC-Modi. Das Blueprint behandelt sie alle — es speichert den genauen Zustand vor dem Ausschalten und stellt ihn beim Schließen des Fensters präzise wieder her, unabhängig von Modus oder Temperatur.
Das Wohnzimmer hat eine Daikin-Wärmepumpe die über Tado gesteuert wird — eine andere Integration mit eigenen Modi. Die bekommt ihren eigenen Ansatz.
Mill hat eine eingebaute Offenes-Fenster-Erkennung, die aber über Temperaturabfall funktioniert — langsam und blind für kurze Öffnungen. Der MYGGBETT-Sensor reagiert sofort und präzise.

Das Home Assistant Blueprint aufbauen
Anstatt Louises Entities fest zu kodieren habe ich die Logik als Blueprint unter /config/blueprints/automation/homeassistant/window_heating_control.yaml gebaut. Die Eingabefelder nehmen einen Fenstersensor, eine Climate-Entity und eine konfigurierbare Verzögerung:
blueprint:
name: "Fenster → Heizung aus"
domain: automation
input:
window_sensor:
selector:
entity:
domain: binary_sensor
device_class: window
climate_entity:
selector:
entity:
domain: climate
delay_minutes:
default: 1
selector:
number:
min: 0
max: 10
unit_of_measurement: min
Die Automatisierungsinstanz für Louises Zimmer sind drei Zeilen:
- alias: "Fenster → Heizung: Louises Zimmer"
use_blueprint:
path: homeassistant/window_heating_control.yaml
input:
window_sensor: binary_sensor.myggbett_door_window_sensor_door
climate_entity: climate.louise
delay_minutes: 1
Zustand speichern und wiederherstellen
Das Blueprint schaltet den Heizkörper nicht einfach aus — es speichert zuerst den genauen Zustand über eine dynamische Szene:
- action: scene.create
data:
scene_id: "{{ this.entity_id | replace('automation.', '') }}"
snapshot_entities:
- !input climate_entity
- action: climate.set_hvac_mode
target:
entity_id: !input climate_entity
data:
hvac_mode: "off"
Die Szenen-ID wird aus der eigenen Entity-ID der Automatisierung abgeleitet — eindeutig pro Instanz, keine manuelle Benennung nötig. Wenn das Fenster schließt, stellt das Blueprint genau diese Szene wieder her:
- action: scene.turn_on
target:
entity_id: "scene.{{ this.entity_id | replace('automation.', '') }}"
continue_on_error: true
Das bedeutet es stellt wieder her was der Heizkörper gerade tat — 18°C, 22°C, bereits aus — nicht nur einen fest kodierten heat-Modus. continue_on_error: true behandelt den Fall bei dem das Fenster schließt bevor die Automatisierung jemals ausgelöst wurde (noch kein Snapshot vorhanden).
Die 1-Minuten-Verzögerung
for: minutes: !input delay_minutes am Geöffnet-Trigger macht das praktisch nutzbar. Wenn das Fenster aufgeht startet HA intern einen Countdown. Schließt das Fenster bevor die Minute abgelaufen ist, wird der Trigger abgebrochen — die Automatisierung läuft überhaupt nicht. Ein kurzes Lüften schaltet die Heizung nicht ab.
mode: restart behandelt den Grenzfall in dem ein Schließen-Trigger eintrifft während ein Geöffnet-Trigger noch herunterzählt. Der Schließen-Trigger gewinnt sofort und schaltet die Heizung wieder ein — keine Warteschlange, keine Race Condition.
Benachrichtigungen
Wenn die Heizung abschaltet passieren zwei Dinge: eine Push-Benachrichtigung geht über notify.alle_enheder an alle Geräte, und eine Sprachansage wird auf dem Küchenlautsprecher abgespielt:
- action: notify.alle_enheder
data:
title: "Fenster offen 🪟"
message: "Louises Fenster steht seit 1 Minute offen — Heizung ist aus"
- action: tts.cloud_say
target:
entity_id: media_player.hojtaler_kokken
data:
message: "Louises Fenster ist offen. Die Heizung ist aus."
language: da-DK
Die Dashboard-Karte
Die AlertTicker-Karte (custom:alert-ticker-card) erkennt Fenstersensoren automatisch über device_class: window — keine manuelle Entity-Liste, deckt also auch später hinzugefügte Sensoren ab:
type: custom:alert-ticker-card
show_when_clear: true
clear_message: "Alle Fenster geschlossen — Heizung aktiv"
alerts:
- device_class: window
state: "on"
message: "{name} ist offen — Heizung möglicherweise aus"
theme: window
priority: 2
Bei geschlossenen Fenstern zeigt die Karte eine grüne “alles in Ordnung” Folie. Bei offenem Fenster wechselt sie zu einer animierten Warnung mit dem Friendly Name des Sensors in der Nachricht.
Das Blueprint in anderen Zimmern wiederverwenden
Einstellungen → Automatisierungen → Erstellen → Aus Blueprint → “Fenster → Heizung aus” auswählen → Sensor und Heizkörper wählen → Speichern. Kein neuer Code. Das ist der ganze Punkt daran es von Anfang an als Blueprint zu bauen statt als fest kodierte Automatisierung.
Das Büro bekommt als nächstes einen Sensor — gleicher Erstgenerations-Mill, gleiches Blueprint, identische Konfiguration. Die Mill-Heizkörper im Schlafzimmer und in der Küche funktionieren ebenfalls sobald sie Fenstersensoren haben. Die Daikin im Wohnzimmer ist eine andere Geschichte: Tado verwaltet die und braucht eine eigene Logik wenn die Zeit kommt.