Requires https://github.com/custom-components/nordpool
NOTE: This is a based on https://github.com/jpulakka/nordpool_diff
Nord Pool gives you spot prices, but making good use of those prices is not easy. This component provides various a boolean if now is the right time to activate high consumption based on future prices in a specified range. Given a time-span from now and an number of hours forward it searches for the start-time that has the lowest average price over a specified duration window.
Apart from potentially saving some money, this kind of temporal shifting of consumption can also save the environment, because expensive peaks are produced by dirtier energy sources. Also helps solving Europe's electricity crisis.
Custom Repositories
https://github.com/dala318/nordpool_planner
as repository, select the category Integration
and click Addnordpool_planner
folder to HA <config_dir>/custom_components/nordpool_planner/
IMPORTANT NOTE: With version 2 configuration via
configuration.yaml
is no longer possible. Converting that configuration via "import config" is still not implemented. You wil have to remove the old now broken manual configuration and create a new via the GUI.
accept_cost
specifies a price level in the currency of your nordpool_entity
, that if an "average over a duration" is below this value, it is accepted and used. Even if not the lowest in the range specified.
accept_rate
specifies a price rate, that if an "average over a duration" divided by nordpool average (nordpool_entity.attributes.average
) is below this rate, it is accepted and used. Even if not the lowest in the range specified. E.g. if set to 1 an "average over a duration" <= "nordpool average" is accepted. If 0.5 it has to be half the price of "nordpool average". The idea is to not be as sensitive to offsets I price levels but just a generic rule to accept low section, not just the lowest.
The planner types has some additional configuration variables
search_length
can be in the range of 2 to 24 and specifies how many hours ahead to serach for lowest price.
var_search_length_entity
an entity that provides a numerical value in hours.
The integration will use minimum of var_search_length_entity
(if supplied and can be interpreted as int) and duration
(or the default value).
WORK IN PROGRESS: This version of entity is still not fully tested, may need some more work to work properly.
end_hour
can be in the range of 0 to 23 and specifies at what time within 24 hours the ammount of active hours shall be selected.
var_end_hour_entity
an entity that provides a numerical value in hours.
The integration will use var_end_hour_entity
if supplied and can be interpreted as int, otherwise end_hour
or the default value.
NOT IMPLEMENTED: No support implemented to use this setting
split_hours
tell if allowed to find low-cost hours that are not censecutive
Apart from the true/false if now is the time to turn on electricity usage the sensor provides some attributes.
starts_at
tell when the next low-point starts
cost_at
tell what the average cost is at the lowest point identified
now_cost_rate
tell a comparison current price / best average. Is just a comparison to how much more expensive the electricity is right now compared to the found slot. E.g. 2 means you could half the cost by waiting for the found slot.
Some words should be said about the usage and how it behaves.
The search length variable should be set to to a value within which you could accept no high electricity usage, and the ratio window/search should somewhat correspond to the active/passive time of your main user of electricity. Still, the search window for the optimal spot to electricity is moving along in front of corrent time, so there might be a longer duration of passive usage than the search length. Therefor keeping the search length low (3-5h) should likely be optimal, unless you have a large storage capacity of electricity/heat that can wait for a longer duration and when cheap electricity draw as much as possible.
If to explain by an image, first orange is now, second orange is search_length
ahead in time, width of green is duration
and placed where it has found the cheapest average price within the orange.
Try it and feedback how it works or if there are any improvment to be done!
I found it usefull to setup a simple history graph chart comparing the values from nordpool
, nordpool_diff
and nordpool_planner
like this.
Where from top to bottom my named entities are: