Fix Tesla charge plan time window and dashboard entities
This commit is contained in:
@@ -3,18 +3,20 @@
|
|||||||
state: >
|
state: >
|
||||||
{% set deadline_raw = states('input_datetime.tesla_charge_deadline') %}
|
{% 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 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 hours_needed = states('sensor.tesla_charge_hours_needed') | float(0) | round(0, 'ceil') %}
|
||||||
|
|
||||||
{% set prices = (state_attr('sensor.energidataservice','today') or [])
|
{% set prices = (state_attr('sensor.energi_data_service','raw_today') or [])
|
||||||
+ (state_attr('sensor.energidataservice','tomorrow') 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 #}
|
{# Filter gyldige slots før deadline #}
|
||||||
{% set ns = namespace(valid=[], best_block=[], best_price=999999) %}
|
{% set ns = namespace(valid=[], best_block=[], best_price=999999) %}
|
||||||
{% for p in prices %}
|
{% for p in prices %}
|
||||||
{% if p.hour %}
|
{% if p.hour %}
|
||||||
{% set ts = as_timestamp(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] %}
|
{% set ns.valid = ns.valid + [p] %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -32,9 +34,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% set now_slot = now().replace(minute=0, second=0, microsecond=0).isoformat() %}
|
{{ ns.best_block | map(attribute='hour') | map('as_timestamp') | select('eq', now_ts) | list | count > 0 }}
|
||||||
|
|
||||||
{{ ns.best_block | selectattr('hour','equalto',now_slot) | list | count > 0 }}
|
|
||||||
|
|
||||||
- sensor:
|
- sensor:
|
||||||
- name: tesla_charge_hours_needed
|
- name: tesla_charge_hours_needed
|
||||||
@@ -57,15 +57,17 @@
|
|||||||
state: >
|
state: >
|
||||||
{% set deadline_raw = states('input_datetime.tesla_charge_deadline') %}
|
{% 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 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 hours_needed = states('sensor.tesla_charge_hours_needed') | float(0) | round(0, 'ceil') %}
|
||||||
{% set prices = (state_attr('sensor.energidataservice','today') or [])
|
{% set prices = (state_attr('sensor.energi_data_service','raw_today') or [])
|
||||||
+ (state_attr('sensor.energidataservice','tomorrow') 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) %}
|
{% set ns = namespace(valid=[], best_block=[], best_price=999999) %}
|
||||||
|
|
||||||
{% for p in prices %}
|
{% for p in prices %}
|
||||||
{% if p.hour %}
|
{% if p.hour %}
|
||||||
{% set ts = as_timestamp(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] %}
|
{% set ns.valid = ns.valid + [p] %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
Reference in New Issue
Block a user