Verzögerungzeit Sonnenuntergang im Helfer

ThomasG

New member
Ich möchte auf einem Dashboard die Verzögerungszeit (hier: Helfer "astrodelay") zum Sonnenuntergang ablegen, so dass die Aktion entsprechend später ausgeführt wird.
Ich war fälschlicherweise davon ausgegangen, dass dies über den Offset (input als “number” oder “datetime” deklariert) möglich ist.
Also so funktioniert das schon mal nicht:

YAML:
triggers:
  - trigger: sun
    event: sunset
    offset:  input_datetime.astrodelay

In einem anderen Forum wird mir ausschließlich eine Lösung mit "platform template" unkommentiert um die Ohren gehauen. Das kann doch nicht die einzige Lösung sein, dass man dutzende Zeilen kryptischen Code schreiben muss, um eine für eine Home-Automation essentielle Funktion zu realisieren? Falls doch, gibt es in diesem Forum jemanden, der die Geduld besitzt mir den erforderlichen Code zu erklären?
 
Ich möchte im Dashboard eine Zeitspanne festlegen (z.B. 1h) und, solange ich diesen Wert im Dashboard nicht ändere, soll die Aktion in der Automation jeden Abend 1h nach Sonnenuntergang ausgeführt werden. Im Prinzip möchte ein "User interface" haben, ohne, dass man an der Automation rumspielen muss.
 
Ich habe eine Automation mit dem Input_Number gemacht. Die Zeit habe ich in Sekunden auf dem Dashboard vorgegeben. Eine Stunde brauche ich nicht. Du kannst es mit 59 Minuten und 59 Sekunden versuchen. Die Eingabe von 3600, was 60 Minuten entspricht, funktioniert mit dieser Formel nicht. Wenn eine Zeitverzögerung von mehr als einer Stunde unbedingt benötigt wird, müssen die Stunden noch aus der Eingabe „Input_number” extrahiert werden.

YAML:
triggers:
  - trigger: state
    entity_id:
      - input_number.in_strom_l3
actions:
  - variables:
      zeit: "{{ states('input_number.test_schleife_max_wert') | float + 0 }}  "
      minutes: "{{ zeit // 60 }}   "
      seconds: "{{ zeit - (minutes * 60) }}"
  - action: input_number.set_value

dann mit delay die Action verzögert

YAML:
      - delay:
          hours: 0
          minutes: "{{ minutes }}"
          seconds: "{{ seconds }}"
          milliseconds: 0
 
Zuletzt bearbeitet:
In einem anderen Forum wird mir ausschließlich eine Lösung mit "platform template" unkommentiert um die Ohren gehauen.
Wenn du wieder da bist, könntest du bitte den Link oder den Code hier präsentieren. Ich würde gerne wissen, wie die Zeitverzögerung im Template funktioniert. Ich habe es nur mit der For-Funktion geschafft.
 
Hmm, da mach ich wohl irgendwas falsch. Für den Test ersetze ich den Sonnenuntergang durch eine Uhrzeit und lege in der Variable "v_ebr_u3" die Uhrzeit und in der Variable "v_delay" die Verzögerung in Sekunden ab:

Aber es gibt um 09:52:11 oder auch später keine Aktion.


YAML:
alias: DelayedAction
description: ""
triggers:
  - trigger: time
    at: input_datetime.v_ebr_u3
conditions: []
actions:
  - variables:
      zeit: "{{ states('input_number.v_delay') | float + 0 }}"
      minutes: "{{ zeit // 60 }}"
      seconds: "{{ zeit - (minutes * 60) }}"
  - action: input_number.set_value
    data: {}
  - delay:
      hours: 0
      minutes: "{{ minutes }}"
      seconds: "{{ seconds }}"
      milliseconds: 0
  - type: turn_on
    device_id: 14844e783b652a2357acd254865687bb
    entity_id: 70539984c7b09fa17a33b061db0b5b0f
    domain: switch
mode: single
 
Wenn du wieder da bist, könntest du bitte den Link oder den Code hier präsentieren. Ich würde gerne wissen, wie die Zeitverzögerung im Template funktioniert. Ich habe es nur mit der For-Funktion geschafft.
Das hier hatte ich gefunden, bin aber leider weit davon entfernt nur ansatzweise zu verstehen, was dort passiert:

https://www.home-assistant.io/docs/automation/trigger/#sun-trigger
https://www.home-assistant.io/docs/automation/trigger/#sun-elevation-trigger
 
Zuletzt bearbeitet von einem Moderator:
Ich poste mal meine vollständige Automation, die ich mir zum Testen gebastelt habe.

YAML:
alias: Zeitverzoegerung ohne Skript
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_number.in_strom_l3
actions:
  - variables:
      zeit: "{{ states('input_number.test_schleife_max_wert') | float + 0 }}  "
      minutes: "{{ zeit // 60 }}   "
      seconds: "{{ zeit - (minutes * 60) }}"
  - if:
      - condition: state
        entity_id: input_boolean.manuell_automatik
        state: "on"
    then:
      - delay:
          hours: 0
          minutes: "{{ minutes }}"
          seconds: "{{ seconds }}"
          milliseconds: 0
      - action: input_number.set_value
        metadata: {}
        data:
          value: "{{ (states.input_number.in_strom_l3.state) }}"
        target:
          entity_id: input_number.in_strom_l2
    else:
      - action: input_number.set_value
        metadata: {}
        data:
          value: "{{ (states.input_number.in_strom_l1.state) }}"
        target:
          entity_id: input_number.in_strom_l2
mode: single

Ich bin kein Experte, aber ich bin der Meinung, dass die Aktion "input_number.set_value" nicht richtig für dein Vorhaben ist. Vielleicht würde die Aktion „Switch: Turn off” besser passen.
 
Das geht eigentlich relativ simpel, den Wert eines Helfers kann man direkt einsetzen. Beispiel:
YAML:
alias: Verzögerungstest
description: ""
triggers:
  - trigger: time_pattern
    minutes: /1
conditions: []
actions:
  - delay:
      hours: 0
      minutes: 0
      seconds: "{{ states('input_number.xyz') | float }}"
      milliseconds: 0
  - action: notify.persistent_notification
    metadata: {}
    data:
      message: Testverzögerung {{ now() }}
mode: single
Die input_number.xyz muss natürlich ausgetauscht werden, aber so gibt es beispielsweise jede Minute mit einer Verzögerung in Sekunden des Wertes von input_number.xyz (aktuell 5) eine Benachrichtigung:
1749630058256.png
 
Top! Beide Wege funktionieren! Nivals Code ist noch ein Tacken schlanker und funktioniert jenseits der 59. Danke euch beiden!!

Zur Vollständigkeit: amikos Code mit Messageausgabe:

YAML:
alias: DelayedAction2
description: ""
triggers:
  - trigger: time
    at: input_datetime.v_ebr_u3
conditions: []
actions:
  - variables:
      zeit: "{{ states('input_number.v_delay') | float + 0 }}"
      minutes: "{{ zeit // 60 }}"
      seconds: "{{ zeit - (minutes * 60) }}"
  - delay:
      hours: 0
      minutes: "{{ minutes }}"
      seconds: "{{ seconds }}"
      milliseconds: 0
  - action: notify.persistent_notification
    metadata: {}
    data:
      message: Testverzögerung {{ now() }}
mode: single
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
6.766
Beiträge
65.140
Mitglieder
7.062
Neuestes Mitglied
tottidermusikus
Zurück
Oben