Energi Data Service using forecast data - jonasbkarlsson/ev_smart_charging GitHub Wiki
To use the forecast data from the Energi Data Service integration, the following template sensor can be used.
template:
- sensor:
- name: "Customized Energi Data Service"
state: "{{ states('sensor.energi_data_service') }}"
unique_id: energi_data_service_template_price_sensor
unit_of_measurement: DKK/kWh
availability: "{{ 'sensor.energi_data_service' | has_value }}"
attributes:
prices_today: > #"{{ state_attr('sensor.energi_data_service', 'raw_today') }}"
{%- set forecast_data = state_attr('sensor.energi_data_service', 'raw_today') %}
{%- set time_key = 'hour' %}
{%- set price_key = 'price' %}
{%- set ns = namespace(data=[]) %}
{%- for i in forecast_data | default([], true) if as_local(as_datetime(i[time_key])).date() == now().date() %}
{%- set ns.data = ns.data + [dict(time = as_local(as_datetime(i[time_key])).isoformat(), price = i[price_key])] %}
{%- endfor %}
{{ ns.data }}
prices_tomorrow: >
{% set tomorrow = state_attr('sensor.energi_data_service', 'tomorrow_valid') %}
{% set tomorrow_copy = state_attr('sensor.energi_data_service', 'raw_tomorrow') %}
{% if tomorrow == false %}
{%- set forecast_data = state_attr('sensor.energi_data_service', 'forecast') %}
{%- set time_key = 'hour' %}
{%- set price_key = 'price' %}
{%- set ns = namespace(data=[]) %}
{%- for i in forecast_data | default([], true) if as_local(as_datetime(i[time_key])).date() == (now()+timedelta(days=1)).date() %}
{%- set ns.data = ns.data + [dict(time = as_local(as_datetime(i[time_key])).isoformat(), price = i[price_key])] %}
{%- endfor %}
{{ ns.data }}
{% else %}
{%- set forecast_data = state_attr('sensor.energi_data_service', 'raw_tomorrow') %}
{%- set time_key = 'hour' %}
{%- set price_key = 'price' %}
{%- set ns = namespace(data=[]) %}
{%- for i in forecast_data | default([], true) if as_local(as_datetime(i[time_key])).date() == (now()+timedelta(days=1)).date() %}
{%- set ns.data = ns.data + [dict(time = as_local(as_datetime(i[time_key])).isoformat(), price = i[price_key])] %}
{%- endfor %}
{{ ns.data }}
{% endif %}