Triggerzeit berechnen?

Hallo zusammen!

Ich bin aktuell meine aktuelle openHab Installation und Automatisierungen nach Home Assistant zu migrieren. Dabei haben sich in den letzten Jahren viele unschöne Umsetzungen angesammelt, die ich jetzt gerne mit HA besser lösen möchte. Hoffentlich kann mir jemand bei diesem Thema helfen, oder mir einen anderen Denkanstoß geben:

Für die alltägliche Morgenroutine, habe ich aktuell eine Automatisierung erstellt, die über einen Helper (input_datetime) getriggert wird. In der Automatisierung sind diverse Delays drin um anschließend nach einer bestimmten Zeit weitere Entitäten zu steuern. Also bspweise: Trigger um 5:30 => Treppenbeleuchtung An, Delay 1h => Rollladen Esszimmer auf 50%, Delay 1h > Rollladen Esszimmer Hoch.
An und für sich funktioniert das auch gut und zuverlässig, es sei denn während eines Delays wird HA neugestartet. Dann ist die Automatisierung gestoppt und läuft nicht bis zum Ende…
Daher hatte ich die Idee, die weiteren Trigger aufgrund des input_datetime Helpers zu berechnen, welcher dann eine eigene Automatisierung triggert. Allerdings komme da aber nicht weiter…

Hat jemand da eine Idee wie man das Umsetzen könnte?

Danke!

Gruß,
Christian

1 „Gefällt mir“

Herzlich willkommen hier im HA-Forum! :slight_smile:

Dafür könnte man den Trigger Template nutzen und dann sowas in der Art triggern:

{{ state_attr('input_datetime.xxx', 'timestamp') + 3600 }}

Hallo zusammen!

Danke für die Antworten :smiling_face:

@maxe
Diesen Ansatz hatte ich schonmal probiert, das hat aber nicht funktioniert. Zum testen habe jetzt mal einen eigenen Helper und eine extra Automatisierung erstellt. Leider feuert der Trigger nicht. Intersannterweise auch nicht, wenn ich den direkten datetime Helper verwende, also ohne Offset eingebe:

  {{ state_attr('input_datetime.testtrigger', 'timestamp')  }}

Den Helper habe ich so erstellt:
grafik

Die Systemzeitzone ist korrekt eingestellt und generell passen die datetime Trigger ja auch… So richtig kann ich mir keinen Reim daraus machen…

Gruß,
Christian

der datetime (ohne das Templating) sollte als Trigger in einer Automation aber funktionieren. Wie sieht denn die Automation aus?

Edit: mir fällt gerade ein, dass man am besten noch ein now() mit einbindet. Hier mal was ungetestetes:

{{ as_timestamp(now()) >= state_attr('input_datetime.testtrigger', 'timestamp') + 3600 }}

Danke, das werde ich mal probieren.
Die Automatisierung sieht so aus:

alias: Test Trigger
description: ""
trigger:
  - platform: template
    value_template: "  {{ state_attr('input_datetime.testtrigger', 'timestamp')  }}"
    enabled: false
  - platform: time
    at: input_datetime.testtrigger
condition: []
action:
  - service: notify.pushover_haustur
    data:
      message: Test!
mode: single

Den Template Trigger hatte ich vorhin deaktiviert und den Time Trigger eingebaut. Damit feuert der Trigger.
Ich probiere es aber nochmal mit dem now().

Gruß,
Christian

Ich bin mir grad gar nicht sicher, ob das überhaupt funktioniert, da im timestamp ja der Tag fehlt. Ich hab noch nie mit datetime gerechnet.

Da müsste man sich echt mal schlau lesen …

Versuche es mal damit
{{ states('input_datetime.testtrigger') }}

oder wenn du berechnen willst, vielleicht so
{{ (state_attr("input_datetime.testtrigger", "timestamp") + 3600) | timestamp_custom('%H:%M') }}

Ich hab grad mal kurz mit today_at() gespielt, sollte so funktionieren:

{{ (now()) >= (today_at(states('input_datetime.testtrigger')) + timedelta(seconds=3600)) }}

@sirector
Das funktioniert leider nicht, die Automaitierung wird nicht getriggert

@maxe
DAS hat jetzt perfekt funktioniert. Der erste Test mit

{{ (now()) >= (today_at(states('input_datetime.testtrigger'))) }}

funktionierte bereits und anschließend mit den berechneten Werten hat es dann auch geklappt.

Vielen Dank!!!

Kann mir jemand erklären, wie ich in der Automation den ÜBER () Wert direkt in der Automation errechnen kann?

  - platform: numeric_state
    entity_id:
      - sensor.delta_2_max_battery_level
    above: >-
      {{ float(states('number.delta_2_max_max_charge_level')) - 5 }}