Home Assistant Benachrichtigungen, wenn du heimkommst!

Ich habe mir jetzt ein eigenes System erstellt, welches uns benachrichtigt, wenn wir zu hause sind bzw. nach hause kommen…

Der Vorteil ist auch, dass es deutlich schlanker ist, als das was Simon vor 2 Jahren geschrieben hat :slight_smile:

Ich möchte es einmal mit euch Teilen…

Es besteht lediglich aus 2 Skripten und einer Automation. Es werden jedoch weiterhin die von Simon erstellen binary_sensor.ist_jemand_zuhause und sensor.pending_notification_sensor verwendet. Die müssen stehen bleiben oder wie in Simons Tutorial erstellt werden.

dieses Script ist der “Pförtner” dieses entscheidet, ob eine Nachricht gespeichert wird, oder zugestellt wird

alias: Benachrichtige Personen die zuhause sind
description: >-
  Hauptskript: Entscheidet, ob eine Nachricht sofort gesendet oder gespeichert
  wird.
fields:
  title:
    name: Titel
    description: Der Titel der Benachrichtigung (z.B. Ally oder Waschmaschine)
    example: Hunde-Alarm
    selector:
      text: null
    required: true
  message:
    name: Nachricht
    description: Der eigentliche Text der Nachricht
    example: Ally hat das Wohnzimmer verlassen.
    selector:
      text:
        multiline: true
    required: true
  data:
    name: Zusatzdaten
    description: Optionale Daten (z.B. Bilder oder Klick-Aktionen)
    default: {}
    selector:
      object: null
  ausgabegerate_echos:
    name: Ausgabegerate (Echos)
    required: true
    description: Welche Alexa soll sprechen? (z.B. media_player.echo_studio_wohnzimmer)
    selector:
      target:
        entity:
          domain: media_player
          integration: alexa_media
sequence:
  - variables:
      ziel_liste: >-
        {% set entities = ausgabegerate_echos.entity_id %} {% if entities is
        string

        %}
          - {{ entities }}
        {% else %}
          {% for e in entities %}
          - {{ e }}
          {% endfor %}
        {% endif %}
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.ist_jemand_zuhause
            state: "off"
        sequence:
          - action: script.nachricht_im_speicher_ablegen
            data:
              title: "{{ title }}"
              message: "{{ message }}"
              data: "{{ data if data is mapping else {} }}"
      - conditions:
          - condition: state
            entity_id: binary_sensor.ist_jemand_zuhause
            state: "on"
        sequence:
          - parallel:
              - if:
                  - condition: state
                    entity_id: person.dennis_2
                    state: home
                then:
                  - action: notify.mobile_app_pixel_9_pro
                    data:
                      title: "{{ title }}"
                      message: "{{ message }}"
                      data: |-
                        {% set extras = data if data is mapping else {} %}
                        {% set priority_stuff = {
                          "priority": "high",
                          "ttl": 0,
                          "importance": "high",
                          "push": {"priority": "high"}
                        } %}
                        {{ dict(priority_stuff, **extras) }}
              - if:
                  - condition: state
                    entity_id: person.christos
                    state: home
                then:
                  - action: notify.mobile_app_chros_handy
                    data:
                      title: "{{ title }}"
                      message: "{{ message }}"
                      data: |-
                        {% set extras = data if data is mapping else {} %}
                        {% set priority_stuff = {
                          "priority": "high",
                          "ttl": 0,
                          "importance": "high",
                          "push": {"priority": "high"}
                        } %}
                        {{ dict(priority_stuff, **extras) }}
              - action: notify.alexa_media
                data:
                  message: "{{ title }}: {{ message }}"
                  data:
                    type: announce
                  target: "{{ ausgabegerate_echos.entity_id }}"


Dieses Script ist dafür da, damit die Nachrichten gespeichert werden.

alias: Nachricht im Speicher ablegen
description: Speichert eine Nachricht im Sensor, wenn niemand zu Hause ist.
fields:
  title:
    name: Titel
  message:
    name: Nachricht
  data:
    name: Zusatzdaten
    default: {}
sequence:
  - event: set_entity_value
    event_data:
      entity_id: sensor.pending_notification_sensor
      state: "{{ (states('sensor.pending_notification_sensor') | int(0)) + 1 }}"
      attr:
        list: >
          {% set current = state_attr('sensor.pending_notification_sensor',
          'list') | default([], true) %} {% set new_entry = {
            'title': title,
            'message': message,
            'data': data if data is mapping else {}
          } %} {{ current + [new_entry] }}

Zu guter letzt die Automation, die beim Heimkommen die Nachrichten dann zeitverzögert zustellt:

alias: Zustellung verpasster Nachrichten bei Heimkehr
description: Geht alle gespeicherten Nachrichten durch und sendet sie einzeln.
triggers:
  - entity_id: binary_sensor.ist_jemand_zuhause
    from: "off"
    to: "on"
    trigger: state
conditions:
  - condition: numeric_state
    entity_id: sensor.pending_notification_sensor
    above: 0
actions:
  - repeat:
      for_each: >-
        {{ state_attr('sensor.pending_notification_sensor', 'list') |
        default([], true) }}
      sequence:
        - action: script.benachrichtige_personen_die_zuhause_sind
          data:
            title: "🏠 Verpasst: {{ repeat.item.title }}"
            message: "{{ repeat.item.message }}"
            data: "{{ repeat.item.data | default({}) }}"
        - delay: "00:00:01"
  - event: set_entity_value
    event_data:
      entity_id: sensor.pending_notification_sensor
      state: 0
      attr:
        list: []

Ich habe die bei mir nun auch mit “Verpasst:” ergänzt damit man auch gleich sieht, dass dies “aufgelaufene” Benachrichtigungen sind und nicht aktuell - Zudem habe ich noch die Ausgabe auf meine Echos hinzugefügt.

Es braucht noch etwas feinschliff aber dies Funktioniert sehr gut und ist deutlich schlanker als die damalige Lösung :slight_smile: