Benachrichtigung wenn Wartung fällig ist

Ich würde mir gerne Benachrichtigungen schicken lassen wenn eine Wartung fällig ist.

Aktuell habe ich für jedes Wartungsereignis ein input_datetime damit ich tracken, kann wann die letzte Wartung war z.B. vor 4 Wochen.

Da es einige Sensoren sind hätte ich gerne eine generische Lösungen gefunden, anstatt stupide für jeden Sensor eine eigene Automation anzulegen.

Erste Idee war ein Attribut im Sensor zu setzen, nach wieviel Monaten benachrichtigt werden soll, aber leider kann man im input_datetime keine eigene attribute hinterlegen.

Kennt jemand etwas passendes?

Gehe ich richtig in der Annahme, dass die input date_time, das Datum der letzten Wartung repräsentieren. Jedes Gerät hast unterschiedliche Wartungsintervalle.
Bsp. an 2 Geräten

  • input_datetime.wartung_1 → Gerät 1 → Wartungsintervall 30 d
  • input_datetime.wartung_2 → Gerät 2 → -> Wartungsintervall 60 d

Du kannst alles in eine Automation packen und arbeitest mit Templates als Auslöser:

{{ now() >= states('input_datetime.wartung_1')|as_datetime|as_local +
            timedelta(days=30) }}

Also input datetime + 30 Tage als Auslöser
Mit id: definierst Du für jeden Auslöser den Gerätenamen und kannst mit diesem Template den Gerätenamen ausgeben.

 {{trigger.id }}
alias: Wartung Erinnerung
description: ""
triggers:
  - trigger: template
    value_template: |-
      {{ now() >= states('input_datetime.wartung_1')|as_datetime|as_local +
            timedelta(days=30) }}
    id: Gerät 1
  - trigger: template
    value_template: |-
      {{ now() >= states('input_datetime.wartung_2')|as_datetime|as_local +
            timedelta(days=60) }}
    id: Gerät 2
conditions: []
actions:
  - action: notify.xyz
    metadata: {}
    data:
      message: Wartung für die {{trigger.id }} ist fällig
mode: single

Gruß Osorkon

1 „Gefällt mir“

Das war gestern noch mein 1. Versuch. Ein wenig fehleranfällig weil man viel Copy Paste mit dem Template machen muss, aber ein Anfang und besser als x Automationen.

Danke dir :+1:

Wenn Du soviel Geräte hast, dann kannst Du Dir auch ein Marco schreiben und dann in der Automation nur noch das Marco aufrufen und den Input date_time übergeben. Oder die Deluxe Version, Du erstellst Dir ein Blueprint. :grin:

Gruß Osorkon

1 „Gefällt mir“

Das teste ich mal :+1:. Viel empfindet jeder anders aber so um die 20 werden es schon sein

Du könntest dir jeweils einen weiteren input_datetime-Helfer anlegen und dort schon das neue Datum über z. B. Automationen setzen. Ich habe etwas ähnliches, vielleicht kannst du das gebrauchen

alias: "Steckdose: Tapo Wäschezimmer aus set Zeitstempel"
description: >-
  Schreibt die Aus-Zeit in eine Helper um spätestens 1 Woche später die
  Steckdose wieder einzuschalten.
mode: single
triggers:
  - entity_id:
      - switch.tapo_waschezimmer
    from: "on"
    to: "off"
    trigger: state
conditions: []
actions:
  - target:
      entity_id: input_datetime.steckdose_tapo_waschezimmer
    data:
      datetime: "{{ (now() + timedelta(days=7)).strftime('%Y-%m-%d %H:%M:%S') }}"
    alias: Setzt den Wert eines Helper auf Datum/Uhrzeit der Aktion + 7 Tage
    action: input_datetime.set_datetime

Den neuen Helfer nutze ich als Trigger.

1 „Gefällt mir“

So here we go:

blueprint:
  name: Maintenance interval
  description: Actions to perform when the maintenance interval is due
  author: MelleD
  domain: automation

  input:
    wartung_sensors:
      name: Wartung Sensoren
      selector:
        entity:
          multiple: true
          domain: binary_sensor
    due_notification:
      name: Maintenance Interval Due Notification
      description: Create a persistent notification when the maintenance is due.
      default: True
      selector:
        boolean:
    high_notification:
      name: Remove Due Notification
      description: Remove the persistent notification when the maintenance is done.
      default: True
      selector:
        boolean:
    additional_conditions:
      name: Additional conditions
      description: |
        Extra conditions you may want to add to this automation
        (Example: Home occupied)
      default: []
      selector:
        condition:
    on_due_actions:
      name: On Low Actions
      description: User actions to run on battery low. Use any event data via trigger.event.data.xxx
      default: []
      selector:
        action:
    on_high_actions:
      name: On High Actions
      description: User actions to run on battery returning from low. Use any event data via trigger.event.data.xxx
      default: []
      selector:
        action:

variables:
  due_notification: !input due_notification
  high_notification: !input high_notification

triggers:
  - trigger: state
    id: due
    entity_id: !input wartung_sensors
    from: "off"
    to: "on"
  - trigger: state
    id: high
    entity_id: !input wartung_sensors
    from: "on"
    to: "off"

conditions:
  #- condition: template
  #  alias: Only problem device class and entity id which contains 'wartung'
  #  value_template: |-
  #    {{ 'wartung' in trigger.entity_id and state_attr(trigger.entity_id, 'device_class') == 'problem' }}
  - alias: User pick
    condition: !input additional_conditions

actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - due
        sequence:
          - if:
              - condition: template
                value_template: "{{ due_notification }}"
            then:
              - action: persistent_notification.create
                data:
                  title: |
                    Wartung fällig
                  notification_id: "maintenance_interval_{{ trigger.entity_id }}"
                  message: >
                    Wartung von {{state_attr(trigger.entity_id,'friendly_name')}} ist fällig!
          - alias: "Run user on due actions"
            choose: []
            default: !input "on_due_actions"
      - conditions:
          - condition: trigger
            id:
              - high
        sequence:
          - if:
              - condition: template
                value_template: "{{ due_notification }}"
            then:
              - action: persistent_notification.dismiss
                data:
                  notification_id: "maintenance_interval_{{ trigger.entity_id }}"
          - alias: "Run user on high actions"
            choose: []
            default: !input "on_high_actions"
mode: queued

Was habe ich gemacht:

Ich habe mir zu jeder Wartung einen binary sensor angelegt

  - name: wartung_rauchmelder_alarm
    unique_id: wartung_rauchmelder_alarm
    device_class: problem
    state: >
      {{ now() >= states('input_datetime.wartung_rauchmelder')|as_datetime|as_local + timedelta(days=365) }}

Wenn es von on auf off geht
Wird eine Nachricht erstellt

Zusätzlich kann man eine Action noch angeben ich lasse mir noch eine Nachricht aufs Handy schicken

Wenn es von off auf on geht wird die wieder gelöscht

Was mir aktuell nicht gefällt:
a) Man muss alle binary sensor immer der automation hinzufügen.
Ich hätte gerne einen dynamischen trigger sobald irgendein binary sensor auf on geht, dass dann getriggert wird, aber das klappt nicht
b) Ich hätte gerne noch ein blueprint sobald die Nachricht gelöscht wird, dass das input_datetime automatisch auf das aktuelle Datum gesetzt wird.

Hoffe das irgendwie mit Events zu lösen