Anhaltende Benachrichtigungen nach Neustart behalten?

Hallo in die Runde,

ich lasse mich zu jedem mir wichtigen Ereignis per anhaltender Nachricht benachrichtigen, alle Nachrichten haben einen Zeitstempel, gleichzeitig werden neu eingegangene Benachrichtigungen per Automation auch an meine Mobilgeräte verteilt. Ich finde die Übersicht über die anhaltenden Benachrichtigungen in HA gut, so kann man auch später nochmal schneller was nachvollziehen, ohne umständlich anderswo im HA wühlen zu müssen. Leider werden die anhaltenden Benachrichtigungen ja aber mit jedem HA Neustart gelöscht, also gibt es eine Möglichkeit, das zu verhindern und/oder das vielleicht nur Nachrichten älter als x Tage automatisch gelöscht werden?

Hier ist ein Bsp. wie ich das mache:

alias: Batterie unter 10% Benachrichtigung
description: >
Benachrichtigt, wenn einer der Prozent-Batteriesensoren unter 10% fällt oder
ein Binary-Batteriesensor den Status ‘low’ hat – auch nach einem Neustart von
Home Assistant.
triggers:

* entity_id:
  * sensor.bad_schalter_batterie
  * sensor.bewegung_bad_oben_batterie
  * sensor.bewegung_vorsaal_oben_batterie
  * sensor.bewegung_vorsaal_unten_batterie
  * sensor.briefkasten_batterie
  * sensor.carport_bewegungsmelder_batterie
  * sensor.eingang_bewegungsmelder_batterie
  * sensor.kuche_taster_batterie
  * sensor.office_taster_batterie
  * sensor.paket_batterie
  * sensor.schlafzimmer_taster_batterie
  * sensor.hausture_batterie
  * sensor.wohnungsture_batterie
  * sensor.buddy_tracker_batterie
  * sensor.partybox_batterie
  * sensor.roborock_flexi_pro_batterie
  * sensor.husqvarna_automower_batterie
  * sensor.garden_sensor_batterie
  * sensor.water_control_battery_level
  * sensor.heizung_bad_batterie
  * sensor.aarlo_battery_level_buddy
  * sensor.aarlo_battery_level_kamera_buddy
  * sensor.aarlo_battery_level_kamera_carport
  * sensor.aarlo_battery_level_kamera_eingang
  * sensor.aarlo_battery_level_kamera_garten
  * sensor.aarlo_battery_level_klingel
  * sensor.io_chris_batterie
  * sensor.io_sindy_batterie
  * sensor.lounge_taster_batterie
    below: 10
    trigger: numeric_state
* value_template: “{{ is_state(‘binary_sensor.balkonture_sensor_battery’, ‘low’) }}”
  id: balkonture_sensor
  trigger: template
* value_template: “{{ is_state(‘binary_sensor.getranke_sensor_battery’, ‘low’) }}”
  id: getranke_sensor
  trigger: template
* value_template: “{{ is_state(‘binary_sensor.kuchenfenster_sensor_battery’, ‘low’) }}”
  id: kuchenfenster_sensor
  trigger: template
* value_template: “{{ is_state(‘binary_sensor.lagerfenster_sensor_battery’, ‘low’) }}”
  id: lagerfenster_sensor
  trigger: template
* value_template: “{{ is_state(‘binary_sensor.loungfenster_sensor_battery’, ‘low’) }}”
  id: loungfenster_sensor
  trigger: template
* value_template: “{{ is_state(‘binary_sensor.dach_rauchmelder_batterie’, ‘low’) }}”
  id: dach_rauchmelder
  trigger: template
* value_template: “{{ is_state(‘binary_sensor.rauchmelder_vorsaal_oben_batterie’, ‘low’) }}”
  id: rauchmelder_vorsaal_oben
  trigger: template
* value_template: “{{ is_state(‘binary_sensor.rauchmelder_flur_batterie’, ‘low’) }}”
  id: rauchmelder_flur
  trigger: template
* value_template: “{{ is_state(‘binary_sensor.tur_sensor_battery’, ‘low’) }}”
  id: tur_sensor
  trigger: template
* event: start
  trigger: homeassistant
  conditions: [ ]
  actions:
* choose:
  * conditions:
    * condition: template
      value_template: “{{ trigger.platform == ‘homeassistant’ }}”
      sequence:
    * repeat:
      for_each:
      - sensor.bad_schalter_batterie
      - sensor.bewegung_bad_oben_batterie
      - sensor.bewegung_vorsaal_oben_batterie
      - sensor.bewegung_vorsaal_unten_batterie
      - sensor.briefkasten_batterie
      - sensor.carport_bewegungsmelder_batterie
      - sensor.eingang_bewegungsmelder_batterie
      - sensor.kuche_taster_batterie
      - sensor.office_taster_batterie
      - sensor.paket_batterie
      - sensor.schlafzimmer_taster_batterie
      - sensor.hausture_batterie
      - sensor.wohnungsture_batterie
      - sensor.buddy_tracker_batterie
      - sensor.partybox_batterie
      - sensor.roborock_flexi_pro_batterie
      - sensor.husqvarna_automower_batterie
      - sensor.garden_sensor_batterie
      - sensor.water_control_battery_level
      - sensor.heizung_bad_batterie
      - sensor.aarlo_battery_level_buddy
      - sensor.aarlo_battery_level_kamera_buddy
      - sensor.aarlo_battery_level_kamera_carport
      - sensor.aarlo_battery_level_kamera_eingang
      - sensor.aarlo_battery_level_kamera_garten
      - sensor.aarlo_battery_level_klingel
      - sensor.io_chris_batterie
      - sensor.io_sindy_batterie
      - sensor.lounge_taster_batterie
      sequence:
      - condition: template
      value_template: “{{ states(repeat.item)|float(100) < 10 }}”
      - data:
      title: Batteriewarnung (nach Neustart)
      message: >
      Die Batterie von {{
      state_attr(repeat.item,‘friendly_name’) or repeat.item }}
      ist niedrig ({{ states(repeat.item) }}%).
      action: persistent_notification.create
    * repeat:
      for_each:
      - binary_sensor.balkonture_sensor_battery
      - binary_sensor.getranke_sensor_battery
      - binary_sensor.kuchenfenster_sensor_battery
      - binary_sensor.lagerfenster_sensor_battery
      - binary_sensor.loungfenster_sensor_battery
      - binary_sensor.dach_rauchmelder_batterie
      - binary_sensor.rauchmelder_vorsaal_oben_batterie
      - binary_sensor.rauchmelder_flur_batterie
      - binary_sensor.tur_sensor_battery
      sequence:
      - condition: template
      value_template: “{{ is_state(repeat.item, ‘low’) }}”
      - data:
      title: Batteriewarnung (nach Neustart)
      message: >
      Die Batterie von {{
      state_attr(repeat.item,‘friendly_name’) or repeat.item }}
      ist low.
      action: persistent_notification.create
  * conditions:
    * condition: template
      value_template: “{{ trigger.platform == ‘numeric_state’ }}”
      sequence:
    * data:
      title: Batteriewarnung
      message: >
      Die Batterie von {{ trigger.to_state.name }} ist niedrig ({{
      trigger.to_state.state }}%).
      action: persistent_notification.create
  * conditions:
    * condition: template
      value_template: “{{ trigger.platform == ‘template’ and trigger.id is defined }}”
      sequence:
    * data:
      title: Batteriewarnung
      message: >
      {% set binary_map = {
      ‘balkonture_sensor’: ‘binary_sensor.balkonture_sensor_battery’,
      ‘getranke_sensor’: ‘binary_sensor.getranke_sensor_battery’,
      ‘kuchenfenster_sensor’: ‘binary_sensor.kuchenfenster_sensor_battery’,
      ‘lagerfenster_sensor’: ‘binary_sensor.lagerfenster_sensor_battery’,
      ‘loungfenster_sensor’: ‘binary_sensor.loungfenster_sensor_battery’,
      ‘dach_rauchmelder’: ‘binary_sensor.dach_rauchmelder_batterie’,
      ‘rauchmelder_vorsaal_oben’: ‘binary_sensor.rauchmelder_vorsaal_oben_batterie’,
      ‘rauchmelder_flur’: ‘binary_sensor.rauchmelder_flur_batterie’,
      ‘tur_sensor’: ‘binary_sensor.tur_sensor_battery’
      } %}
      Die Batterie von {{ state_attr(binary_map\[trigger.id\],
      “friendly_name”) or binary_map\[trigger.id\] }} ist low.
      action: persistent_notification.create
      mode: parallel

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

Die Benachrichtigungen sind per Design nur bis zum Restart vorhanden. Es gibt mehrere Ansätze das zu ändern. Bei den (mir bekannten) Ansätzen geht es immer darum jede Nachricht irgendwo zu speichern und beim Hochfahren wieder einzulesen und erneut zu erzeugen.

Ansatz 1: Die Nachrichten in MQTT zu speichern. MQTT-Integration nutzt du schon in deine Z2M Setup. Ansatz funktioniert scheinbar wie im englischsprachigen Thread

Ansatz 2: Ich nutze Node-Red und das speichert beim Erstellen der Nachricht diese auch ein ein Textfile, technisch heißt das in Node-Red Context. Auch dieses wird beim Hochfahren von Homeassistant wieder eingelesen und die Notificaitons erneut erstellt.

Ansatz 3: Beispiel von GF-Admin wobei ich mir das nicht näher angesehen habe.

Unabhängig davon wie du das zwischenspeicherst, die Events auf welche du reagieren musst ist von Typ domain “persistent_notification”.

1 „Gefällt mir“

Vielen Dank, habs jetzt mal nur schnell überflogen, beschäftigte mich dann morgen mal damit.