Skip to content

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 }}