Local control of Hive and Danfoss TRVs and Hive receivers (SLR1/SLR2) via Zigbee2MQTT.
No Hive cloud. No Hive hub. Fully local over MQTT.
- Per-device entries — add each TRV and receiver individually with its Z2M MQTT topic
- Room groups — group TRVs into virtual room climate entities
- Boiler demand — turns your receiver/boiler on when any group member calls for heat
- Schedules — weekly heating schedules with comfort and eco presets
- Boost — timed boost per device or per room group
- Lovelace cards — auto-registered cards for individual TRVs and room groups
- Entity suppression — when a TRV joins a group its individual climate entity is hidden; restore it by removing from the group
| Device | Type | Z2M model |
|---|---|---|
| Hive Radiator Valve | TRV | UK7004240 |
| Hive SLR1 / SLR1b / SLR1c / SLR1d | Receiver (single channel) | SLR1 |
| Hive SLR2 / SLR2b / SLR2c / SLR2d | Receiver (dual channel — heating + hot water) | SLR2 |
| Hive OTR1 | Receiver (standalone) | OTR1 |
Note: The Hive SLT thermostat (SLT6 etc.) exposes only a battery sensor in Z2M — it has no climate entity and does not need to be added to this integration.
- Home Assistant 2024.1.0 or later
- Zigbee2MQTT running and connected to HA via the MQTT integration
- Hive TRVs and/or receivers paired to Zigbee2MQTT
- Open HACS in HA
- Click ⋮ → Custom repositories
- Add
https://github.com/gashwell/Hive-TRV-Local-v3— category: Integration - Click Download
- Restart Home Assistant
Copy the custom_components/hive_trv_local folder into your HA config/custom_components/ directory and restart.
Settings → Devices & Services → Add Integration → Hive TRV Local → Add a TRV
Enter:
- Device name — a friendly name, e.g.
Living Room TRV - Z2M MQTT topic — the full topic from Zigbee2MQTT, e.g.
zigbee2mqtt/Living Room TRV
Repeat for every TRV. Each creates its own device entry with:
climate.*— individual TRV climate entitysensor.*— battery and heating demandnumber.*— boost temperature, boost duration, frost protection
Add Integration → Add a receiver
Enter:
- Device name — e.g.
Hive Receiver - Z2M MQTT topic — e.g.
zigbee2mqtt/Hive Receiver - Model — SLR1 (single channel), SLR2 (dual channel — adds hot water control), OTR1
SLR2 creates an additional water mode select entity and water boost button.
Add Integration → Set up room group manager
This creates a single group manager entry. Only do this once.
Room Groups → Configure → Manage room groups → Create a new room group
- Enter a room name
- Select TRVs from the picker — only your registered TRVs appear, only those not already in a group
- Optionally add extra temperature sensors
- Done — a group climate entity is created and the individual TRV climate entities are hidden
Room Groups → Configure → Settings
- Boiler / receiver entity — set this to your receiver's climate entity (or a switch/input_boolean). It will be turned on when any group member calls for heat.
Each room group creates:
climate.*— virtual group climate entity (average temperature, fan-out commands)button.*— Boost and End Boost buttonsnumber.*— default boost temperature and duration
| Mode | Description |
|---|---|
| Manual | Set a target temperature directly |
| Schedule | Follow a weekly time/temperature schedule |
| Boost | Timed boost at a set temperature, returns to previous mode when finished |
| Off | Turn all members off |
When a TRV is added to a group its individual climate.* entity is hidden automatically. This keeps dashboards clean — you control the TRV through the group card.
Remove the TRV from the group and the individual entity is immediately restored, no restart required.
Both cards are auto-registered when the integration loads — no manual resource setup needed.
type: custom:hive-trv-card
entity: climate.living_room_trv
battery_entity: sensor.living_room_trv_battery # optional
demand_entity: sensor.living_room_trv_pi_heating_demand # optionalFeatures: current temperature, target temperature, mode selector (Manual/Schedule/Boost/Off), boost panel with temperature and duration sliders, schedule slot view, battery bar, heating demand bar, signal strength, valve orientation, window open toggle, frost protect.
type: custom:hive-trv-group-card
entity: climate.living_roomFeatures: average temperature, group target temperature, mode selector, schedule view with current slot highlighted, heating demand bar, per-member temperature breakdown.
Both cards appear automatically in the HA 2026.6+ entity-based card picker when you add a card from a TRV or group entity page.
| Service | Description |
|---|---|
hive_trv_local.group_boost |
Start a timed boost on a room group |
hive_trv_local.group_end_boost |
Cancel an active boost |
hive_trv_local.group_set_schedule |
Set a custom weekly schedule |
hive_trv_local.group_clear_schedule |
Remove the schedule (returns to manual) |
hive_trv_local.group_advance_schedule |
Skip immediately to the next scheduled slot |
service: hive_trv_local.group_set_schedule
data:
entity_id: climate.living_room
schedule:
- days: [0, 1, 2, 3, 4] # 0=Mon, 6=Sun
time: "06:30"
temperature: 21.0
- days: [0, 1, 2, 3, 4]
time: "09:00"
temperature: 18.0
- days: [5, 6]
time: "08:00"
temperature: 21.0Info-level events (device setup, room creation, boiler demand changes, boost start/end) appear in HA logs without any configuration.
For full debug output add to configuration.yaml:
logger:
default: warning
logs:
custom_components.hive_trv_local: debugTRV not responding to commands
- Check the Z2M MQTT topic in the device settings exactly matches what Z2M shows in its device list
- Check the MQTT integration is connected and Z2M is running
- Check the HA log for
custom_components.hive_trv_localentries
Room group climate entity unavailable
- At least one member TRV must have reported state to Z2M since HA started
- Check that the TRV's individual entity exists and has a state in Developer Tools → States
Configure button not showing
- The integration entry must be fully loaded — check Settings → System → Logs for errors
- If upgrading from a previous version, delete all old entries first and re-add
HACS shows "no information"
- HACS → ⋮ → Reload data, then try again
See CHANGELOG.md for full release notes.
| Version | Summary |
|---|---|
| 4.0.0 | Complete rewrite — per-device entries, entity suppression, receiver support |
| 3.1.x | MQTT topic-based member selection (superseded) |
| 2.0.x | Z2M entity detection attempts (superseded) |
Receiver MQTT coordinator adapted from andrew-codechimp/HA-Hive-Local-Thermostat (MIT licence).
See NOTICE for full attribution.
MIT — see LICENSE for details.