JLindvig

Indstil sluttid for opladning

Nov 2nd, 2025 (edited)
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 3.15 KB | None | 0 0
  1. alias: Indstil sluttid for opladning
  2. 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."
  3. triggers:
  4.   - alias: Når det er en ny dag
  5.     trigger: time
  6.     at: "00:01:00"
  7.   - alias: Når lokationen for den næste aftale skifter
  8.     trigger: state
  9.     entity_id:
  10.      - sensor.location_next_event
  11.     to: null
  12.     for: "00:00:05"
  13.   - alias: Når tiden for den næste aftale skifter
  14.     trigger: state
  15.     entity_id:
  16.      - sensor.location_next_event
  17.     attribute: start_time
  18.     for: "00:00:05"
  19.   - trigger: state
  20.     entity_id:
  21.      - binary_sensor.monta_dino_juice_eliminator_cable_plugged_in
  22.     to: "on"
  23.     alias: Når bilen sættes til opladning
  24. conditions: []
  25. actions:
  26.   - variables:
  27.     alias: Sæt globale variabler
  28.       buffer_time: 15
  29.       valid_options: >-
  30.         {# Hent alle muligheder fra EV Smart Charging #}
  31.         {{ state_attr('select.ev_smart_charging_charge_completion_time', 'options') | default([]) }}
  32.       deadline_option: >-
  33.         {# Hent aftalens starttid og dens rejsetid #}
  34.         {% set start_time = state_attr('sensor.location_next_event', 'start_time') | as_datetime | as_local %}
  35.         {% set travel_time = states('sensor.rejsetid_naeste_aftale') | default(0) | int %}
  36.         {# Initialiserer med den sikre fallback #}
  37.         {% set final_option = 0 %}
  38.        
  39.         {# Valider tider #}
  40.         {% if start_time is not none and travel_time > 0 %}
  41.           {# Beregn sluttidspunkt #}
  42.           {% set end_time = start_time - timedelta(minutes = travel_time + buffer_time) %}
  43.           {# Tjek at tidspunktet er i fremtiden og indenfor 24 timer #}
  44.           {% if end_time > now() and end_time <= (now() + timedelta(hours=24)) %}
  45.             {# Filtrerer gyldige tider (<= deadline) fra options og vælg det seneste. #}
  46.             {% set final_option = valid_options
  47.               | select('<=', end_time.strftime('%H:%M'))
  48.               | list
  49.               | last %}
  50.           {% endif %}
  51.         {% endif %}
  52.         {# Kom med tidspunktet #}
  53.         {{ final_option | default(0) }}
  54.   - action: homeassistant.update_entity
  55.     metadata: {}
  56.     data:
  57.       entity_id:
  58.        - sensor.rejsetid_naeste_aftale
  59.     alias: Opdater rejsetiden til lokationen
  60.     enabled: true
  61.   - delay:
  62.       hours: 0
  63.       minutes: 0
  64.       seconds: 5
  65.       milliseconds: 0
  66.     enabled: true
  67.   - alias: Vælg mellem 2 muligheder
  68.     choose:
  69.       - conditions:
  70.           - condition: template
  71.             value_template: "{{ deadline_option != 0 }}"
  72.             alias: Ikke 0
  73.         sequence:
  74.           - action: select.select_option
  75.             metadata: {}
  76.             data:
  77.               option: "{{ deadline_option }}"
  78.             target:
  79.               entity_id: select.ev_smart_charging_charge_completion_time
  80.             alias: Vælg tidspunktet
  81.         alias: Vi har et tidspunkt
  82.     default:
  83.       - action: select.select_first
  84.         metadata: {}
  85.         data: {}
  86.         target:
  87.           entity_id: select.ev_smart_charging_charge_completion_time
  88. mode: single
  89.  
Advertisement
Add Comment
Please, Sign In to add comment