From 803fba79f750b32a0c072c72b366fd1fb5c37a2d Mon Sep 17 00:00:00 2001 From: Claus Dethlefsen Date: Thu, 9 Apr 2026 19:05:09 +0200 Subject: [PATCH] Fix Tesla charge plan time window and dashboard entities --- include/templates/tesla_charge_plan.yaml | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/include/templates/tesla_charge_plan.yaml b/include/templates/tesla_charge_plan.yaml index 3096892..b84daeb 100644 --- a/include/templates/tesla_charge_plan.yaml +++ b/include/templates/tesla_charge_plan.yaml @@ -3,18 +3,20 @@ state: > {% set deadline_raw = states('input_datetime.tesla_charge_deadline') %} {% set deadline_ts = as_timestamp(deadline_raw) if deadline_raw not in ['unknown','unavailable',''] else none %} + {% set now_ts = as_timestamp(now().replace(minute=0, second=0, microsecond=0)) %} {% 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 prices = (state_attr('sensor.energi_data_service','raw_today') or []) + + ((state_attr('sensor.energi_data_service','raw_tomorrow') or []) + if state_attr('sensor.energi_data_service', 'tomorrow_valid') else []) %} {# Filter gyldige slots før deadline #} {% set ns = namespace(valid=[], best_block=[], best_price=999999) %} {% for p in prices %} {% if p.hour %} {% set ts = as_timestamp(p.hour) %} - {% if not deadline_ts or ts <= deadline_ts %} + {% if ts >= now_ts and (not deadline_ts or ts <= deadline_ts) %} {% set ns.valid = ns.valid + [p] %} {% endif %} {% endif %} @@ -32,9 +34,7 @@ {% endif %} {% endfor %} - {% set now_slot = now().replace(minute=0, second=0, microsecond=0).isoformat() %} - - {{ ns.best_block | selectattr('hour','equalto',now_slot) | list | count > 0 }} + {{ ns.best_block | map(attribute='hour') | map('as_timestamp') | select('eq', now_ts) | list | count > 0 }} - sensor: - name: tesla_charge_hours_needed @@ -57,15 +57,17 @@ state: > {% set deadline_raw = states('input_datetime.tesla_charge_deadline') %} {% set deadline_ts = as_timestamp(deadline_raw) if deadline_raw not in ['unknown','unavailable',''] else none %} + {% set now_ts = as_timestamp(now().replace(minute=0, second=0, microsecond=0)) %} {% 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 prices = (state_attr('sensor.energi_data_service','raw_today') or []) + + ((state_attr('sensor.energi_data_service','raw_tomorrow') or []) + if state_attr('sensor.energi_data_service', 'tomorrow_valid') else []) %} {% set ns = namespace(valid=[], best_block=[], best_price=999999) %} {% for p in prices %} {% if p.hour %} {% set ts = as_timestamp(p.hour) %} - {% if not deadline_ts or ts <= deadline_ts %} + {% if ts >= now_ts and (not deadline_ts or ts <= deadline_ts) %} {% set ns.valid = ns.valid + [p] %} {% endif %} {% endif %}