Automation nur alle 5 Minuten erlauben

Hallo,

ich habe in einer Automation unter “Und wenn (optional)” folgendes eingefügt (Chat GPT)

condition: template
value_template: >
  {{ (as_timestamp(now()) -
  as_timestamp(states.automation.wa_fast_fertig_benachrichtigung.attributes.last_triggered
  | default(0))) | int > 300 }}

Dies soll bewirken das die Automation nur alle 5 Minuten (300 Sekunden) ausgeführt werden darf.
Klappt aber leider nicht !?!.

Kann mir da jemand helfen ?

Gruß Alexander

:crayon:by HarryP:Codezeilen formatiert (bitte immer in </> einbinden)

Erst auf ChatGPT setzten und dann hier nachfragen, wenn es nicht funktioniert.:rage:

Frag doch mal beim „Ersteller“ nach, warum es nicht funktioniert!

1 „Gefällt mir“

Wo ist das Problem? Wozu ist denn das Forum da, wenn nicht dazu, bei Problemen und Fragen die Hilfe von anderen anzufragen. Wer nicht helfen will, lässt es einfach.

Wäre es etwas anderes, wenn Alexander geschrieben hättet “ich habe in einer Automation unter “Und wenn (optional)” folgendes eingefügt (Code selbst ausgedacht)” - ich denke nein.

Leider habe ich selber keine Idee, wie die Funktion von Alexander machbar wäre, sonst hätte ich gerne geholfen.

Gruß, Lars

1 „Gefällt mir“

Na, dieser Eintrag hilft nun wirklich niemandem weiter. … also der von harryp

Weil wir hier nicht zu einem „ChatGPT-Reparaturforum“ verkommen wollen!

Ja, was sagt denn der Ersteller, also ChatGPT, warum es nicht funktioniert?

Inzwischen habe ich etwas rum probiert.

Ich denke, das Problem ist, dass die condition ja nur zum Einsatz kommt, wenn die Automation schon ausgelöst wurde. Und damit ist die Abfrage ob die letzte Auslösung mehr als 300 Sekunden vorbei ist, sofort TRUE.

Was ist denn, wenn du auf die letzte Änderung des zu schaltenden Gerätes (wenn du etwas schalten möchtest) abfragst. Ich habe für da für eine Lampe mal eine Automation geschrieben, welche alle 10 Sekunden auslöst, aber die Lampe nur alle 30 Sekunden geschaltet wird. Vielleicht ist das ja ein Ansatz für Dich:

alias: automation_alle_30_sekunden
description: ""
triggers:
  - trigger: time_pattern
    seconds: /10
conditions:
  - condition: template
    value_template: >-
      {{ (as_timestamp(now()) -
      as_timestamp(states.light.licht_flur_kinder_l1.last_changed)) | int(0) >
      30}}
actions:
  - action: light.toggle
    metadata: {}
    data: {}
    target:
      entity_id: light.licht_flur_kinder_l1
mode: single

Gruß, Lars

… oder du machst dir das Leben einfach, erstellst dir einen Helfer Typ Timer.

In der Automatik schaltetst du den immer ein wenn die Automation durchgelaufen ist. Bei der Condition prüfst du ob der Helfer Typ Timer aktiv ist. Nur wnen er “idle” ist gehts weiter.

Vorteil hierbei, du kannst den Timer manuell deaktivieren oder auch in anderen Automationen nutzen oder darauf reagieren.

Timer heißt bei mir timer.testtimer. Auslöster war zum testen die Uhrzeit.

alias: testtimer
description: ""
triggers:
  - trigger: time
    at: "16:38:45"
conditions:
  - condition: state
    entity_id: timer.testtimer
    state: idle
actions:
  - action: timer.start
    metadata: {}
    data:
      duration: "00:00:30"
    target:
      entity_id: timer.testtimer
  - <<<<<< actions die du eigentlich starten willst >>>>>>
mode: single

Edit, du kannst zusätzlich auf Status “paused” prüfen für den Fall, dass jemand in der Oberflächt den Timer pausiert hat …

Wenngleich ich die Lösung mittels Helfer wie von @mostie vorgeschlagen intuitiver finde:

Der default-Wert wird wie bei dir beschrieben nicht gesetzt. Wenn die Automatisierung noch nie ausgelöst wurde, dann wirft das template einen Fehler. Wurde die Automatisierung zuvor einmal ausgelöst, dann müsste es eigentlich klappen.

Folgendes Template sollte den default-Wert korrekt setzen, bei mir hat es so jedenfalls mit einer noch nie ausgelösten Automatisierung sowie anschließend nach der ersten Auslösung wie gewünscht funktioniert:

{{ 
  now().timestamp()
  - as_timestamp(
      state_attr('automation.wa_fast_fertig_benachrichtigung', 'last_triggered'), 
      default=0
    )
  > 300
}}

Zum Testen von Templates kannst du in den Entwicklerwerkzeugen unter “Template” recht gut herumspielen und schauen, ob ein Template funktioniert bzw. welchen Fehler es ausgibt. Ggf. musst du den Namen der Automatisierung anpassen, ich habe aus deinem Beispiel oben erstmal “wa_fast_fertig_benachrichtigung’” übernommen.

Das Einfügen in deiner Automatisierung geht am einfachsten im grafischen Editor unter +Bedingung Hinzufügen, Andere Bedingungen, Template. Dann musst du nicht in den Automatisierungs-Yaml-Code.

PS: Ich finde es vollkommen legitim Tools wie ChatGPT für erste Ansätze zu nutzen. Genauso, wie es ja auch selbstverständlich sein sollte, erstmal im Forum nach existierenden Antworten zu schauen und diese ggf. auszuprobieren. Und wenn es nicht klappt, dann fragt man eben nach. Die verärgerte Reaktion von harryp kann ich nicht nachvollziehen.

Hi, das mit dem Helfer hatte ich bis jetzt so. Ich fände es angenehmer wenn die Automation für sich steht und nicht noch andere (Helfer) eine Rolle spielen.

Ich schalte keine Lampe. Die Automation sendet mir eine WA wenn die Waschmaschine fertig ist, manchmal macht diese das 2x innerhalb von 30 sek. das möchte ich mit der 5min Sperre umgehen.

Du könntest evtl. auch als letzte Schritte der Automation die Automation ausschalten und mit 5 Minuten Verzögerung wieder einschalten.

gute Idee… schaue ich mir mal an.

WA überwache ich auch, nutze dabei diesen Blueprint - ist vielleicht auch etwas für Dich.

Gruß, Lars

Wenn das mit “delay” gemacht wird übersteht das einen Reboot nicht und die Automation bleibt dauerhaft deaktivert.