A Home Assistant custom integration that replaces the Danfoss Ally Gateway hardware by replicating its Zigbee coordination features locally. Pair your Danfoss Ally TRVs directly with Zigbee2MQTT (ZHA support planned) and let this integration handle room management, scheduling, load balancing, and more.
- Room-based TRV management -- group multiple TRVs into rooms with a virtual thermostat
- External temperature forwarding -- use any HA temperature sensor instead of the TRV's built-in sensor, with Danfoss-compliant timing for covered and exposed radiator modes
- Weekly schedule programming -- program up to 6 daily transitions per day via ZCL thermostat commands
- Preheat -- start heating before a scheduled temperature increase to reach the target on time
- Multi-TRV load balancing -- balance heating load across TRVs in a room
- Window open detection -- detect and propagate window-open state across TRVs in a room
- Remote climate sync -- bidirectional setpoint synchronization with another HA climate entity
- Heat source monitoring -- track heating system availability via a climate or binary sensor entity
- Time synchronization -- periodic time sync to TRVs
- Power-cycle detection -- automatic schedule re-programming after TRV power loss
- Danfoss Ally TRVs
- Popp TRVs (Danfoss Ally compatible)
- Hive TRVs (Danfoss Ally compatible)
- Home Assistant 2025.6.0 or newer
- Zigbee2MQTT with MQTT integration configured in HA
- TRVs paired to your Zigbee2MQTT network
- Open HACS in Home Assistant
- Click the three dots in the top right corner and select Custom repositories
- Add this repository URL with category Integration
- Search for "Danfoss Ally Gateway" and download it
- Restart Home Assistant
- Download the latest release from the releases page
- Copy the
custom_components/danfoss_ally_gatewaydirectory to your Home Assistantconfig/custom_components/directory - Restart Home Assistant
- Go to Settings > Devices & Services > Add Integration
- Search for Danfoss Ally Gateway
- Select your Zigbee backend (Zigbee2MQTT) and configure the MQTT base topic (default:
zigbee2mqtt) - Add rooms as subentries, each with:
- Room name and area assignment
- TRV devices -- select one or more Danfoss Ally TRVs
- External temperature sensor (optional) -- any HA temperature sensor
- Heat source (optional) -- a climate or binary sensor entity
- Remote climate (optional) -- a climate entity for bidirectional setpoint sync
- Schedule helper (optional) -- a schedule helper entity defining at-home/away periods
- At-home / away temperatures -- target temperatures for scheduled periods
- Preheat -- enable to pre-heat before scheduled temperature increases
Each room creates the following entities:
| Platform | Entity | Description |
|---|---|---|
| Climate | Room thermostat | Virtual thermostat representing the room |
| Binary Sensor | Heat Required | Whether any TRV in the room is calling for heat |
| Binary Sensor | Heat Available | Whether the heat source is active |
| Binary Sensor | Window Open | Whether a window-open condition is detected |
| Sensor | Heating Demand | Per-TRV heating demand percentage |
| Sensor | Load Estimate | Per-TRV load estimate |
| Sensor | Load Room Mean | Average load estimate across all TRVs in the room |
| Select | Programming Mode | Manual, Schedule, Schedule + Preheat, or Pause |
| Switch | Load Balancing | Enable/disable multi-TRV load balancing |
| Service | Description |
|---|---|
danfoss_ally_gateway.set_room_schedule |
Program a weekly heating schedule to all TRVs in a room |
danfoss_ally_gateway.clear_room_schedule |
Clear the schedule and set TRVs to manual mode |
danfoss_ally_gateway.set_schedule_mode |
Set programming mode (manual/schedule/preheat/eco) |
Contributions are welcome. Please open an issue or pull request on the GitHub repository.
This project is licensed under the MIT License -- see the LICENSE file for details.