Mit Home Assistant und entsprechenden Sensoren ist es super einfach die Fenster zu Hause zu überwachen. Wir haben beispielsweise Fenster im Keller die wir zum Lüften immer wieder mal öffnen und dann vergessen (da sie im Keller sind). Der Keller wird dann schon durchgelüftet und einen Tag später stellen wir fest, dass die Fenster ja noch offen sind. Also schnell ein paar ZigBee-Fenstersensoren installiert und mit Zigbee2MQTT gepaired und schon können die Fenster überwacht werden.
Du nutzt noch kein Zigbee2MQTT in HA? Dann schau Mal hier vorbei, du wirst es ziemlich sicher lieben 😉
Nun bedarf es noch guter Automatisierungen um das Ganze auch wirklich smart zu machen. Ich würde gerne von HA eine Push-Benachrichtigung auf mein Handy erhalten, wenn ein Fenster für 30 Minuten geöffnet ist. Sobald das Fenster gewchlossen wird, soll diese Push-Benachrichtigung aber auch wieder verschwinden. Auf dem Handy bleiben dann nur die Push-Benachrichtigung von tatsächlich noch offenen Fenstern.
Du bist zu faul zum Lesen? Hier gibt’s das Ganze auch als Video für dich:
Passende ZigBee-Sensoren zur Überwachung deiner Fenster und Türen (beide nutze ich seit Jahren):
Du magst Home Assistant? Dann abonniere kostenlos meine Beiträge mit Tipps, Tricks und Anleitungen rund um Home Assistant:
Follow Home Assistant
Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders überlegen!
Früher (ich nutze HA seit 2018) hätte ich für jeden Sensor (also jedes Fenster) zwei Automatisierungen angelegt:
1. Sende eine Push-Benachrichtigung für Fenster X, wenn Fenster X für 30 Minuten geöffnet ist
2. Entferne die Push-Benachrichtigung für Fenster X, wenn Fenster X wieder geschlossen wurde.
Und das für jedes Fenster. Bei uns im Keller haben wir 3 überwachte Fenster, weshalb ich 6 Automatisierungen anlegen müsste. Kann man machen, aber mit HA geht das natürlich schlanker und smarter:
Eine universelle Automatisierung für alle zu überwachenden Fenster die die Push-Benachrichtigung versendet und eine weitere universelle Automatisierung um beim Schließen eines dieser Fenster die jeweilige Push-Benachrichtigung wieder zu entfernen! Also in meinem Fall 2 Automatisierungen statt 6!
Wichtig ist hierbei einzig, dass du in beiden Automatisierungen als Trigger die gleichen Fenster nutzt. Den YAML-Code der 1. Automatisierung findest du hier:
alias: Kellerfenster-Benachrichtigung description: "" trigger: - type: opened platform: device device_id: fe8da7b17f12cfd4704a4c877844703e entity_id: 4b80eb770628ddd211d23bae5bb65c7d domain: binary_sensor for: hours: 0 minutes: 30 seconds: 0 - type: opened platform: device device_id: ca7072e45504c096264730f07c862042 entity_id: 363b48f2b8f2df4dcc2fee8d0daba6bb domain: binary_sensor for: hours: 0 minutes: 30 seconds: 0 - type: opened platform: device device_id: 7209f777d1c1b53f35852f432239b11e entity_id: a71d7adabb77a17859f2a836b2938612 domain: binary_sensor for: hours: 0 minutes: 30 seconds: 0 condition: [] action: - service: notify.ALL_DEVICES data: title: Fenster offen! message: >- {{ trigger.to_state.attributes.friendly_name }} ist seit >30 Minuten offen! data: tag: kellefenster-{{ trigger.to_state.attributes.friendly_name }} mode: single
Du musst hier natürlich die Entitäten deiner Sensoren anpassen und die korrekte Entität für die Push-Benachrichtigung angeben. Beim zweiten Code für das Widerrufen der Push-Benachrichtigung sieht es dann ähnlich aus:
alias: Benachrichtigung-Keller-Revoke description: "" trigger: - type: not_opened platform: device device_id: fe8da7b17f12cfd4704a4c877844703e entity_id: 4b80eb770628ddd211d23bae5bb65c7d domain: binary_sensor - type: not_opened platform: device device_id: ca7072e45504c096264730f07c862042 entity_id: 363b48f2b8f2df4dcc2fee8d0daba6bb domain: binary_sensor - type: not_opened platform: device device_id: 7209f777d1c1b53f35852f432239b11e entity_id: a71d7adabb77a17859f2a836b2938612 domain: binary_sensor condition: [] action: - service: notify.ALL_DEVICES data: message: clear_notification data: tag: kellefenster-{{trigger.to_state.attributes.friendly_name}} mode: single
In beiden Automatisierungen nutzen wir {{ trigger.to_state.attributes.friendly_name }} um zu ermitteln, welche Entität (konkret dessen leserlicher Name) die Automatisierung ausgelöst hat. Diesen nutzen wir dann, um der Push-Benachrichtigung hiermit einen eindeutigen Namen „zu bauen“: tag: kellefenster-{{trigger.to_state.attributes.friendly_name}} Somit können wir beim Schließen des Fensters dessen Push-Benachrichtigung direkt ansprechen und somit diese Push-Benachrichtigung widerrufen.
Mit diesen beiden universellen Automatisierungen überwache ich die drei Fenster im Keller. Ist eines der Fenster für 30 Minuten geöffnet, erhalten ich auf mein Handy eine Push-Benachrichtigung. Wird das Fenster geschlossen, verschwindet genau diese Push-Benachrichtigung automatisch wieder von meinem Handy.
Produktempfehlungen
Hm, es sah so einfach aus, doch ich scheitere bereits an der ersten Automation
Nachdem ich rausgefunden habe, dass ich zuerst die ALL_DEVICES gruppe noch konfigurieren muss, bekomme ich nun die Meldungen (Im Trace)
„`
Executed: July 20, 2024 at 9:29:58 AM
Error: Error rendering data template: UndefinedError: ‚dict object‘ has no attribute ‚to_state‘
Executed: July 20, 2024 at 9:32:27 AM
Error: Error rendering data template: UndefinedError: ‚dict object‘ has no attribute ‚from_state‘
„`
Hier das ganze YAML.
„`
alias: FensterNotification_EG_an
description: „“
trigger:
– type: opened
platform: device
device_id: b7e9b016e7e689d34b255118ca606c0f
entity_id: c4c6a502bbf8f2841ddccffb6a603a6e
domain: binary_sensor
for:
hours: 0
minutes: 0
seconds: 30
– type: opened
platform: device
device_id: 08ddb79ddfdfcd626ce5961e6ad6fa57
entity_id: ccc615984179d641fd39818396311cd7
domain: binary_sensor
for:
hours: 0
minutes: 0
seconds: 30
condition: []
action:
– service: notify.all_devices
data:
title: Fenster offen!
message: „{{ trigger.to_state.attributes.friendly_name }} ist seit >30 Minuten offen!“
data:
tag: kellefenster-{{ trigger.to_state.attributes.friendly_name }}
mode: single
„`
Was könnte falsch sein?
Kann es sein, dass du die Automatisierung manuell auslöst, also über das UI und „Ausführen“? Die Fehlermeldung spricht dafür. Das geht in diesem Fall nicht, da aufWerte/Daten der Auslöser zurückgegriffen wird, die es dann ja nicht gibt.
Teste mal ohne manuelles auslösen, sondern durch öffnen eines relevanten Fensters bspw.
Hi Olli,
danke für deine schnelle Antwort.
Der Hinweis mit dem manuellen Auslösen war wichtig, aber nicht das einzige Problem. Ich hab mir (wegen den Temperaturen will ich grade nicht wirklich ein Fenster auf machen 😀 ) einen Behelf mit einem „Helper“ Toggle Switch gebaut. Mit dem kann man Öffnen und Schließen (wichtig für das revoken der Notification, mit einem Button hab ich das nicht hinbekommen) simulieren.
Ich hab irgendwie nicht so ganz verstanden wann und wieso meine Automation nicht speicherbar ist wenn man Eigenschaften im YAML Editor editiert.
Meine Lösung sieht jetzt so aus, dass die Notification Nachricht anscheinend zwingend in Quotes stehen muss, sonst speichert er das gar nicht.
Ansonsten habe ich das jetzt über einige Iterationen hinbekommen. Ichhabe noch für jedes Geschoss einen „Master switch“ mit dem ich die Notifications ausschalten kann.
Eine kleine Schwierigkeit ist noch: ich habe zwei Arten von Homematic Fenster Sensoren verbaut, optische und mechanische. Letztere haben kein „Open“ Event wie die optischen, sondern drei Zustände: Geschlossen, Gekippt, Geöffnet. Daher muss man zwei trigger für „Offen“ (Open + Tilted) in die Automation machen – und statt Device dann Entity->State.
Eigtl, wollte ich noch eine Wiederholung der Notification implementieren. Bis ich dein Video gesehen habe, wusste ich gar nicht, dass ich an die Apps Notifications schicken kann und hatte das per XMPP gemacht. Mal schauen, sollte sich aber über einen Building Block in den Actions irgendwie regeln lassen, wenn ich das wirklich brauche.
Werde es jetzt erst mal ausgiebig testen, vielen Dank nochmal 🙂
Die Wiederholung ist vermutlich am einfachsten, wenn du statt einer Notification einen Alert nutzt: https://www.home-assistant.io/integrations/alert/
Alerts kannst du auch mit einem Tag versehen und somit revoken/ansprechen.
Wenn Bedarf besteht, kann ich ein Beispiel erstellen.
Vielen Dank. Schaue ich mir mal an!
Hallo, bei mit geht das notify.ALL_DEVICES nicht, ich kann den service auch in den Entwickler tools nicht finden?
Gruß Reinhard
Hi Reinhard,
mein Fehler, da ich das nicht explizit erwähnt habe! Ich nutze dafür eine Notify-Group, welche die Geräte unter dem Namen ALL_DEVICES bündelt. Bei mir sieht das dann in der configuration.yaml wie folgt aus:
Du musst das natürlich um deine Endgeräte anpassen, die die HA-App installiert haben. Und hier konkret die Notify-Services „suchen“, also für die erste Zeile der Auflistung lautet der Dienst bei mir notify.mobile_app_pixel_8_pro (hierüber würde nur das eine Handy die Benachrichtigung erhalten). Am einfachsten findest du das unter Entwicklerwerkzeuge -> Dienste und da dann ins Dropdown „notify“ eingeben und schauen was kommt.
Sonst gerne noch mal melden, sollte das nicht hilfreich/verständlich sein!
VG
Olli