Fenster auf.
Heizung runter.
Window open.
Heating down.
Ein hochprofessionelles und intelligentes Home Assistant Blueprint zur raumbasierten Heizungssteuerung bei geöffneten Fenstern oder Türen. Vergiss das manuelle Herunterdrehen – spare Energie intelligent und vollautomatisch! A highly professional and intelligent Home Assistant Blueprint for room-based heating control when windows or doors are opened. Forget manually turning down the heat – save energy intelligently and fully automatically!
Der Workflow im Hintergrund The background workflow
So regelt Window-Watch deinen Alltag vollautomatisch. How Window-Watch regulates your daily life fully automatically.
Fenster wird geöffnetWindow opens
Einer der definierten Tür- oder Fenstersensoren registriert eine Öffnung im Raum.One of the defined door or window sensors registers an opening in the room.
Snapshot & AbsenkungSnapshot & Setback
Nach einer Verzögerung speichert das System den aktuellen Zustand und regelt die Heizung ab oder schaltet sie ab.After a delay, the system saves the current state and turns down the heating or switches it off.
Ursprung wiederhergestelltOriginal state restored
Sobald ALLE Fenster wieder zu sind, wird der exakte vorherige Heizungszustand automatisch wiederhergestellt.Once ALL windows are closed again, the exact previous heating state is automatically restored.
✨ Hauptfunktionen✨ Main Features
Multi-Entitäten-UnterstützungMulti-Entity Support
Überwachung mehrerer Fenster und Steuerung mehrerer Heizkörper in einer einzigen Automatisierung.Monitoring of multiple windows and control of multiple radiators in a single automation.
Zustands-SnapshotState Snapshot
Speichert den exakten Zustand der Thermostate vor der Absenkung und stellt diesen präzise wieder her. Schützt Heizpläne!Saves the exact state of the thermostats before the setback and restores it precisely. Protects heating schedules!
Intelligente Absenkmodi & DynamikIntelligent Setback & Dynamics
Wahlweise komplette Abschaltung (off) oder Eco-Modus. Die Temperatur kann statisch oder dynamisch via Helfer vorgegeben werden.Optionally complete shutdown (off) or Eco mode. The temperature can be set statically or dynamically via a helper.
Globaler Hauptschalter & DelayGlobal Master Switch & Delay
Optionaler Blockierschutz (für Sommerbetrieb) und einstellbare Verzögerung, um beim kurzen Stoßlüften die Batterien zu schonen.Optional blocking protection (for summer mode) and adjustable delay to save batteries during quick ventilation.
📖 Benutzerhandbuch: SNO Window-Watch📖 User Manual: SNO Window-Watch
Willkommen bei der offiziellen Anleitung für das SNO_Window-Watch Blueprint. Diese Dokumentation führt dich Schritt für Schritt von der Einrichtung bis hin zu komplexen Praxisbeispielen.Welcome to the official manual for the SNO_Window-Watch Blueprint. This documentation guides you step-by-step from setup to complex practical examples.
1. Voraussetzungen1. Prerequisites
Stelle sicher, dass deine Geräte in Home Assistant korrekt eingerichtet sind: Ensure your devices are correctly set up in Home Assistant:
- 1. Fenster-/Türsensoren: Müssen als `binary_sensor` mit der Geräteklasse `window` oder `door` definiert sein.Window/Door sensors: Must be defined as `binary_sensor` with device_class `window` or `door`.
- 2. Thermostate: Müssen der Domäne `climate` angehören.Thermostats: Must belong to the `climate` domain.
🎛️ 2. Erklärung der Eingabefelder (UI)🎛️ 2. Explanation of Input Fields (UI)
| FeldnameField Name | PflichtfeldRequired | BeschreibungDescription |
|---|---|---|
| ⚙️ Hauptschalter⚙️ Master Switch | NeinNo | Ermöglicht es, die Automation zu blockieren. Läuft nur auf `on`. Ideal für Sommer-/Winter.Blocks automation if not `on`. Ideal for summer/winter modes. |
| 🪟 Fenster & Türen🪟 Windows & Doors | JaYes | Alle Sensoren, die diesen Raum überwachen.All sensors monitoring this room. |
| 🌡️ Thermostate🌡️ Thermostats | JaYes | Alle zu regelnden Heizkörper.All radiators to be controlled. |
| ⏱️ Verzögerung⏱️ Delay | JaYes | Wartezeit (in Sek) vor Heizungs-Reaktion (Default: 30s).Wait time (in sec) before heating reaction (Default: 30s). |
| 🛠️ Aktion🛠️ Action | JaYes | Komplett ausschalten (Off) ODER auf Absenktemperatur wechseln.Turn off completely (Off) OR switch to setback temp. |
| 📉 Dynamisch📉 Dynamic Temp | NeinNo | Übergabe einer variablen Temp via `input_number` Helfer.Pass dynamic temp via `input_number` helper. |
| 📉 Statisch📉 Static Temp | JaYes | Feste Absenktemperatur (Default: 12°C).Fixed setback temp (Default: 12°C). |
💡 3. Praxisbeispiele💡 3. Practical Examples
Beispiel 1: Das klassische BadezimmerExample 1: Classic Bathroom
Beim Lüften im Bad soll die Heizung nach 15 Sekunden komplett ausgehen, um Energie zu sparen. Nach dem Schließen soll alles wie vorher sein.When airing the bathroom, heating should turn off after 15s. Upon closing, everything restores.
- Hauptschalter:Master Switch: Leer lassenLeave empty
- Fenster & Türen:Windows & Doors: `binary_sensor.bad_fenster_links`
- Thermostate:Thermostats: `climate.bad_heizung`
- Verzögerung:Delay: `15`
- Aktion:Action: Heizung komplett ausschalten (Off)Turn off completely
Beispiel 2: Wohnzimmer mit Sommer-SchalterExample 2: Living Room with Summer Switch
Im Wohnzimmer soll auf eine Eco-Temperatur abgesenkt werden, gesteuert über einen Helfer. Im Sommer soll die Automatisierung deaktiviert werden.Living room drops to Eco temp controlled by helper. In summer, automation is disabled.
- Hauptschalter:Master Switch: `input_boolean.heizperiode`
- Fenster & Türen:Windows & Doors: `binary_sensor.terrassentuer`
- Thermostate:Thermostats: `climate.wohnzimmer_heizung_links`
- Verzögerung:Delay: `45`
- Aktion:Action: Auf bestimmte Absenktemperatur wechselnSwitch to setback temp
- Dynamische Absenktemperatur:Dynamic Temp: `input_number.eco_temperatur`
Changelog & History
Alle Meilensteine und Änderungen dieses Projekts werden hier sauber dokumentiert.All milestones and changes of this project are properly documented here.
v0.1.0 (Initial Release)
Release Date: 2026-05-17. Erstveröffentlichung (Initial Release) Release Date: 2026-05-17. First public release.
HinzugefügtAdded
-
Erstveröffentlichung:Initial Release: Grundarchitektur für die raumbasierte Multi-Fenster- und Multi-Thermostat-Steuerung.Basic architecture for room-based multi-window and multi-thermostat control.
-
Snapshot-Funktion:Snapshot Function: Integration von `scene.create`, um den Zustand der Thermostate dynamisch vor dem Absenken im RAM zu sichern und exakt wiederherzustellen.Integration of `scene.create` to dynamically backup the state of the thermostats in RAM before reducing and to restore it exactly.
-
Hauptschalter-Option:Master Switch Option: Einbindung eines optionalen Blockier-Eingangs (`input_boolean` / `switch`), um z.B. den Sommerbetrieb abzubilden.Inclusion of an optional blocking input (`input_boolean` / `switch`) to simulate summer mode, for example.
-
Dynamische Temperaturregelung:Dynamic Temperature Control: Unterstützung für eine optionale Zuweisung einer Temperatur-Entität (`sensor` / `input_number`), die den statischen Schieberegler bei Bedarf überschreibt.Support for an optional assignment of a temperature entity (`sensor` / `input_number`) that overwrites the static slider if needed.
-
Brand-Design:Brand Design: Integration des offiziellen SyncNetOps-Logos und Verknüpfung der externen Dokumentations- und Issue-Kanäle im Header des Blueprints.Integration of the official SyncNetOps logo and linking of external documentation and issue channels in the header of the blueprint.
🛠️ Technische Entwickler-Dokumentation🛠️ Technical Developer Docs
v0.1.0Diese Dokumentation richtet sich an Entwickler und Systemadministratorinnen zur Fehlersuche, Code-Verifikation, Auditierung und zukünftigen Weiterentwicklung des Blueprints.This documentation is aimed at developers and system administrators for troubleshooting, code verification, auditing, and future development of the blueprint.
🏗️ Architektur & Logik-Fluss🏗️ Architecture & Logic Flow
Das Blueprint arbeitet strikt im Modus mode: single mit der Eigenschaft max_exceeded: silent. Dies ist eine fundamentale Designentscheidung, um die Integrität der dynamisch generierten Zustands-Snapshots (Szenen) zu jedem Zeitpunkt zu schützen.
The blueprint operates strictly in mode: single with the property max_exceeded: silent. This is a fundamental design decision to protect the integrity of the dynamically generated state snapshots (scenes) at all times.
Ablaufdiagramm der Programmlogik:Logic Flow Diagram:
- Trigger-Aktivierung:Trigger Activation: Ein oder mehrere der im Eingabefeld `window_sensors` definierten Entitäten wechseln in den Zustand `on` (offen). Der Trigger blockiert die Weiterleitung an die Actions so lange, bis der Zustand stabil für die Dauer von `delay_time` Sekunden (`for:`-Bedingung) gehalten wurde.One or more of the entities defined in the `window_sensors` input change to the `on` (open) state. The trigger blocks forwarding to the actions until the state has been stable for `delay_time` seconds (`for:` condition).
- Bedingungsprüfung (Condition):Condition Check: Das System evaluiert das Vorhandensein und den Zustand des optionalen `main_switch`. Ist ein Schalter hinterlegt, muss dieser zwingend `on` liefern. Ist das Feld leer, wird die Bedingung durch das Template direkt als `true` gewertet und die Automation läuft ungestört weiter.The system evaluates the presence and state of the optional `main_switch`. If a switch is provided, it must return `on`. If the field is empty, the condition is directly evaluated as `true` by the template and the automation continues.
- Action - Phase 1 (Zustands-Snapshot):Action - Phase 1 (State Snapshot): Ein temporärer Dienst-Aufruf über `scene.create` wird initiiert. Die eindeutige `scene_id` generiert sich vollautomatisch und dynamisch basierend auf der eindeutigen Entitäts-ID der jeweiligen Automationsinstanz (`this.entity_id`). Dies verhindert wirksam Race-Conditions oder das gegenseitige Überschreiben von Snapshots, wenn dieses Blueprint in mehreren Räumen gleichzeitig aktiv ist.A temporary service call via `scene.create` is initiated. The unique `scene_id` is generated fully automatically and dynamically based on the unique entity ID of the respective automation instance (`this.entity_id`). This effectively prevents race conditions.
- Action - Phase 2 (Absenkungssteuerung):Action - Phase 2 (Setback Control): Ein `choose`-Konstrukt verzweigt den logischen Pfad basierend auf dem gewählten `action_mode`. Im Modus `off` wird hart auf `off` gesetzt. Im Modus `eco` berechnet eine komplexe Jinja2-Variable (`target_eco_temp`) die Zieltemperatur. Schlägt die Prüfung der dynamischen Entität fehl, greift das System auf den statischen Float-Wert des Sliders zurück.A `choose` construct branches the logic path based on the chosen `action_mode`. In `off` mode, it's set to `off`. In `eco` mode, a complex Jinja2 variable (`target_eco_temp`) calculates the target temp. If the dynamic entity check fails, it falls back to the static float value.
- Action - Phase 3 (Asynchrone Warteschleife):Action - Phase 3 (Async Wait Loop): Die Automation verbleibt innerhalb einer `wait_for_trigger`-Schleife. Ein ausgeklügeltes Template expandiert das Array der Fenstersensoren im RAM und filtert nach dem Status `on`. Erst wenn die mathematische Anzahl aller geöffneten Fenster im Raum exakt `0` beträgt, bricht die Schleife auf.The automation stays in a `wait_for_trigger` loop. A sophisticated template expands the array of window sensors in RAM and filters for the `on` status. Only when the mathematical count of all open windows in the room is exactly `0`, the loop breaks.
- Action - Phase 4 (Restaurierung):Action - Phase 4 (Restoration): Die in Phase 1 erzeugte Szene wird via `scene.turn_on` wieder eingespielt. Alle Attribute (wie vorherige Heizpläne, Betriebsmodi und Solltemperaturen) werden exakt auf den Zustand vor dem Öffnen des ersten Fensters zurückgesetzt.The scene generated in Phase 1 is restored via `scene.turn_on`. All attributes (like previous heating schedules, operating modes, and target temps) are reset exactly to the state before the first window was opened.
💻 Wichtige Code-Templates & Variablen💻 Important Code Templates & Variables
{% if eco_temp_entity != none and eco_temp_entity != '' and states(eco_temp_entity) not in ['unknown', 'unavailable'] %}
{{ states(eco_temp_entity) | float(eco_temp_static) }}
{% else %}
{{ eco_temp_static }}
{% endif %}
Technische Funktion: Verhindert schwerwiegende Laufzeitfehler im Home-Assistant-Kern, falls die dynamisch zugewiesene Entität temporär nicht erreichbar oder undefiniert ist. Ein explizites Typ-Casting auf `float` sichert die Kompatibilität mit dem `climate.set_temperature`-Dienst ab.Technical function: Prevents severe runtime errors in the Home Assistant core if the dynamically assigned entity is temporarily unreachable or undefined. An explicit type cast to `float` ensures compatibility.
{{ main_switch == none or main_switch == '' or states(main_switch) == 'on' }}
Technische Funktion: Ermöglicht die optionale Natur des UI-Feldes. Wenn der String leer oder `none` ist, evaluiert das Template zu `true`. Dadurch entfällt die Notwendigkeit für komplexe, verschachtelte Bedingungsblöcke im YAML-Code.Technical function: Allows the optional nature of the UI field. If the string is empty or `none`, the template evaluates to `true`. This eliminates the need for complex, nested condition blocks in the YAML.
🔍 Troubleshooting (Fehlersuche & Randfälle)🔍 Troubleshooting (Edge Cases)
Problem: Beim Öffnen eines zweiten Fensters im selben Raum verstellt sich die Wiederherstellungs-Temperatur nach dem Schließen.Problem: Opening a second window in the same room resets the recovery temperature after closing.
Analyse: Würde die Automation im Modus `queued` (Warteschlange) oder `restart` (Neustart) operieren, würde das Öffnen des zweiten Fensters die Automation erneut triggern. Dabei würde der bereits abgesenkte Zustand (z.B. 12°C oder Off) als neuer "Normalzustand" fotografiert werden.Analysis: If the automation operated in `queued` or `restart` mode, opening the second window would re-trigger the automation. The already lowered state (e.g. 12°C or Off) would be photographed as the new "normal state".
Lösung: Der Modus `single` verhindert dies nativ. Solange die Warteschleife auf das Schließen aller Fenster wartet, ignoriert die Engine jede weitere Trigger-Auslösung.Solution: The `single` mode prevents this natively. As long as the wait loop is waiting for all windows to close, the engine ignores any further trigger activation.
Problem: Log-Warnungen bezüglich "max_exceeded" im Home Assistant Core.Problem: Log warnings regarding "max_exceeded" in Home Assistant Core.
Analyse: Da der Modus auf `single` gesetzt ist, protokolliert das System standardmäßig eine Warnung im Logbuch, wenn ein Trigger erneut feuert, während die Instanz noch läuft (z.B. wenn man ein zweites Fenster öffnet).Analysis: Since the mode is set to `single`, the system logs a warning by default when a trigger fires again while the instance is still running (e.g. when opening a second window).
Lösung: Durch das Setzen von `max_exceeded: silent` wird dieses unkritische Log-Spamming sauber unterdrückt, da dieses Verhalten architektonisch vollkommen beabsichtigt und abgesichert ist.Solution: By setting `max_exceeded: silent`, this non-critical log spamming is cleanly suppressed, as this behavior is architecturally completely intentional and secured.
Problem: Thermostate verbleiben nach dem Schließen aller Fenster im Absenkmodus.Problem: Thermostats remain in setback mode after closing all windows.
Checkliste zur Behebung:
1. Überprüfe im Home Assistant Logbuch, ob während der Offen-Phase ein externes Skript, eine Node-RED-Node oder ein integrierter Heizplan (z.B. Better Thermostat oder Schedy) die Attribute des Thermostats verändert hat. Solche externen Zugriffe können den flüchtigen Snapshot in der Home-Assistant-Datenbank korrumpieren.
2. Stelle sicher, dass die Geräteklasse (`device_class`) aller beteiligten Fenstersensoren im System sauber als `window` oder `door` deklariert ist, um Fehlfilterungen im `expand`-Template auszuschließen.
Troubleshooting Checklist:
1. Check the Home Assistant logbook to see if an external script, a Node-RED node, or an integrated heating schedule (e.g., Better Thermostat or Schedy) changed the attributes of the thermostat during the open phase. Such external accesses can corrupt the volatile snapshot in the database.
2. Ensure that the device class (`device_class`) of all involved window sensors in the system is cleanly declared as `window` or `door` to prevent incorrect filtering in the `expand` template.
Doku-ArchivDocs Archive
LegacyHier findest du technische Dokumentationen zu älteren Versionen des Codes.Here you will find technical documentation for older versions of the code.
Noch keine archivierten Versionen vorhanden.No archived versions yet.
Downloads & InstallationDownloads & Installation
Lade dir die neueste Version von SNO Window-Watch herunter oder importiere sie direkt.Download the latest version of SNO Window-Watch or import it directly.
Schnell-Import (Empfohlen)Quick Import (Recommended)
Klicke auf den Button, um das Blueprint mit einem Klick direkt in deine Home Assistant Instanz zu laden.Click the button to load the blueprint directly into your Home Assistant instance with one click.
Manueller Download (.yaml)Manual Download (.yaml)
Lade die Blueprint-Datei lokal herunter und platziere sie in deinem /config/blueprints/automation/ Ordner.Download the blueprint file locally and place it in your /config/blueprints/automation/ folder.
SNO Window-Watch
Das Blueprint überwacht beliebig viele Fenster-/Türsensoren innerhalb eines Raumes. Sobald ein Fenster geöffnet wird, wird nach Ablauf einer einstellbaren Verzögerung der aktuelle Zustand der Heizkörper im Raum temporär gespeichert. Anschließend wird die Heizung entweder komplett ausgeschaltet oder auf eine definierte Absenktemperatur reguliert. Sobald alle Fenster im Raum wieder geschlossen sind, wird der exakte vorherige Zustand vollautomatisch wiederhergestellt.The blueprint monitors any number of window/door sensors within a room. Saves the current state temporarily and fully automatically restores it after closing.
- Zustands-SnapshotState Snapshot
- Multi-Entitäten-UnterstützungMulti-Entity Support
- Intelligente Absenkmodi (Off / Eco)Intelligent Setback (Off / Eco)
- Dynamische Temperaturen via HelferDynamic temperatures via helpers
- Optionaler Hauptschalter & DelayOptional Master Switch & Delay
Screenshots & IntegrationScreenshots & Integration
Einblicke in das Projekt. Klicken zum Vergrößern.Insights into the project. Click to enlarge.
❓ Häufig gestellte Fragen (FAQ)❓ Frequently Asked Questions
Hier findest du Antworten auf die wichtigsten Fragen zur Einrichtung, Funktionsweise und Fehlerbehebung des SNO_Window-Watch Blueprints.Here you will find answers to the most important questions regarding setup, functionality, and troubleshooting of the SNO_Window-Watch blueprint.
SNO_Window-Watch automatisiert das Absenken oder Ausschalten deiner Heizung, wenn in einem Raum Fenster oder Türen geöffnet werden. Das Besondere daran ist die Snapshot-Funktion: Die Automation merkt sich den Zustand deiner Thermostate vor dem Öffnen und stellt diesen exakten Zustand (inklusive Heizmodus und Temperatur) wieder her, sobald alle Fenster im Raum wieder geschlossen sind. SNO_Window-Watch automates the turning down or off of your heating when windows or doors are opened in a room. The special feature is the snapshot function: The automation remembers the state of your thermostats before opening and restores this exact state (including heating mode and temperature) as soon as all windows in the room are closed again.
Nein, und das ist Absicht. Aus Gründen der Übersichtlichkeit, Stabilität und Fehleranfälligkeit ist das Blueprint für die raumbasierte Steuerung optimiert. Du erstellst einfach für jeden Raum eine eigene Automation aus diesem einen Blueprint (z.B. eine für das "Wohnzimmer", eine für das "Badezimmer" etc.). No, and that is intentional. For reasons of clarity, stability, and error susceptibility, the blueprint is optimized for room-based control. You simply create a separate automation from this one blueprint for each room (e.g., one for the "Living Room", one for the "Bathroom", etc.).
Die Verzögerungszeit (in Sekunden einstellbar) schont die Batterien deiner Thermostate. Wenn du ein Fenster nur kurz öffnest, um etwas auf die Fensterbank zu stellen oder kurz die Post zu holen, reagiert die Heizung nicht sofort. Erst wenn das Fenster durchgehend für die eingestellte Zeit offen steht, wird die Heizung heruntergeregelt. The delay time (adjustable in seconds) saves the batteries of your thermostats. If you open a window only briefly to put something on the windowsill or get the mail, the heating does not react immediately. Only when the window remains open continuously for the set time, the heating is turned down.
Das Blueprint arbeitet im sogenannten `single`-Modus. Das bedeutet: Sobald das erste Fenster geöffnet wird, friert die Automation den Zustand ein und wartet, bis *alle* Fenster wieder zu sind. Wenn du ein zweites oder drittes Fenster öffnest, wird die Automation nicht neu gestartet. Dadurch wird verhindert, dass der bereits abgesenkte Zustand fälschlicherweise als "neuer Normalzustand" gespeichert wird. The blueprint works in the so-called `single` mode. This means: As soon as the first window is opened, the automation freezes the state and waits until *all* windows are closed again. If you open a second or third window, the automation does not restart. This prevents the already lowered state from being mistakenly saved as the "new normal state".
Es werden beide unterstützt! Der filter in der Benutzeroberfläche zeigt dir alle Sensoren der Domäne `binary_sensor` an, die als Geräteklasse (`device_class`) entweder `window` (Fenster) oder `door` (Tür) hinterlegt haben. Du kannst sie auch problemlos im selben Raum mischen (z.B. ein Fenster und eine Balkontür). Both are supported! The filter in the user interface shows you all sensors of the `binary_sensor` domain that have either `window` or `door` assigned as their device class (`device_class`). You can also mix them in the same room without any problems (e.g. a window and a balcony door).
- Heizung komplett ausschalten (Off): Das Thermostat wird komplett in den Modus `off` versetzt. Es fließt kein Wasser mehr (außer dem internen Frostschutz des Thermostats).Turn heating completely off (Off): The thermostat is put completely into `off` mode. No more water flows (except for the internal frost protection of the thermostat).
- Absenktemperatur wechseln: Das Thermostat bleibt im Heizmodus (z.B. `heat` oder `auto`), regelt aber die Zieltemperatur auf den von dir definierten Eco-Wert (z.B. 12°C) herunter.Switch setback temp: The thermostat stays in heating mode (e.g., `heat` or `auto`), but regulates the target temperature down to your defined Eco value (e.g., 12°C).
Wenn du die Absenktemperatur nicht fest im Blueprint vorgeben möchtest, kannst du im Feld *Dynamische Absenktemperatur (Optional)* eine Entität auswählen – zum Beispiel einen `input_number` (Nummern-Helfer) oder einen Sensor. Das System liest dann bei jedem Öffnen des Fensters den aktuellen Wert dieser Entität aus. Das ist ideal, wenn du die Eco-Temperatur zentral für das ganze Haus über ein Dashboard steuern willst. If you don't want to define a fixed setback temperature in the blueprint, you can select an entity in the *Dynamic Setback Temperature (Optional)* field - for example, an `input_number` (helper) or a sensor. The system then reads the current value of this entity every time the window is opened. This is ideal if you want to control the eco temperature centrally for the whole house via a dashboard.
SNO_Window-Watch verfügt über einen integrierten Fail-Safe-Schutz. Sollte die ausgewählte Entität den Zustand `unknown` (unbekannt) oder `unavailable` (nicht verfügbar) aufweisen, bricht die Automation nicht ab. Sie greift in diesem Fall automatisch auf den Wert zurück, den du im statischen Schieberegler eingestellt hast. SNO_Window-Watch features a built-in fail-safe protection. If the selected entity has the state `unknown` or `unavailable`, the automation does not abort. In this case, it automatically falls back to the value you set in the static slider.
Der Hauptschalter (z.B. ein `input_boolean` Helfer) dient als globaler Blockierschutz. Wenn du diesen Schalter ausschaltest (Zustand `off`), ignoriert das Blueprint geöffnete Fenster komplett. Das ist besonders im Sommer nützlich, wenn Türen und Fenster ohnehin oft offen stehen und die Heizung sowieso ausgeschaltet ist. Bleibt das Feld leer, ist die Überwachung dauerhaft aktiv. The master switch (e.g., an `input_boolean` helper) serves as global blocking protection. If you turn this switch off (state `off`), the blueprint completely ignores open windows. This is particularly useful in summer when doors and windows are often open anyway and the heating is turned off regardless. If the field is left empty, monitoring is permanently active.
In 99 % der Fälle liegt dies an einer externen Einmischung während das Fenster offen war. Wenn du ein Fenster öffnest und *währenddessen* manuell am Thermostat drehst oder ein externer Zeitplan (wie z.B. die Integration *Better Thermostat* oder *Schedy*) funkt, wird der flüchtige Snapshot in Home Assistant überschrieben oder blockiert. Achte darauf, dass andere Heizpläne während der "Fenster-offen-Phase" pausiert werden. In 99% of cases, this is due to external interference while the window was open. If you open a window and *meanwhile* manually adjust the thermostat, or an external schedule (like *Better Thermostat* or *Schedy*) triggers, the volatile snapshot in Home Assistant is overwritten or blocked. Make sure other heating schedules are paused during the "window open phase".
Nein, das ist absolut fehlerfrei und so gewollt. Da die Automation im `single`-Modus läuft, blockiert sie absichtlich neue Reize, solange ein Fenster offen ist. Wenn du ein zweites Fenster öffnest, versucht der Sensor die Automation erneut zu triggern. Das System lehnt dies im Hintergrund lautlos (*silent*) ab, um deinen gespeicherten Heizungsstatus zu schützen. No, this is absolutely error-free and intentional. Since the automation runs in `single` mode, it intentionally blocks new triggers as long as a window is open. If you open a second window, the sensor tries to re-trigger the automation. The system silently rejects this in the background to protect your saved heating status.
Nein. SNO_Window-Watch steuert die Thermostate über die standardisierten Home-Assistant-Dienste (`climate.set_temperature` bzw. `climate.set_hvac_mode`). Solange deine Thermostate (egal ob Zigbee, Homematic, Shelly oder Z-Wave) korrekt in Home Assistant als `climate`-Entität eingebunden sind, kannst du sie sogar innerhalb eines Raumes mischen. No. SNO_Window-Watch controls the thermostats via standardized Home Assistant services (`climate.set_temperature` or `climate.set_hvac_mode`). As long as your thermostats (whether Zigbee, Homematic, Shelly, or Z-Wave) are correctly integrated as a `climate` entity in HA, you can even mix them within one room.
Da dieses Blueprint aktiv von SyncNetOps gepflegt wird, kannst du Fehler, Inkompatibilitäten oder Feature-Wünsche direkt auf unserer GitHub-Plattform im Bereich "Issues" melden. Besuche dazu einfach: GitHub Issues Since this blueprint is actively maintained by SyncNetOps, you can report bugs, incompatibilities, or feature requests directly on our GitHub platform in the "Issues" section. Just visit: GitHub Issues
Über SNOAbout SNO
SyncNetOps
Hi! Hinter SNO (kurz für SyncNetOps) stehe ich – Matt. 35+ aus dem schönen NRW, beruflich wie privat ein absoluter IT-Mensch (Informatiker, Digitalisierung & Prozessanalyse) und ein Smart-Home-Enthusiast mit einer riesigen Leidenschaft für Home Assistant. Hi! Behind SNO (short for SyncNetOps) is me – Matt. 35+ from North Rhine-Westphalia, Germany. Professionally and privately a total IT guy (Computer Scientist, Digitalization & Process Analyst) and a Smart Home enthusiast with a massive passion for Home Assistant.
Für mich ist das Automatisieren nicht nur ein Hobby, sondern ein Lifestyle. Wenn ich im Haus noch Lichtschalter drücken oder Parameter manuell regeln muss, empfinde ich das als persönliche Niederlage. Technik muss lautlos, intelligent und effizient im Hintergrund arbeiten. For me, automation isn't just a hobby; it's a lifestyle. Having to press light switches or manually set parameters feels like a personal failure. Technology must work silently, intelligently, and efficiently in the background.
Der eiskalte Dezembermorgen... The freezing December morning...
Die Idee zu Window-Watch entstand an einem eiskalten Dezembermorgen. Meine Tochter hatte nach dem Aufstehen das Badezimmerfenster sperrangelweit offengelassen, um die "Morgenluft reinzulassen". Leider vergaß sie es danach zu schließen. Als ich Stunden später das Bad betrat, lief die Heizung auf Hochtouren gegen die eisige Zugluft an – eine absolute Energieverschwendung! Ich suchte nach einem Blueprint, das nicht nur abschaltet, sondern sich exakt den vorherigen Zustand (inklusive Heizplänen) merkt. Da ich nichts fand, was meinen Ansprüchen an Zuverlässigkeit und Dynamik gerecht wurde, habe ich mich an einem Wochenende hingesetzt und die erste Version von SNO Window-Watch geschrieben. The idea for Window-Watch came about on a freezing December morning. My daughter had left the bathroom window wide open after getting up to "let in the morning air". Unfortunately, she forgot to close it afterwards. When I entered the bathroom hours later, the heating was running at full blast against the icy draft – an absolute waste of energy! I looked for a blueprint that not only turned off but also exactly remembered the previous state (including heating schedules). Since I couldn't find anything that met my demands for reliability and dynamics, I sat down one weekend and wrote the first version of SNO Window-Watch.
Es macht mir großen Spaß, smarte Lösungen auszuarbeiten, stetig zu optimieren und schließlich mit der Community zu teilen. Wenn mein Code dir hilft, deinen Alltag etwas bequemer und smarter zu machen, habe ich mein Ziel erreicht! I deeply enjoy developing smart solutions, optimizing them constantly, and sharing them with the community. If my code helps make your everyday life a little more comfortable and smarter, I've reached my goal!
BLUEPRINT CodeBLUEPRINT Code
Kopiere den Quellcode oder lade die Datei herunter.Copy the source code or download the file.
blueprint:
name: "SNO_Window-Watch (v0.1.0)"
description: >
<img src="https://sno.mb222.de/!git/snologo.png" width="150" align="right" alt="SNO Logo">
<h2>SNO_Window-Watch - Intelligente Raum-Heizungssteuerung</h2>
<p>Dieses Blueprint überwacht mehrere Fenster und Türen in einem Raum. Sobald ein Fenster geöffnet wird (und eine einstellbare Verzögerung abgelaufen ist), merkt sich das System den aktuellen Zustand der Heizung und senkt diese ab oder schaltet sie aus. Sobald <b>alle</b> Fenster wieder geschlossen sind, wird der exakte vorherige Zustand der Heizung automatisch wiederhergestellt.</p>
<h3>Schritt-für-Schritt Anleitung:</h3>
<ol>
<li><b>Hauptschalter (Optional):</b> Wähle einen Hauptschalter, um die Automatisierung bei Bedarf komplett zu pausieren.</li>
<li><b>Fenster wählen:</b> Wähle alle Fenster-/Tür-Sensoren aus, die zu diesem Raum gehören.</li>
<li><b>Heizkörper wählen:</b> Wähle die Thermostate dieses Raumes aus.</li>
<li><b>Aktion definieren:</b> Wähle, ob die Heizung komplett ausgeschaltet oder auf eine Absenktemperatur (via Entität oder Schieberegler) wechseln soll.</li>
<li><b>Verzögerung einstellen:</b> Definiere die Karenzzeit vor der Auslösung.</li>
</ol>
<hr>
<p><b>Hilfreiche Links:</b></p>
<ul>
<li><a href="https://sno.mb222.de/ww-faq/" target="_blank">📚 Dokumentation & Hilfe</a></li>
<li><a href="https://github.com/SyncNetOps/HA-Blueprint_SNO_Window-Watch/issues" target="_blank">🐛 Fehler melden (GitHub Issues)</a></li>
</ul>
<br>
<p><small>Ein Blueprint von <a href="https://github.com/SyncNetOps" target="_blank">SyncNetOps</a></small></p>
domain: automation
input:
main_switch:
name: ⚙️ Hauptschalter (Optional)
description: "Wähle hier einen Schalter (z.B. einen input_boolean Helfer), um die Fenster-Auf-Absenkung global ein- oder auszuschalten. Bleibt dieses Feld leer, ist die Überwachung immer aktiv."
default: ""
selector:
entity:
domain:
- input_boolean
- switch
window_sensors:
name: 🪟 Fenster & Türen (Sensoren)
description: "Wähle hier alle Fenster und Türen aus, die in diesem Raum überwacht werden sollen. (Mehrfachauswahl möglich)."
selector:
entity:
domain: binary_sensor
device_class:
- window
- door
multiple: true
climate_targets:
name: 🌡️ Heizkörper & Thermostate
description: "Wähle alle Heizungs-Entitäten aus, die in diesem Raum gesteuert werden sollen. (Mehrfachauswahl möglich)."
selector:
entity:
domain: climate
multiple: true
delay_time:
name: ⏱️ Verzögerung vor Aktion (Sekunden)
description: "Wie lange muss ein Fenster durchgehend geöffnet sein, bevor die Heizung reagiert? (Schont die Thermostat-Batterien)."
default: 30
selector:
number:
min: 0
max: 600
unit_of_measurement: 's'
mode: slider
action_mode:
name: 🛠️ Aktion bei geöffnetem Fenster
description: "Was soll mit den Thermostaten passieren, wenn ein Fenster geöffnet ist?"
default: 'off'
selector:
select:
options:
- label: "Heizung komplett ausschalten (Off)"
value: "off"
- label: "Auf eine bestimmte Absenktemperatur wechseln"
value: "eco"
eco_temp_entity:
name: 📉 Dynamische Absenktemperatur (Entität - Optional)
description: "Wähle optional einen Sensor oder Helfer (z.B. input_number), der die Temperatur dynamisch vorgibt. Ist hier etwas ausgewählt, wird der Schieberegler unten ignoriert!"
default: ""
selector:
entity:
domain:
- input_number
- sensor
- number
eco_temp:
name: 📉 Statische Absenktemperatur (°C)
description: "Diese Temperatur wird eingestellt, falls oben KEINE Entität ausgewählt wurde."
default: 12.0
selector:
number:
min: 5.0
max: 20.0
step: 0.5
unit_of_measurement: '°C'
mode: slider
variables:
climate_entities: !input climate_targets
window_entities: !input window_sensors
action_mode: !input action_mode
eco_temp_static: !input eco_temp
eco_temp_entity: !input eco_temp_entity
main_switch: !input main_switch
# Logik für die Ziel-Temperatur: Wenn eine Entität definiert ist und gültige Werte liefert, nimm diesen. Ansonsten den Schieberegler.
target_eco_temp: >
{% if eco_temp_entity != none and eco_temp_entity != '' and states(eco_temp_entity) not in ['unknown', 'unavailable'] %}
{{ states(eco_temp_entity) | float(eco_temp_static) }}
{% else %}
{{ eco_temp_static }}
{% endif %}
trigger:
- platform: state
entity_id: !input window_sensors
to: 'on'
for:
seconds: !input delay_time
condition:
# Prüfen, ob der Hauptschalter definiert wurde. Wenn ja, muss er 'on' sein. Wenn das Feld leer ist, wird die Bedingung als "wahr" gewertet.
- condition: template
value_template: >
{{ main_switch == none or main_switch == '' or states(main_switch) == 'on' }}
action:
# 1. Vorherigen Status aller gewählten Heizungen als Szene speichern
- service: scene.create
data:
scene_id: "sno_window_watch_{{ this.entity_id | replace('.', '_') }}"
snapshot_entities: "{{ climate_entities }}"
# 2. Gewählte Aktion ausführen (Ausschalten ODER Absenken)
- choose:
- conditions:
- condition: template
value_template: "{{ action_mode == 'off' }}"
sequence:
- service: climate.set_hvac_mode
target:
entity_id: "{{ climate_entities }}"
data:
hvac_mode: 'off'
- conditions:
- condition: template
value_template: "{{ action_mode == 'eco' }}"
sequence:
- service: climate.set_temperature
target:
entity_id: "{{ climate_entities }}"
data:
temperature: "{{ target_eco_temp }}"
# 3. Warten, bis ALLE ausgewählten Fenster wieder geschlossen ('off') sind
- wait_for_trigger:
- platform: template
value_template: "{{ expand(window_entities) | selectattr('state', 'eq', 'on') | list | length == 0 }}"
continue_on_timeout: false
# 4. Den zuvor gespeicherten Status exakt wiederherstellen
- service: scene.turn_on
target:
entity_id: "scene.sno_window_watch_{{ this.entity_id | replace('.', '_') }}"
# mode: single garantiert, dass beim Öffnen eines zweiten Fensters die Automation nicht von vorne beginnt und den bereits abgesenkten Status überschreibt.
mode: single
max_exceeded: silent