-
-
Notifications
You must be signed in to change notification settings - Fork 25
EPEX Spot price template sensor
Jonas Karlsson edited this page Jun 26, 2024
·
5 revisions
To use the EPEX Spot integration, the following template sensor can be used to create the price input.
template:
- sensor:
- name: "epex_spot_transformed"
state: >-
{{ states('sensor.epex_spot_data_net_price') | float }}
attributes:
prices_today: >-
{%- set hours_list = (state_attr('sensor.epex_spot_data_net_price', 'data') | sort(attribute='start_time',reverse=false)) %}
{%- set today = namespace(items=[]) -%}
{%- set tomorrow = namespace(items=[]) -%}
{%- for r in hours_list -%}
{% set item = {"time": as_timestamp(r.start_time) | timestamp_local, "price": r.price_ct_per_kwh} %}
{% set item_day = as_datetime(as_timestamp(r.start_time) | timestamp_local).strftime("%d") | int %}
{% set day_today = now().day %}
{% set day_tomorrow = (now().date() + timedelta(days=1)).strftime("%d") | int %}
{% if item_day == day_tomorrow -%}
{% set tomorrow.items = tomorrow.items + [item] %}
{% endif -%}
{% if item_day == day_today -%}
{% set today.items = today.items + [item] %}
{% endif -%}
{%- endfor %}
{{ today.items }}
prices_tomorrow: >-
{%- set hours_list = (state_attr('sensor.epex_spot_data_net_price', 'data') | sort(attribute='start_time',reverse=false)) %}
{%- set today = namespace(items=[]) -%}
{%- set tomorrow = namespace(items=[]) -%}
{%- for r in hours_list -%}
{% set item = {"time": as_timestamp(r.start_time) | timestamp_local, "price": r.price_ct_per_kwh} %}
{% set item_day = as_datetime(as_timestamp(r.start_time) | timestamp_local).strftime("%d") | int %}
{% set day_today = now().day %}
{% set day_tomorrow = (now().date() + timedelta(days=1)).strftime("%d") | int %}
{% if item_day == day_tomorrow -%}
{% set tomorrow.items = tomorrow.items + [item] %}
{% endif -%}
{% if item_day == day_today -%}
{% set today.items = today.items + [item] %}
{% endif -%}
{%- endfor %}
{{ tomorrow.items }}