diff --git a/include/templates/tesla_smart_charge.yaml b/include/templates/tesla_smart_charge.yaml index c62d9d4..bb8d11c 100644 --- a/include/templates/tesla_smart_charge.yaml +++ b/include/templates/tesla_smart_charge.yaml @@ -1,27 +1,17 @@ -platform: template -sensors: -- name: tesla_charge_now - state: > - {% set deadline = states('input_datetime.tesla_charge_deadline') %} - {% set hours_needed = states('sensor.tesla_charge_hours_needed')|float(0)|round(0,'ceil') %} - {% set prices = state_attr('sensor.energidataservice','today') + state_attr('sensor.energidataservice','tomorrow') %} - {% set valid = [] %} - - {# Filtrer kun timer før deadline #} - {% for p in prices %} - {% set slot_time = as_timestamp(strptime(p.hour,'%Y-%m-%dT%H:%M:%S')) %} - {% if slot_time <= as_timestamp(deadline) %} +sensor: + - name: tesla_charge_now + state: > + {% set deadline = states('input_datetime.tesla_charge_deadline') | default('2026-12-31T23:59:59') %} + {% set hours_needed = states('sensor.tesla_charge_hours_needed')|float(0)|round(0,'ceil') %} + {% set prices = (state_attr('sensor.energidataservice','today') or []) + (state_attr('sensor.energidataservice','tomorrow') or []) %} + {% set valid = [] %} + {% for p in prices if as_timestamp(strptime(p.hour,'%Y-%m-%dT%H:%M:%S')) <= as_timestamp(deadline) %} {% set valid = valid + [p] %} - {% endif %} - {% endfor %} - - {# Sorter efter pris #} - {% set sorted = valid | sort(attribute='price') %} - - {# Vælg de billigste slots der dækker ladetiden #} - {% set cheapest = sorted[:hours_needed] %} - - {# Tjek om nuværende slot er i listen #} - {% set now_slot = now().replace(minute=(now().minute//15)*15, second=0, microsecond=0).isoformat() %} - {{ cheapest | selectattr('hour','equalto',now_slot) | list | count > 0 }} - \ No newline at end of file + {% endfor %} + {# Sorter efter pris #} + {% set sorted = valid | sort(attribute='price') %} + {# Vælg de billigste slots der dækker ladetiden #} + {% set cheapest = sorted[:hours_needed] %} + {# Tjek om nuværende slot er i listen #} + {% set now_slot = now().replace(minute=(now().minute//15)*15, second=0, microsecond=0).isoformat() %} + {{ cheapest | selectattr('hour','equalto',now_slot) | list | count > 0 }} \ No newline at end of file