
Home Assistant: What’s new in AIO Energy Management 0.3.x and 0.4.0
The AIO Energy Management integration for Home Assistant has been slowly, but steadily improving. Since I didn’t publish an article for version 0.3.0, let’s explore the changes from v0.3.x to v0.4.0 and delve into practical usage examples of the new features.
If you are unfamiliar with the AIO Energy Management integration, go check the previous articles here.
New attributes (v0.3.3)
Version 0.3.3 introduced several new read-only attributes, enhancing automation and information retrieval. These attributes include minimum, maximum, and mean prices, specifically calculated from the current cheapest hours sequence. For instance, you can determine the mean price of a set number of cheapest hours. This allows for direct comparison with the full-day average, highlighting potential cost savings by utilizing the cheapest hours.
Example Use Case: Compare the mean price of your five cheapest hours to the overall daily average to quantify potential savings.

New service to clear cached data (v0.3.2)
Previously, configuration changes required users to wait until the next day for updated flexible energy prices. Now, the AIO Energy Management service clear_data
allows immediate data flushing for a selected sensor.
This service can be invoked through automations or the developer tools’ “Services” section. The unique_id
parameter of the sensor (specified during configuration) is mandatory.
Example Service Call:
service: aio_energy_management.clear_data
data:
unique_id: my_cheapest_hours
New configurations
Price limit (v0.3.0 – v0.3.1)
Initially introduced as max_price
in v0.3.0, this was quickly renamed to price_limit
in v0.3.1 for clarity, especially regarding inverted functionality (e.g., finding the most expensive hours).
The price limit is valuable for restricting cheapest hours usage to periods below a specific price. For example, I use it to heat my outdoor hot tub only when prices are below 5 cents/kWh. Note that if the price limit isn’t met, heating might be skipped, which is acceptable for my hot tub’s heat retention.
The price limit can also reference an entity’s value. Simply enter the entity_id
in the price_limit
variable (e.g., price_limit: input_number.example_entity
). Ensure the value is a decimal number (e.g., 5.0
).
Example Configuration:
cheapest_hours:
- nordpool_entity: sensor.nordpool
unique_id: cheapest_hours_hot_tub
name: Cheapest Hours Hot Tub
first_hour: 0
last_hour: 23
starting_today: false
number_of_hours: 5
sequential: false
max_price: 5.0
Trigger Hour (v0.3.0 – v0.3.1)
Implemented in v0.3.0 and refined in v0.3.1, the trigger hour delays calculations until specific conditions are met.
Without a trigger hour, calculations occur immediately after flexible energy prices are published. The trigger hour enables calculations at a predetermined time, such as evening, when usage patterns are known. This is useful for adjusting number_of_hours
based on daily consumption.
trigger_hour
accepts an integer, representing the hour when calculations begin.
Example Configuration:
cheapest_hours:
- nordpool_entity: sensor.nordpool
unique_id: cheapest_hours_water_boiler
name: Cheapest Hours Water Boiler
first_hour: 21
last_hour: 12
starting_today: true
number_of_hours: sensor.water_heater_number_of_hours
sequential: false
failsafe_starting_hour: 1
trigger_hour: 21
Note: The trigger hour will be further refined in future releases to accept hour and minute sub-parameters.
Enable/disable calendar (0.3.3)
This enhancement allows disabling calendar entries for sensors used e.g. solely as automation helpers. Add calendar: false
to the sensor configuration. By default, sensors are displayed on the calendar.
Example Configuration:
cheapest_hours:
- nordpool_entity: sensor.nordpool
unique_id: my_cheapest_hours_helper
name: Just a helper cheapest hours
first_hour: 21
last_hour: 12
starting_today: true
number_of_hours: 3
sequential: false
trigger_hour: 21
calendar: false
Offset (v0.4.0)
The offset feature adds buffers to the start or end of the cheapest hours sequence. This is useful for accommodating variable usage. For example, adding a buffer to the end of a water heating sequence to ensure sufficient heating.
Important Considerations:
- If the end offset extends past the last hour, the expiration time is extended, potentially causing sequence overlaps on the calendar. This does not affect binary sensor functionality.
- Min, Max, and mean price attributes do not account for offsets.
- When using non-sequential, start offset only happens at the first selected hour, and end offset at the last selected hour.
Example Configuration:
cheapest_hours:
- nordpool_entity: sensor.nordpool
unique_id: my_cheapest_hours_sensor_offset
name: My Cheapest Hours Official Offset
first_hour: 0
last_hour: 23
starting_today: false
number_of_hours: 3
sequential: True
failsafe_starting_hour: 22
offset:
start:
hours: 0
minutes: 30
end:
hours: 1
minutes: 2
Official Nord Pool Integration Support (v0.4.0)
Version 0.4.0 introduces compatibility with the official Home Assistant Nord Pool integration. This integration uses a service to fetch data, requiring the configuration entry ID instead of an entity ID.
To obtain the configuration entry ID, navigate to “Devices & Services” -> “Nord Pool integration” -> “Entities” and copy the last part of the browser URL.


Example Configuration:
cheapest_hours:
- nordpool_official_config_entry: 01JPHC0B39ST11081WFZQCKMVC
unique_id: my_cheapest_hours_sensor_official
name: My Cheapest Hours Official
first_hour: 22
last_hour: 10
starting_today: true
number_of_hours: 3
sequential: False
failsafe_starting_hour: 22
The official Nord Pool integration functions similarly to the custom component or Entso-E integrations.