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.

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.
Du magst Home Assistant? Dann abonniere kostenlos meine Beiträge mit Tipps, Tricks und Anleitungen rund um Home Assistant:
Follow Home Assistant
Garantiert kein Spam, keine Werbung und immer mit Abmelde-Link, solltest du es dir anders überlegen!
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.
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!
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.
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