Es gibt Smart-Home-Automationen, die sind eher Spielerei.
Licht geht an, wenn man den Raum betritt. Alexa (bezahlter Link) sagt „Guten Morgen“. Der LED-Strip leuchtet in einer Farbe, die angeblich „Ocean Breeze“ heißt, aber eigentlich nur blau ist.
Und dann gibt es Tage, an denen die Wohnung plötzlich 28 °C hat und man sich fragt, ob man gerade noch im Wohnzimmer sitzt oder schon langsam sous-vide (bezahlter Link) gegart wird.
Genau für solche Tage lohnt sich ein kleiner Hitzewächter im Smart Home.
Nicht als hübsches Dashboard, auf das man alle drei Minuten schaut. Das macht man sowieso nur am Anfang, wenn alles neu ist. Danach vergisst man es wieder.
Sondern als Automation, die sich aktiv meldet:
„Bruder, mach das Fenster auf. Draußen ist es kühler.“
Oder, wenn man schon komplett im Smart-Home-Endgame angekommen ist: Das Fenster öffnet sich einfach selbst.
Schnellnavigation
- Das Problem: Der Mensch lüftet nach Gefühl
- Die Idee: Das Smart Home wird zum Hitzewächter
- Warum nicht einfach immer ab 25 °C?
- Home Assistant Beispiel: Lüften empfehlen
- Home Assistant Beispiel: Fenster automatisch öffnen
- Nicht vergessen: Fenster auch wieder schließen
- ioBroker Blockly: Die gleiche Idee ohne YAML
- ioBroker Blockly: Fenstermotor steuern
- ioBroker Blockly: Fenster wieder schließen
- Kleine Verbesserungen, damit es nicht nervt
- Sinnvolle Erweiterungen
- Mein Fazit
Das Problem: Der Mensch lüftet nach Gefühl
Menschen sind beim Lüften erstaunlich schlecht.
Morgens denkt man:
„Ach, ist bestimmt noch kühl draußen.“
Mittags denkt man:
„Hier drin ist es stickig, ich mach mal Fenster auf.“
Abends denkt man:
„Jetzt müsste es ja langsam besser sein.“
Und zwischendurch heizt sich die Wohnung auf wie ein Gaming-PC mit verstopftem Lüfter.
Das Problem ist: Frische Luft ist nicht automatisch kühle Luft.
Wenn es draußen 31 °C hat und drinnen 26 °C, dann ist Fenster aufmachen keine Lüftung. Das ist ein freiwilliger Wärmeeintrag mit Aussicht.
Oder anders gesagt:
„Congratulations, you played yourself.“
Die Idee: Das Smart Home wird zum Hitzewächter
Die Automation schaut nicht auf Gefühle, Tagesform oder „wird schon passen“, sondern auf Werte.
Sie prüft zum Beispiel:
- Ist es drinnen wärmer als 25 °C?
- Ist es gerade Sommer?
- Ist es draußen kühler als drinnen?
- Regnet es nicht gerade waagerecht ins Fenster?
- Optional: Ist überhaupt jemand zuhause?
- Optional: Darf ein Fenster automatisch geöffnet werden?
Wenn alles passt, gibt es eine Benachrichtigung:
„Wohnzimmer hat 25,8 °C. Draußen sind es 21,9 °C. Fenster auf, du gekochte Kartoffel.“
Die höflichere Version geht natürlich auch.
Warum nicht einfach immer ab 25 °C?
Weil 25 °C nicht immer dasselbe bedeuten.
Im Juli heißt 25 °C im Wohnzimmer:
„Es beginnt.“
Im Dezember heißt 25 °C im Wohnzimmer vielleicht:
„Der Kamin läuft, alles ist gemütlich, bitte nicht eskalieren.“
Eine Automation, die im Winter bei Kaminwärme plötzlich „Fenster auf!“ ruft, ist ungefähr so hilfreich wie ein Rauchmelder beim Raclette.
Deshalb braucht der Hitzewächter ein bisschen Kontext. Für den Einstieg reicht schon ein Monatsfilter:
Nur aktiv von Mai bis September.
Das ist nicht perfekt, aber deutlich besser als eine Automation, die im Januar denkt, sie wäre Klimamanager.
Home Assistant Beispiel: Lüften empfehlen
Hier ein einfaches Beispiel für Home Assistant.
Die Entitäten musst du natürlich an dein eigenes System anpassen.
alias: Hitzewächter - Lüften empfehlen
description: Meldet sich im Sommer, wenn es drinnen warm und draußen kühler ist
trigger:
- platform: numeric_state
entity_id: sensor.wohnzimmer_temperatur
above: 25
condition:
# Nur in den typischen warmen Monaten aktiv
- condition: template
value_template: >
{{ now().month in [5, 6, 7, 8, 9] }}
# Draußen muss es mindestens 1 °C kühler sein als drinnen
- condition: template
value_template: >
{{ states('sensor.aussen_temperatur') | float <
states('sensor.wohnzimmer_temperatur') | float - 1 }}
action:
- service: notify.mobile_app_dein_handy
data:
title: "Lüften lohnt sich"
message: >
Im Wohnzimmer sind es {{ states('sensor.wohnzimmer_temperatur') }} °C.
Draußen sind es {{ states('sensor.aussen_temperatur') }} °C.
Fenster aufmachen wäre jetzt sinnvoll.
mode: single
Wer es etwas ehrlicher mag, kann die Nachricht natürlich anpassen:
message: >
Es sind {{ states('sensor.wohnzimmer_temperatur') }} °C im Wohnzimmer.
Draußen ist es kühler. Fenster auf, bevor du mit dem Sofa verschmilzt.
Home Assistant Beispiel: Fenster automatisch öffnen
Wenn ein Fenstermotor oder Fensteröffner vorhanden ist, kann das Smart Home auch direkt handeln.
Das ist dann die Stufe:
„Ich vertraue meinem Smart Home mehr als meinem eigenen Lüftungsverhalten.“
Wichtig: Bei Fenstermotoren sollte man zusätzliche Bedingungen einbauen. Zum Beispiel Regen, Wind, Anwesenheit oder Sicherheitslogik.
alias: Hitzewächter - Fenster automatisch öffnen
description: Öffnet im Sommer ein Fenster, wenn es drinnen zu warm und draußen kühler ist
trigger:
- platform: numeric_state
entity_id: sensor.wohnzimmer_temperatur
above: 25
condition:
- condition: template
value_template: >
{{ now().month in [5, 6, 7, 8, 9] }}
- condition: template
value_template: >
{{ states('sensor.aussen_temperatur') | float <
states('sensor.wohnzimmer_temperatur') | float - 1 }}
- condition: state
entity_id: binary_sensor.regen
state: "off"
action:
- service: cover.open_cover
target:
entity_id: cover.fenster_wohnzimmer
- service: notify.mobile_app_dein_handy
data:
title: "Fenster wurde geöffnet"
message: >
Wohnzimmer über 25 °C, draußen kühler, kein Regen.
Das Fenster wurde geöffnet. Ich bin nicht dein Held, nur deine Automation.
mode: single
Nicht vergessen: Fenster auch wieder schließen
Das ist der Teil, den man gerne vergisst.
Morgens Fenster auf: gute Idee.
Fenster bis 14 Uhr offen lassen: weniger gute Idee.
Wohnung danach 29 °C: Skill Issue.
Darum braucht man die Gegenrichtung:
Wenn es draußen wieder wärmer ist als drinnen, soll das Smart Home Bescheid sagen.
alias: Hitzewächter - Fenster schließen empfehlen
description: Meldet, wenn draußen wärmer ist als drinnen
trigger:
- platform: template
value_template: >
{{ states('sensor.aussen_temperatur') | float >
states('sensor.wohnzimmer_temperatur') | float }}
condition:
- condition: template
value_template: >
{{ now().month in [5, 6, 7, 8, 9] }}
- condition: numeric_state
entity_id: sensor.wohnzimmer_temperatur
above: 23
action:
- service: notify.mobile_app_dein_handy
data:
title: "Fenster besser schließen"
message: >
Draußen ist es inzwischen wärmer als drinnen.
Fenster zu, sonst importierst du Sommer.
mode: single
Bei einem Fenstermotor kann hier natürlich auch direkt geschlossen werden:
action:
- service: cover.close_cover
target:
entity_id: cover.fenster_wohnzimmer
ioBroker Blockly: Die gleiche Idee ohne YAML
In ioBroker lässt sich die Logik direkt als Blockly bauen. Wichtig ist nur: Das hier ist kein Pseudocode, sondern ein Blockly-XML im ioBroker-Exportformat. Die Objekt-IDs musst du natürlich an deine eigenen Datenpunkte anpassen.
Ich würde dafür einen eigenen Schalter verwenden, zum Beispiel 0_userdata.0.Hitzewaechter.Sommermodus. Der kann manuell gesetzt werden oder später durch eine eigene Jahreszeitenlogik. Vorteil: Im Winter mit Kamin bleibt der Hitzewächter einfach aus und ruft nicht plötzlich „Fenster auf!“, während man gerade gemütlich grillt. Innen. Legal fragwürdig, aber gemütlich.
Dieses Blockly setzt bei passenden Bedingungen einen Meldungs-Datenpunkt. Den kann man dann für Telegram, Signal, Alexa, ein Wanddisplay oder das persönliche „Nerv mich bitte sinnvoll“-System verwenden.
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on_ext" id="heat_recommend_trigger" x="38" y="63">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="indoor_temp_oid">
<field name="oid">alias.0.Wohnzimmer.Temperatur.ACTUAL</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="if_heat_recommend">
<value name="IF0">
<block type="logic_multi_and" id="and_heat_recommend">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="3"></mutation>
<value name="AND0">
<block type="logic_compare" id="cmp_indoor_gt_25">
<field name="OP">GT</field>
<value name="A">
<block type="get_value" id="get_indoor_temp_1">
<field name="ATTR">val</field>
<field name="OID">alias.0.Wohnzimmer.Temperatur.ACTUAL</field>
</block>
</value>
<value name="B">
<block type="math_number" id="num_25_1">
<field name="NUM">25</field>
</block>
</value>
</block>
</value>
<value name="AND1">
<block type="get_value" id="get_summer_mode_1">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Hitzewaechter.Sommermodus</field>
</block>
</value>
<value name="AND2">
<block type="logic_compare" id="cmp_outdoor_cooler_1">
<field name="OP">LT</field>
<value name="A">
<block type="get_value" id="get_outdoor_temp_1">
<field name="ATTR">val</field>
<field name="OID">alias.0.Aussen.Temperatur.ACTUAL</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="math_indoor_minus_1">
<field name="OP">MINUS</field>
<value name="A">
<block type="get_value" id="get_indoor_temp_2">
<field name="ATTR">val</field>
<field name="OID">alias.0.Wohnzimmer.Temperatur.ACTUAL</field>
</block>
</value>
<value name="B">
<block type="math_number" id="num_1_1">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="set_heat_message_1">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Hitzewaechter.Meldung</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="text" id="text_heat_message_1">
<field name="TEXT">Fenster auf. Draußen ist es kühler. Bitte hör auf, warme Luft zu sammeln.</field>
</block>
</value>
</block>
</statement>
</block>
</statement>
</block>
</xml>
Die verwendeten Beispiel-Datenpunkte sind:
alias.0.Wohnzimmer.Temperatur.ACTUALfür die Innentemperaturalias.0.Aussen.Temperatur.ACTUALfür die Außentemperatur0_userdata.0.Hitzewaechter.Sommermodusals Freigabe für den Sommerbetrieb0_userdata.0.Hitzewaechter.Meldungals Textausgabe
Oder in Menschensprache: Wenn Wohnzimmer über 25 °C, Sommermodus aktiv und draußen mindestens 1 °C kühler ist, dann meldet sich das Smart Home. Nicht als freundliche Empfehlung, sondern als digitale Klimaklatsche.
ioBroker Blockly: Fenstermotor steuern
Wenn ein Fenstermotor vorhanden ist, wird aus der Empfehlung eine Aktion. Dann ist das Smart Home nicht mehr nur der nervige Mitbewohner, sondern der nervige Mitbewohner mit Zugriff auf die Fenster.
In diesem Beispiel wird zusätzlich geprüft, ob es nicht regnet. Der Regensensor ist hier nur ein Platzhalter. Wenn du keinen hast, lässt du die Bedingung weg oder ersetzt sie durch Wetterdaten.
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on_ext" id="heat_open_trigger" x="38" y="63">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="indoor_temp_oid_open">
<field name="oid">alias.0.Wohnzimmer.Temperatur.ACTUAL</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="if_heat_open">
<value name="IF0">
<block type="logic_multi_and" id="and_heat_open">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="4"></mutation>
<value name="AND0">
<block type="logic_compare" id="cmp_indoor_gt_25_open">
<field name="OP">GT</field>
<value name="A">
<block type="get_value" id="get_indoor_temp_open_1">
<field name="ATTR">val</field>
<field name="OID">alias.0.Wohnzimmer.Temperatur.ACTUAL</field>
</block>
</value>
<value name="B">
<block type="math_number" id="num_25_open">
<field name="NUM">25</field>
</block>
</value>
</block>
</value>
<value name="AND1">
<block type="get_value" id="get_summer_mode_open">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Hitzewaechter.Sommermodus</field>
</block>
</value>
<value name="AND2">
<block type="logic_compare" id="cmp_outdoor_cooler_open">
<field name="OP">LT</field>
<value name="A">
<block type="get_value" id="get_outdoor_temp_open_1">
<field name="ATTR">val</field>
<field name="OID">alias.0.Aussen.Temperatur.ACTUAL</field>
</block>
</value>
<value name="B">
<block type="math_arithmetic" id="math_indoor_minus_1_open">
<field name="OP">MINUS</field>
<value name="A">
<block type="get_value" id="get_indoor_temp_open_2">
<field name="ATTR">val</field>
<field name="OID">alias.0.Wohnzimmer.Temperatur.ACTUAL</field>
</block>
</value>
<value name="B">
<block type="math_number" id="num_1_open">
<field name="NUM">1</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="AND3">
<block type="logic_compare" id="cmp_rain_false_open">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="get_rain_open">
<field name="ATTR">val</field>
<field name="OID">alias.0.Wetter.Regen.ACTUAL</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="bool_false_rain_open">
<field name="BOOL">FALSE</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="open_window_motor">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">alias.0.Wohnzimmer.Fenster.Motor.SET</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="bool_open_true">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="control" id="set_heat_message_open">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Hitzewaechter.Meldung</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="text" id="text_heat_message_open">
<field name="TEXT">Fenster wurde geöffnet. Drinnen warm, draußen kühler, kein Regen. Ich habe übernommen.</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</xml>
Das ist dann ungefähr der Moment, in dem Besuch fragt:
„Warum geht dein Fenster von alleine auf?“
Und man antwortet:
„Weil das Haus inzwischen bessere Entscheidungen trifft als ich.“
ioBroker Blockly: Fenster wieder schließen
Auch hier wieder die Rückrichtung. Fenster morgens öffnen ist gut. Fenster bis 14 Uhr offen lassen und dann den Sommer importieren: eher weniger gut. Das folgende Blockly reagiert deshalb auf die Außentemperatur und schließt das Fenster wieder, sobald es draußen wärmer ist als drinnen.
<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on_ext" id="heat_close_trigger" x="38" y="63">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="outdoor_temp_oid_close">
<field name="oid">alias.0.Aussen.Temperatur.ACTUAL</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="if_heat_close">
<value name="IF0">
<block type="logic_multi_and" id="and_heat_close">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="3"></mutation>
<value name="AND0">
<block type="get_value" id="get_summer_mode_close">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.Hitzewaechter.Sommermodus</field>
</block>
</value>
<value name="AND1">
<block type="logic_compare" id="cmp_outdoor_warmer_close">
<field name="OP">GT</field>
<value name="A">
<block type="get_value" id="get_outdoor_temp_close_1">
<field name="ATTR">val</field>
<field name="OID">alias.0.Aussen.Temperatur.ACTUAL</field>
</block>
</value>
<value name="B">
<block type="get_value" id="get_indoor_temp_close_1">
<field name="ATTR">val</field>
<field name="OID">alias.0.Wohnzimmer.Temperatur.ACTUAL</field>
</block>
</value>
</block>
</value>
<value name="AND2">
<block type="logic_compare" id="cmp_indoor_gt_23_close">
<field name="OP">GT</field>
<value name="A">
<block type="get_value" id="get_indoor_temp_close_2">
<field name="ATTR">val</field>
<field name="OID">alias.0.Wohnzimmer.Temperatur.ACTUAL</field>
</block>
</value>
<value name="B">
<block type="math_number" id="num_23_close">
<field name="NUM">23</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="close_window_motor">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">alias.0.Wohnzimmer.Fenster.Motor.SET</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="bool_close_false">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="control" id="set_heat_message_close">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">0_userdata.0.Hitzewaechter.Meldung</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="text" id="text_heat_message_close">
<field name="TEXT">Fenster wurde geschlossen. Draußen ist es jetzt wärmer als drinnen. Sommer bleibt draußen.</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</xml>
Wer keinen Fenstermotor nutzt, ersetzt den ersten Aktor einfach durch einen Meldungs-Datenpunkt oder eine Push-Nachricht. Die Logik bleibt gleich: Wenn draußen wärmer als drinnen, Fenster zu. Keine Gratis-Sauna importieren.
Kleine Verbesserungen, damit es nicht nervt
Eine Automation ist nur so lange gut, bis sie einem alle fünf Minuten auf den Keks geht.
Deshalb sollte man ein paar Bremsen einbauen:
- Benachrichtigung höchstens einmal pro Stunde
- nur melden, wenn jemand zuhause ist
- nachts andere Regeln verwenden
- Regen und Wind beachten
- Fensterstatus prüfen, bevor man „Fenster öffnen“ meldet
- Hitzeschutz per Schalter deaktivierbar machen
- Kaminmodus oder Wintermodus berücksichtigen
Sonst wird aus „Smart Home“ schnell:
„Warum schreit mein Haus mich an?“
Und das will niemand. Zumindest nicht dauerhaft.
Sinnvolle Erweiterungen
Wenn der Hitzewächter einmal läuft, kann man ihn nach und nach erweitern.
Zum Beispiel:
- Rollläden schließen, bevor die Sonne den Raum grillt
- Ventilator einschalten, wenn jemand zuhause ist
- Klimagerät für 30 Minuten starten
- nachts automatisch zum Lüften erinnern
- morgens Fenster schließen lassen, bevor die Hitze reinkommt
- Räume einzeln bewerten: Wohnzimmer, Schlafzimmer, Arbeitszimmer, Studio
Gerade Räume mit Rechnern, Monitoren, NAS, Audioequipment oder Lichttechnik entwickeln gerne das Raumklima eines schlecht belüfteten Serverraums.
Oder wie man fachlich sagt:
„Da drin wohnt der Sommer.“
Mein Fazit
Smart Home muss nicht immer spektakulär sein.
Manchmal reicht eine Automation, die im richtigen Moment sagt:
„Fenster auf.“
Oder:
„Fenster zu.“
Oder in der ehrlichen Variante:
„Bitte hör auf, warme Luft zu sammeln.“
Der wichtige Punkt ist der Kontext. 25 °C im Juli sind etwas anderes als 25 °C im Dezember mit Kamin. Deshalb sollte ein Hitzewächter nicht nur auf Temperatur reagieren, sondern auch auf Jahreszeit, Außentemperatur und im Idealfall auf Regen, Wind und Anwesenheit.
So wird aus einer simplen Temperaturregel eine kleine Alltagshilfe, die tatsächlich etwas bringt.
Und ganz nebenbei fühlt es sich gut an, wenn das eigene Zuhause bei Hitze nicht nur dekorativ smart ist, sondern aktiv verhindert, dass man im Wohnzimmer zu Ofengemüse wird.
Weiterführende Beiträge
Wenn dich solche lokalen Smart-Home-Lösungen interessieren, passen dazu auch diese Beiträge:
- Shelly Direktverknüpfung – lokale Automationen ohne Cloud
- Licht automatisch einschalten beim PC-Start – So geht’s mit ioBroker und Home Assistant
- Geräte per Geräusch ins Smart Home einbinden: ESP32 erkennt Pieptöne
- Echtes Smart Home – Automatisierung statt Fernbedienung
GrayTheZebra ist Entwickler und Betreiber von prokrastinerd.de mit Fokus auf Smart Home ohne Cloud, ESP32 und MQTT-basierte Systeme. Alle Projekte basieren auf praktischer Umsetzung und eigener Hardwareentwicklung.
Autorprofil und Hintergrund:
Über GrayTheZebra

