|
Home IO Control
ESPHome add-on for IO-Homecontrol devices
|
An electric radiator with a built-in display, sold by Atlantic mainly in France. It speaks io-homecontrol two-way, so the hub sets its temperature and mode and reads back the room temperature and whether it is heating. Three radiators are confirmed on a Heltec V3 (SX1262) with the climate: platform; see Heating and climate for every option.
| Capability | Status |
|---|---|
| Discover & Pair | ✅ Confirmed on three radiators; the hub pulls each radiator's own key |
| Target temperature | ✅ Confirmed — the display follows, and the hub reads the value back |
| Off, Heat, Auto and the Program preset | ✅ Confirmed — the display follows, and the hub reads the mode back |
| Room temperature | ✅ Confirmed |
| Heating / idle | ✅ Confirmed; follows a change from Home Assistant at the poll 45 seconds later, other changes at the regular poll (every 5 minutes by default) |
| Maximum setpoint | ✅ Confirmed — the radiator reports 28.0 °C |
| Window sensor | ✅ Confirmed — turns on when a window near the radiator is opened |
| Open Window Detection switch | ⚠️ Reads back the radiator's setting; switching detection off from Home Assistant is not tested yet |
The radiator has three operating modes, described in its installation manual. Home Assistant has no separate mode for the two automatic modes, so both appear as auto, with a preset that tells them apart:
| Radiator display | Home Assistant |
|---|---|
| BASIC — holds the set temperature, smart functions off | heat |
| AUTO — learns when the room is used and adjusts the temperature | auto with the Auto preset |
| PROG — follows the radiator's weekly program | auto with the Program preset |
| Off | off |
Choose Program or Auto to switch between the radiator's automatic modes; heat or off leaves them. The weekly program itself is edited on the radiator. The radiator shares its node type with the Atlantic Adelis towel dryer, which shows the comfort or eco period of its program, so that period may be visible here too. If you run the radiator in PROG, please open an issue so we can check it.
Each radiator answers as two io-homecontrol nodes:
Each radiator has a key of its own. The hub handles both points for you: Discover & Pair pulls the key, reads the heater at the next address under that key, and prints a block for the heater with that key in it. If the heater does not answer that read, the hub looks for it with a roll-call instead, which takes about 20 seconds.
The radiator's Expert menu (hold both arrow keys for more than 3 seconds) can delete all its connections. That gives the radiator a new key and new addresses for both nodes, and the new heater address is unrelated to the new pairing address. Your existing climate: entry for it stops working: pair the radiator again and replace the entry with the new block. The hub finds the heater with its roll-call, so this pairing takes about 20 seconds.
Pair one radiator at a time. The menus are in French.
The pairing takes a few seconds, or about 15 seconds when the hub has to fall back to a roll-call to find the heater. The radiator then reports that the device was added ("Appareil ajouté avec succès"). The hub's log prints a report between DEVICE KEY RECEIVED -- DO NOT SHARE IT and END OF DEVICE KEY REPORT, with a climate: block for the heater that includes the radiator's system_key:.
Until you flash, the hub controls the heater with the pulled key; after a reboot it needs the system_key: in your YAML.
If neither the direct read nor the roll-call reaches the heater, the log says outcome=key_received and prints the key without a block for the heater. Run Discover & Pair again with the radiator in Connexion mode, or put the key into a climate: entry's system_key:, flash, and press Scan Paired Devices. The heater answers only some roll-call requests, so repeat the scan if it finds nothing.
A radiator that already holds the hub's own key (for example, one you paired before by setting its key as the hub's system_key:) gets a block without system_key:, because its heater uses the hub's key. If the hub cannot reach the heater, the attempt ends as hub_key_returned: press Scan Paired Devices, and again if nothing answers.
Pairing the same radiator again before you flash prints its block again. Press Discover & Pair once per attempt: a press made while an attempt runs is ignored, with a log line saying so.
climate: - platform: home_io_control name: "Bedroom radiator" io_device_id: "986111" io_device_type: "electrical_heater" io_subtype: 1 system_key: !secret bedroom_radiator_key
io_device_id is the heater's address as the printed block shows it. Give every radiator its own entry with its own system_key:.
The Sauter Hekla, an electric heater from the same group, pairs and works the same way. It is confirmed on three heaters that were already paired with a Sauter Cozytouch, on a Heltec V3 (issue #222). The differences:
climate: - platform: home_io_control name: "Kids' room heater" io_device_id: "29FB38" io_device_type: "electrical_heater" io_subtype: 1 io_model: heater_with_light system_key: !secret cozytouch_key night_light: name: "Kids' room night light"
Six corpus captures from issue #165, on a Heltec V3 with the SX1262 driver:
An earlier capture shows the radiator refusing a pushed key: atlantic_agilia_pairing_key_transfer_command_unknown.