alias: Indstil sluttid for opladning
description: "Sætter bilens opladningsdeadline baseret på kalenderaftaler og live rejsetid (inkl. 15 min. buffer), og deaktiverer hvis deadline er passeret eller er over 24 timer væk."
triggers:
- alias: Når det er en ny dag
trigger: time
at: "00:01:00"
- alias: Når lokationen for den næste aftale skifter
trigger: state
entity_id:
- sensor.location_next_event
to: null
for: "00:00:05"
- alias: Når tiden for den næste aftale skifter
trigger: state
entity_id:
- sensor.location_next_event
attribute: start_time
for: "00:00:05"
- trigger: state
entity_id:
- binary_sensor.monta_dino_juice_eliminator_cable_plugged_in
to: "on"
alias: Når bilen sættes til opladning
conditions: []
actions:
- variables:
buffer_time: 15
valid_options: >-
{# Hent alle muligheder fra EV Smart Charging #}
{{ state_attr('select.ev_smart_charging_charge_completion_time', 'options') | default([]) }}
deadline_option: >-
{# Hent aftalens starttid og dens rejsetid #}
{% set start_time = state_attr('sensor.location_next_event', 'start_time') | as_datetime | as_local %}
{% set travel_time = states('sensor.rejsetid_naeste_aftale') | default(0) | int %}
{# Initialiserer med den sikre fallback #}
{% set final_option = 0 %}
{# Valider tider #}
{% if start_time is not none and travel_time > 0 %}
{# Beregn sluttidspunkt #}
{% set end_time = start_time - timedelta(minutes = travel_time + buffer_time) %}
{# Tjek at tidspunktet er i fremtiden og indenfor 24 timer #}
{% if end_time > now() and end_time <= (now() + timedelta(hours=24)) %}
{# Filtrerer gyldige tider (<= deadline) fra options og vælg det seneste. #}
{% set final_option = valid_options
| select('<=', end_time.strftime('%H:%M'))
| list
| last %}
{% endif %}
{% endif %}
{# Kom med tidspunktet #}
{{ final_option | default(0) }}
- action: homeassistant.update_entity
metadata: {}
data:
entity_id:
- sensor.rejsetid_naeste_aftale
alias: Opdater rejsetiden til lokationen
enabled: true
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
enabled: true
- alias: Vælg mellem 2 muligheder
choose:
- conditions:
- condition: template
value_template: "{{ deadline_option != 0 }}"
alias: Ikke 0
sequence:
- action: select.select_option
metadata: {}
data:
option: "{{ deadline_option }}"
target:
entity_id: select.ev_smart_charging_charge_completion_time
alias: Vælg tidspunktet
alias: Vi har et tidspunkt
default:
- action: select.select_first
metadata: {}
data: {}
target:
entity_id: select.ev_smart_charging_charge_completion_time
mode: single