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 
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 