Home Assistant Anleitung how to… Automation nur ausführen, wenn sie innerhalb einer bestimmten Zeit nicht bereits ausgeführt wurde

Bei manchen Automatisierungen in Home Assistant kann es sinnvoll sein, dass eine Bedingung der Automatisierung ist diese nur dann auszuführen, wenn die Automatisierung nicht innerhalb einer bestimmten Zeit ausgeführt wurde.

Ich selbst habe einige wenige Automatisierungen, welche in Abhängigkeit von sich nahezu willkürlich ändernden Werten ausgeführt werden werden. Der Wert eines Sensors unterschreitet einen Schwellwert für ein paar Minuten und soll dann die Automatisierung auslösen.

Home Assistant: How to... Kurzanleitungen und Nützliches für Home Assistant!

Eben dieser Wert kann aber auch wieder ansteigen und danach erneut unter den eben erwähnten Schwellwert wieder sinken. In dem Fall einer solchen Wiederholung, möchte ich keine erneute Ausführung der Automatisierung – zumindest nicht, wenn die letzte Ausführung nicht mindestens 12 Stunden zurückliegt.

Ein Beispiel gefällig?

Ich habe in unserer Sauna einen Temperatur-Sensor, welcher über ESPHome [offizielle Homepage ESPHome.io] die aktuelle Temperatur minütlich an Home Assistant meldet (hierzu werde ich bei Gelegenheit noch ein how-to schreiben). Immer dann, wenn die Temperatur unter 50 Grad gesunken ist, unterstelle ich, dass der Saunagang beendet ist. Nun möchte ich, dass immer am Folgetag eines Saunaganges der Boden gewischt wird.

Du magst Home Assistant? Dann abonniere kostenlos meine Beiträge mit Tipps, Tricks und Anleitungen rund um Home Assistant:

Follow Home Assistant
( 410 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!

Da ich ein leicht verhaltensgestörter Mensch bin ( 😉 ), möchte ich hierfür in todoist eine Aufgabe am Folgetag haben. Letztlich muss ich mit der Automatisierung nur abwarten, wenn die Temperatur tief genug sinkt und dann in todoist eine neue Aufgabe für den Folgetag anlegen.

Was aber, wenn nicht nur ich an einem Tag in die Sauna gehe, sondern einige Stunden später auch noch meine Frau? In einem solchen Fall, würde ich auch nach dem zweiten Saunagang wieder unterhalb den Schwellwert von beispielsweise 50 Grad sinken und erneut mit der zuvor beschriebenen Automatisierung eine Aufgabe in todoist erstellen.

Diese zweite Aufgabe wäre aber absolut identisch mit der ersten und somit definitiv überflüssig!

Also habe ich die beschriebene Automatisierung um eine Kondition ergänzt, welche prüft, wann die Automatisierung zuletzt ausgeführt wurde. Und nur, wenn die Automatisierung (also Erstellen einer Aufgabe in todoist für den Folgetag „Keller wischen“) nicht innerhalb der letzten 12 Stunden bereits ausgeführt wurde, darf die Automatisierung „feuern“.

Lange Rede, kurzer Sinn:

- alias: "Wischen nach Sauna"
  trigger:
    platform: numeric_state
    entity_id: sensor.temp_sauna
    below: 50
    for:
      minutes: 5
  condition:
    condition: template
    #12*60*60=43200
    value_template: '{{ as_timestamp(now()) - (as_timestamp(state_attr("automation.wischen_nach_sauna", "last_triggered")) or 0) > 43200 }}'
  action:
  - service: todoist.new_task 
    data:
      content: Keller wischen!
      project: F5c
      due_date_string: Tomorrow

Ein klein wenig Erklärung hierzu:

Mit der Zeile

value_template: '{{ as_timestamp(now()) - (as_timestamp(state_attr("automation.wischen_nach_sauna", "last_triggered")) or 0) > 43200 }}'

…prüfe ich, ob zwischen jetzt („as_timestamp(now())“) und der letzten Ausführung der Automatisierung („last_triggered“) mindestens 43200 Sekunden liegen, was exakt 12 Stunden entspricht (12x60x60 = 43200).

Nur, wenn diese Kondition wahr ist, wird die Automatisierung ausgeführt!

Dieser Beitrag ist Teil einer kleinen Beitrags-Serie rund um den hass.io Home Assistant.

Produktempfehlungen

2 Gedanken zu „Home Assistant Anleitung how to… Automation nur ausführen, wenn sie innerhalb einer bestimmten Zeit nicht bereits ausgeführt wurde“

  1. Hi, Olli,
    deine hier skizzierte Anwendung geht ein wenig in die Richtung meiner Fragestellung: ich möchte in einem definierten Zeitintervall auf Bedingungen prüfen und entsprechende Aktionen auslösen.
    Aktuell nehme ich als Auslöser ‚trigger every 5 minutes every hour‘ – eigentlich bräuchte ich diese Prüfung aber nur in einem kleinen Zeitintervall des Tages (hier: 7-8Uhr).
    Hastu du eine Idee oder Vorschlag, den Trigger auf dieses Zeitfenster zu begrenzen?
    Danke für einen Hinweis.

    Antworten
    • Hi Wolfgang,

      wenn ich dich richtig verstanden habe, würde ich
      trigger:
      - platform: time_pattern
      minutes: "/5"

      und dann als Condition

      - condition: time
      after: '6:59:59'
      - condition: time
      before: '8:00:00'

      Meinst du sowas?

      VG
      Olli

      Antworten

Schreibe einen Kommentar