Mit zwei smarten Automatisierungen in Home Assistant alle Fenster überwachen

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 😉

Zigbee2MQTT für bestes ZigBee mit Home Assistant

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:

Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen
Endlich eine smarte Fensterüberwachung für dein Smart Home

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
( 421 Followers )
X

Follow Home Assistant

E-mail : *
* Ich stimme der Datenschutzerklärung zu!

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.

7 Gedanken zu „Mit zwei smarten Automatisierungen in Home Assistant alle Fenster überwachen“

  1. 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?

    Antworten
    • 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.

      Antworten
      • 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 🙂

        Antworten
    • 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:

      
      notify:
        - platform: group
          name: ALL_DEVICES
          services:
           - service: mobile_app_pixel_8_pro
           - service: mobile_app_pixel_8
      
      

      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

      Antworten

Schreibe einen Kommentar