Input.datetime erstellen und Automation 1,2,3,4 und 5 Stunden vorher starten

Hallo ihr lieben
Ich lade meinen PHEV mittels Solarüberschuss.
An wolkigen Tagen kommt es aber vor, dass ich Abends dann keinen vollen Akku habe.
Dazu möchte ich gerne einen Helfer vom Typ DateTime erstellen, welcher die Abfahrtszeit (ohne Datum) enthält, damit ich diese in der UI anpassen kann. Dann soll folgendes passieren (mein Auto heißt Ingeborg):

Wenn
Abfahrtszeit - 1 Stunde
und
Ingeborg.Akku < 83%
dann
beende PV laden und starte normales laden mit voller Power

Wenn
Abfahrtszeit - 2 Stunden
und
Ingeborg.Akku < 66%
dann
beende PV laden und starte normales laden mit voller Power

und so weiter.
Das PV laden beenden und mit voller Power ist kein Problem, aber ich scheitere an der Zeit.
Meine Überlegung war einen (oder notfalls 5) Template Sensoren zu erstellen, welche die errechnete Zeit beinhalten (Abfahrt - 1 Stunde, Abfahrt - 2 Stunden, usw.) und damit dann - über die UI - eine entsprechende Automatisierung zu triggern.
Das bekomme ich aber nicht hin :frowning:
Evtl. ist es ja aber auch der falsche Ansatz und es gäbe etwas einfacheres.
Könnte mir hier bitte jemand helfen?

Moin,
probiere es mal mit einem Template Trigger.

{{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit', 'timestamp') - 3600) | timestamp_custom('%H:%M') }}

Die Zeit - 3600 sind Sekunden also 1 Stunde.
Wenn du den Time Sensor nicht haben solltest den bekommst du hiermit in der configuration.yaml:

sensor:
  - platform: time_date
    display_options:
      - 'time'

LG
Tobi

Hey hey
Wenn ich den Abschnitt über Template Trigger richtig verstanden habe, geht das ja nur in der config.yaml. also könnte ich die Automatisierung nicht im UI erstellen (und verändern).
Wäre es eine Option stattdessen einen Sensor (oder sowas in der Art) zu erstellen, damit ich damit eine UI erstellte Automation triggern kann?

Es geht auch in der UI:
image
LG

Hmm. Das klappt nicht.
Ich habe deinen Template Trigger als Auslöser einer Automatisierung genutzt, welche mir eine Telegram Nachricht schickt. Die Stunde habe ich dabei in Minute umgewandelt (-60). Das Ereignis wird nicht ausgelöst.
Danach habe ich deine Zeile in den Template Bereich kopiert (Entwicklerwerkzeuge – Template).
Das Ergebnis ist immer False. Auch wenn es eine Minute vor der eingestellten Zeit ist.
Testweise habe ich das substrahieren der Zeit entfernt (und natürlich den Zeit Helper angepasst).
Aber es bleibt False:

{{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit', 'timestamp')) | timestamp_custom('%H:%M') }}

Hatten wir hier neulich erst:

Vielleicht hilft’s dir ja.

Ich habe nun folgende beiden Zeilen in meinen Templates:

{{ states('input_datetime.abfahrtszeit', 'timestamp') }}
{{ (state_attr('input_datetime.abfahrtszeit', 'timestamp') - 0) | timestamp_custom('%H:%M') }}

Die oberste Zeile zeigt mir 16:50, die untere 17:50. Der Helper steht auf 16:50.
Ein bisschen googlen bringt mich dazu, dass es

| timestamp_custom('%H:%M', false)

heißen muss (dann stimmt die Zeit).

Im Englischsprachigen Forum heißt es dazu (bei einem Thread den natürlich nicht ich gestartet habe):
Without the false, it’s based on unix_time not local time. I’m guessing your timezone is +1? If not, you’re time is screwed up on your system and you need to make sure your OS time is set properly and your timezone is set properly in your config.
Timestamp formatting - Configuration - Home Assistant Community (home-assistant.io)

Folglich springt dieses Template eine Minute vor der eingestellten Zeit auf true:

{{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit', 'timestamp') - 60) | timestamp_custom('%H:%M', false) }}

Nachtrag:

Also das Hauptproblem ist erstmal gelöst.
Danke @totow für deine Hilfe und die (fasst) perfekte Lösung.

Nun frage ich mich aber, ob ich (damit meine Frau die Automatisierung leichter bearbeiten kann), nicht besser Sensoren erstellen sollte.

    - name: "zeittest"
      unique_id: "ZeiTest"
      state: "{{ (state_attr('input_datetime.abfahrtszeit', 'timestamp') - 60) | timestamp_custom('%H:%M', false) }}"

Also “einestundevorabfahrtzeit”, “zweistundenvorabfahrtzeit”, usw.

Aber wie nutze ich diese Sensoren dann als Trigger einer Automation?
Geht das überhaupt?
Oder macht der hier erklärte Template Trigger einfach mehr Sinn?

:crayon:by HarryP: Zusammenführung Doppelpost.
*@DerSmurf *
Bitte zukünftig für Nachträge/Korrekturen die “bearbeiten” Funktion (geht 24h) verwenden. Danke!

1 „Gefällt mir“

Die Sensoren könntest du dann über den Time-Auslöser triggern.

Das habe ich mir auch gedacht.
Aber der Sensor wird nicht angezeigt. Ich sehe nur meinen Helper.
Habe versucht den Namen des Sensors einfach einzutragen (sensor.zeittest), aber dann wird nichts getriggert.

Naja, ich habe die Automatition nun fertig.
Finds mit den Tempates nicht so schimm wie gedacht. Durch die entsprechenden IDs beibt es trotzdem halbwegs übersichtlich.

Für diejenigen die sowas vielleicht auch brauchen können mein Code:
Ingeborg ist dabei der Name meines Wagens. Wenn das Auto bei 100% Akku ist, wird trotzdem noch ca. eine halbe Stunde mit voller Leistung geladen:
(falls ich wirklich jemandem damit helfen kann und Fragen aufkommen einfach her damit)

alias: Ingeborg voller Akku zur Abfahrtszeit
description: >-
  Läd Ingeborg mit Netzstrom, wenn PV laden zur Abfahrtszeit den Akku nicht
  füllt.
trigger:
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 1800) | timestamp_custom('%H:%M', false) }}
    id: halbestundevorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 3600) | timestamp_custom('%H:%M', false) }}
    id: einestundenvorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 5400) | timestamp_custom('%H:%M', false) }}
    id: anderthalbstundenvorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 7200) | timestamp_custom('%H:%M', false) }}
    id: zweistundenvorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 9000) | timestamp_custom('%H:%M', false) }}
    id: zweieinhalbstundenvorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 10800) | timestamp_custom('%H:%M', false) }}
    id: dreistundenvorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 12600) | timestamp_custom('%H:%M', false) }}
    id: dreieinhalbstundenvorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 14400) | timestamp_custom('%H:%M', false) }}
    id: vierstundenvorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 16200) | timestamp_custom('%H:%M', false) }}
    id: viereinhalbstundenvorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 18000) | timestamp_custom('%H:%M', false) }}
    id: funfstundenvorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 19800) | timestamp_custom('%H:%M', false) }}
    id: fünfeinhalbstundenvorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 21600) | timestamp_custom('%H:%M', false) }}
    id: sechsstundenvorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 23400) | timestamp_custom('%H:%M', false) }}
    id: sechseinhalbstundenvorher
  - platform: template
    value_template: >
      {{ states('sensor.time') == (state_attr('input_datetime.abfahrtszeit',
      'timestamp') - 25200) | timestamp_custom('%H:%M', false) }}
    id: siebenstundenvorher
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: halbestundevorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 100
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: einestundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 94
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: zweistundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 79
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: dreistundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 64
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: vierstundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 49
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: funfstundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 34
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: sechsstundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 19
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: siebenstundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 4
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: anderthalbstundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 87
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: zweieinhalbstundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 72
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: dreieinhalbstundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 57
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: viereinhalbstundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 42
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: fünfeinhalbstundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 27
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
      - conditions:
          - condition: trigger
            id: sechseinhalbstundenvorher
        sequence:
          - if:
              - condition: numeric_state
                entity_id: sensor.ingeborg_remaining_battery_percent
                below: 12
            then:
              - service: automation.turn_off
                data:
                  stop_actions: true
                target:
                  entity_id: automation.pvgoecharger
mode: single
1 „Gefällt mir“