In Norway we have had a tough winter with 3 times or more of normal electricity prices.
As part of this we have tried to move the consumption to the periods with cheaper electricity.
The component used for electricity price is the following Nordpool component.
I have several other automations helping to cut costs, will post these later on in the same post since they use the same sensor inputs.
See following posts:
Home Assistant adaptive heating automation
Binary sensor:
- platform: template
sensors:
cheap_electricity_periode_00_04:
friendly_name: "Cheap electricity periode 00-04"
value_template: >-
{{ (((states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[0].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[1].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[2].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[3].value)) /4) < (state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'average') * 0.9) }}
- platform: template
sensors:
cheap_electricity_periode_04_08:
friendly_name: "Cheap electricity periode 04-08"
value_template: >-
{{ (((states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[4].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[5].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[6].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[7].value)) /4) < (state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'average') * 0.9) }}
- platform: template
sensors:
cheap_electricity_periode_08_12:
friendly_name: "Cheap electricity periode 08-12"
value_template: >-
{{ (((states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[8].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[9].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[10].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[11].value)) /4) < (state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'average') * 0.9) }}
- platform: template
sensors:
cheap_electricity_periode_12_16:
friendly_name: "Cheap electricity periode 12-16"
value_template: >-
{{ (((states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[12].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[13].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[14].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[15].value)) /4) < (state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'average') * 0.9) }}
- platform: template
sensors:
cheap_electricity_periode_16_20:
friendly_name: "Cheap electricity periode 16-20"
value_template: >-
{{ (((states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[16].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[17].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[18].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[19].value)) /4) < (state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'average') * 0.9) }}
- platform: template
sensors:
cheap_electricity_periode_20_24:
friendly_name: "Cheap electricity periode 20-24"
value_template: >-
{{ (((states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[20].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[21].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[22].value) + (states.sensor.nordpool_kwh_oslo_nok_3_10_025.attributes.raw_today[23].value)) /4) < (state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'average') * 0.9) }}
- platform: template
sensors:
cheap_electricity_calculated:
friendly_name: "Cheap electricity calculated"
value_template: >-
{{ (state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'current_price') | float) < (state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'average') | float * 0.9) }}
- platform: template
sensors:
cheap_electricity_value:
friendly_name: "Cheap electricity over set value"
value_template: >-
{{ (state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'current_price') < (0.8)) }}
- platform: template
sensors:
cheap_electricity:
friendly_name: "Cheap electricity"
value_template: >-
{{ is_state('binary_sensor.cheap_electricity_calculated', 'on') and
is_state('binary_sensor.cheap_electricity_value', 'on') and
is_state('input_boolean.fixed_price_electricity', 'off') and
is_state('binary_sensor.average_electricity', 'off') and
is_state('binary_sensor.expensive_electricity_calculated', 'off') and
is_state('input_boolean.fixed_price_electricity', 'off') and
is_state('binary_sensor.expensive_electricity_value', 'off') }}
- platform: template
sensors:
average_electricity:
friendly_name: "Average electricity"
value_template: >-
{{ is_state('binary_sensor.cheap_electricity', 'off') and
is_state('binary_sensor.expensive_electricity', 'off') }}
- platform: template
sensors:
expensive_electricity_calculated:
friendly_name: "Expensive electricity calculated"
value_template: >-
{{ (state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'current_price') | float) > (state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'average') | float * 1.2) }}
- platform: template
sensors:
expensive_electricity_value:
friendly_name: "Expensive electricity over set value"
value_template: >-
{{ (state_attr('sensor.nordpool_kwh_oslo_nok_3_10_025', 'current_price') > (1.5)) }}
- platform: template
sensors:
expensive_electricity:
friendly_name: "Expensive electricity"
value_template: >-
{{ is_state('binary_sensor.cheap_electricity', 'off') and
is_state('binary_sensor.cheap_electricity_value', 'off') and
is_state('input_boolean.fixed_price_electricity', 'off') and
is_state('binary_sensor.average_electricity', 'off') and
is_state('binary_sensor.expensive_electricity_calculated', 'on') or
is_state('input_boolean.fixed_price_electricity', 'off') and
is_state('binary_sensor.expensive_electricity_value', 'on') }}
Automation:
# Cheap electricity
- alias: Cheap electricity_notification
id: cheap_electricity_notification
trigger:
platform: state
entity_id: binary_sensor.cheap_electricity
to: "on"
condition:
condition: time
after: '08:00:00'
before: '23:00:00'
action:
- choose:
# Tv off
- conditions:
- condition: and
conditions:
- condition: state
entity_id: remote.living_room_hub
state: 'off'
sequence:
- service_template: notify.pushover
data_template:
title: "Cheap electricity - good time to laundry."
message: "The price for electricity is now {{states('sensor.current_electricity_prices_inc_vat_grid_nordpool')}} kroner."
data:
priority: 0
sound: "pianobar"
- service: rest_command.rhasspy_speak
data_template:
payload_data: "Cheap electricity good time to laundry."
# User home and tv on
- conditions:
- condition: and
conditions:
- condition: state
entity_id: group.all_people
state: 'home'
- condition: state
entity_id: remote.living_room_hub
state: 'on'
sequence:
- service: notify.living_room_media_center
data_template:
title: "Cheap electricity - good time to laundry."
message: "The price for electricity is now {{states('sensor.current_electricity_prices_inc_vat_grid_nordpool')}} kroner."
data:
duration: 15
font-size: max
transparency: 50%
position: bottom-right
- service_template: notify.pushover
data_template:
title: "Cheap electricity - good time to laundry."
message: "The price for electricity is now {{states('sensor.current_electricity_prices_inc_vat_grid_nordpool')}} kroner."
data:
priority: 0
sound: "pianobar"
- service: rest_command.rhasspy_speak
data_template:
payload_data: "Cheap electricity good time to laundry."