Caution
This project was terminated and replaced by an integration developed by the community: ČEZ HDO. We recommend switching to this new integration, which offers more options and active development.
Home Assistant custom integration for ČEZ Distribuce HDO tariff switching schedules (NT/VT).
The integration uses the Python library cez-distribution-hdo to fetch schedule data and expose it as entities.
🇨🇿 Czech documentation: README.cs.md
For each configured EAN + HDO signal the integration creates a single device with these entities:
binary_sensor.<prefix>_<signal>_low_tariffsensor.<prefix>_<signal>_actual_tariffsensor.<prefix>_<signal>_actual_tariff_startsensor.<prefix>_<signal>_actual_tariff_endsensor.<prefix>_<signal>_next_low_tariff_startsensor.<prefix>_<signal>_next_low_tariff_endsensor.<prefix>_<signal>_next_high_tariff_startsensor.<prefix>_<signal>_next_high_tariff_endsensor.<prefix>_<signal>_next_switchsensor.<prefix>_<signal>_remain_actual
Where:
<signal>is sanitized for entity naming (e.g.A1B→a1b)<prefix>is either:hdo(default), producinghdo_<signal>_*- your custom prefix (optional), producing
<prefix>_<signal>_*
The same HDO switching schedule data is available on the official ČEZ Distribuce portal:
| Entity ID suffix | Platform | Description | Notes |
|---|---|---|---|
low_tariff |
binary_sensor |
true when low tariff (NT) is active |
Static default icon (can be overridden in UI) |
actual_tariff |
sensor |
Current tariff (NT / VT) |
String state |
actual_tariff_start |
sensor |
Start of current tariff window | Timestamp (UTC → shown in local time) |
actual_tariff_end |
sensor |
End of current tariff window | Timestamp |
next_low_tariff_start |
sensor |
Start of next low tariff (NT) window | Timestamp |
next_low_tariff_end |
sensor |
End of next low tariff (NT) window | Timestamp |
next_high_tariff_start |
sensor |
Start of next high tariff (VT) window | Timestamp |
next_high_tariff_end |
sensor |
End of next high tariff (VT) window | Timestamp |
next_switch |
sensor |
Next tariff switch time | Timestamp |
remain_actual |
sensor |
Remaining time until the next switch | State is seconds, attributes include formatted HH:MM:SS |
Example entity IDs (default prefix):
sensor.hdo_a1b_next_switch,binary_sensor.hdo_a1b_low_tariff
- Open your Home Assistant.
- Go to HACS.
- Select Integrations.
- Open the menu (top right) and choose Custom repositories.
- Add this repository and select Integration as category:
https://github.com/pokornyIt/ha-cez-distribution-hdo
- In HACS, search for ČEZ Distribuce HDO and click Download.
- Restart Home Assistant.
- Download the latest release from:
- Copy the folder
custom_components/cez_distribuce_hdointo your Home Assistant config directory:<config>/custom_components/cez_distribuce_hdo
- Restart Home Assistant.
- Open your Home Assistant.
- Go to Settings → Devices & services.
- Click Add integration.
- Search for ČEZ Distribuce HDO.
You will be asked for:
- EAN code (18 digits)
- Optional prefix (used for device/entity naming)
- If multiple HDO signals are available for the EAN, you will be asked to select one
This integration uses a 1:1 model:
- 1 config entry = 1 signal
- If you want to add another signal for the same EAN, add the integration again and select a different signal.
Home Assistant keeps entity_id stable.
- The integration proposes default entity IDs based on prefix + signal when entities are created.
- If you later change the prefix in integration options, existing entity IDs will NOT be renamed automatically.
To rename an entity ID manually:
Settings → Devices & services → Entities → (select entity) → Entity ID
- A signal snapshot is computed periodically (default: every 5 seconds).
- Source schedule data is refreshed less frequently (default: every 8 hours).
Please report issues here:
Include:
- Home Assistant version
- integration version
- a relevant log excerpt from Settings → System → Logs