Make startup happy
This commit is contained in:
@@ -1,27 +1,17 @@
|
|||||||
platform: template
|
sensor:
|
||||||
sensors:
|
- name: tesla_charge_now
|
||||||
- name: tesla_charge_now
|
|
||||||
state: >
|
state: >
|
||||||
{% set deadline = states('input_datetime.tesla_charge_deadline') %}
|
{% 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 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 prices = (state_attr('sensor.energidataservice','today') or []) + (state_attr('sensor.energidataservice','tomorrow') or []) %}
|
||||||
{% set valid = [] %}
|
{% set valid = [] %}
|
||||||
|
{% for p in prices if as_timestamp(strptime(p.hour,'%Y-%m-%dT%H:%M:%S')) <= as_timestamp(deadline) %}
|
||||||
{# 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) %}
|
|
||||||
{% set valid = valid + [p] %}
|
{% set valid = valid + [p] %}
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{# Sorter efter pris #}
|
{# Sorter efter pris #}
|
||||||
{% set sorted = valid | sort(attribute='price') %}
|
{% set sorted = valid | sort(attribute='price') %}
|
||||||
|
|
||||||
{# Vælg de billigste slots der dækker ladetiden #}
|
{# Vælg de billigste slots der dækker ladetiden #}
|
||||||
{% set cheapest = sorted[:hours_needed] %}
|
{% set cheapest = sorted[:hours_needed] %}
|
||||||
|
|
||||||
{# Tjek om nuværende slot er i listen #}
|
{# Tjek om nuværende slot er i listen #}
|
||||||
{% set now_slot = now().replace(minute=(now().minute//15)*15, second=0, microsecond=0).isoformat() %}
|
{% set now_slot = now().replace(minute=(now().minute//15)*15, second=0, microsecond=0).isoformat() %}
|
||||||
{{ cheapest | selectattr('hour','equalto',now_slot) | list | count > 0 }}
|
{{ cheapest | selectattr('hour','equalto',now_slot) | list | count > 0 }}
|
||||||
|
|
||||||
Reference in New Issue
Block a user