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