Skip to content

Releases: gashwell/Hive-TRV-Local-v2

v2.0.12

Choose a tag to compare

@gashwell gashwell released this 10 Aug 18:47

v2.0.12

Feature: SLR receivers now detected alongside TRVs

The group member picker now shows all Hive heating devices — TRVs and boiler receivers (SLR1/SLR2 all variants).

Note on the SLT thermostat: The SLT6 and SLT series thermostats are remote controls for the SLR receiver — Z2M only exposes a battery sensor for them, not a climate entity. There is nothing to show for SLTs; the SLR receiver is the controllable device.

Detection attribute sets (Z2M-specific, not present on generic HA thermostats):

TRV-specific: pi_heating_demand, local_temperature_calibration, valve_position

Receiver-specific: temperature_setpoint_hold, temperature_setpoint_hold_duration

Common to both: running_state

Deliberately excluded from match: system_mode, occupied_heating_setpoint (too common — present on Nest, Ecobee, generic_thermostat etc).

Falls back to all non-group climate entities if no Z2M attributes are found.

v2.0.11

Choose a tag to compare

@gashwell gashwell released this 10 Aug 18:44

v2.0.11

Bug fix: TRV detection completely rewritten

Previous versions tried to detect TRVs via the HA device registry (platform filter + model string matching). This failed because the platform string Z2M uses varies between versions, and device registry data may not be populated at the time the config flow runs.

New approach — Z2M state attribute detection:

Looks at hass.states for climate entities that carry Z2M TRV-specific attributes: pi_heating_demand, running_state, local_temperature_calibration, system_mode, valve_position, occupied_heating_setpoint. Any climate entity with at least one of these is a Z2M TRV. No device registry. No platform filter. No model strings.

Falls back to all non-group climate entities if no Z2M attributes are found (e.g. Z2M not yet reporting state).

Hive TRV Local group entities are always excluded regardless.

v2.0.10

Choose a tag to compare

@gashwell gashwell released this 10 Aug 18:25

v2.0.10

Bug fix: Hive TRVs still not appearing in group member picker

The v2.0.9 fix addressed the wrong thing. The model string from Z2M is exactly UK7004240 which should have matched. The real problem was the platform filter.

Z2M registers entities in HA under the mqtt platform but the exact string stored in the entity registry varies between Z2M versions. The filter entry.platform not in ('mqtt', 'zigbee2mqtt') was silently excluding all TRV entities.

Fix: Platform filter removed entirely. Detection now relies on:

  1. Must be a climate entity
  2. Must NOT be a Hive TRV Local group entity
  3. Device model or manufacturer contains a known Hive/Danfoss/Popp string (case-insensitive substring match)

Manufacturer names hive, danfoss, popp, bitron are also matched directly.

Diagnostics: After updating, open Configure. Check HA log for TRV detection: lines at WARNING level showing exactly what was found and skipped.

v2.0.9

Choose a tag to compare

@gashwell gashwell released this 10 Aug 18:14

v2.0.9

Bug fix: Hive TRVs not appearing in group member picker

Root cause: _hive_danfoss_entity_ids() used an exact string match — device.model in HIVE_DANFOSS_MODELS. Z2M reports model strings in various formats, commonly verbose strings like "Hive Radiator Valve (UK7004240)" rather than the bare "UK7004240" the set contained. An exact match on a set checks whether the full model string is a set member, not whether it contains one — so most real TRVs were silently excluded.

Additionally, entities with no device_id or no model info were skipped entirely rather than included.

Fix:

  • Model matching now uses any(known in model for known in HIVE_DANFOSS_MODELS) — substring match handles verbose Z2M model strings correctly
  • Entities on the mqtt/zigbee2mqtt platform with no model info are included with a warning note so they appear in the picker (user can deselect anything that is wrong)
  • Group entities (unique_id: room_*_climate) are explicitly excluded regardless of platform
  • Detection results are logged at WARNING level so you can see exactly what was found/skipped without enabling debug logging: look for TRV detection: lines in the HA log after opening Configure

v2.0.8

Choose a tag to compare

@gashwell gashwell released this 05 Jun 14:31

v2.0.8

Bug fix: Add group failing

Root cause: The options flow always ended with async_create_entry, which triggered the add_update_listener callback, which reloaded the entire integration. For group operations (add/edit/remove), the reload was racing against and killing the _create_room task before it could complete. The new group was saved to storage but no entities were created.

Fix: The update listener now compares old vs new options and only reloads when settings changed (boiler entity or diagnostics toggle). Group changes — which are handled live via the event bus — no longer trigger a reload at all.

Logging added throughout

Previously the integration produced almost no log output, making it very hard to debug issues. Info and debug logging has been added to:

  • __init__.py — setup lifecycle, room creation, event handling, service call failures
  • room.py — coordinator setup, member updates, mode changes, boost start/end, schedule set/clear, service calls to member TRVs
  • boiler.py — demand state changes (ON/OFF) now log at INFO instead of DEBUG, member subscription

To see debug-level logs, add to your configuration.yaml:

logger:
  default: warning
  logs:
    custom_components.hive_trv_local: debug

Info-level logs (room creation, boiler demand changes, boost events) appear without any logger config change.

v2.0.7

Choose a tag to compare

@gashwell gashwell released this 05 Jun 13:57

v2.0.7

Bug fix: edit and delete group options missing

Root cause: async_step_groups was calling async_show_menu with a dynamically filtered menu_options dict — showing edit_group, set_schedule, and remove_group only when rooms existed. HA's async_show_menu validates options against strings.json at render time and does not support runtime-filtered option lists, so on some HA versions or after a frontend cache refresh the conditional options were silently dropped.

Fix: The groups menu now always shows all four options. The empty-groups guard (_no_rooms_entry) is moved inside each individual step — so if you click Edit or Remove when no groups exist, the flow exits cleanly rather than showing an empty picker.

Also fixed: async_step_settings was referencing the boiler manager via the raw string "boiler_mgr" instead of the DATA_BOILER constant. Corrected to use the constant consistently.

No configuration changes required.

v2.0.6

Choose a tag to compare

@gashwell gashwell released this 05 Jun 11:26

v2.0.6

HA 2026.6 card picker support

Both cards now appear as suggestions in the new entity-based card picker introduced in Home Assistant 2026.6.

custom:hive-trv-card — appears in the Community section when you pick any individual Hive/Danfoss TRV climate entity (detected by pi_heating_demand or battery attributes). The suggestion config is pre-populated with the correct battery_entity, demand_entity, and orientation_entity companions if they exist in your entity registry — no manual config needed.

custom:hive-trv-group-card — appears in the Community section when you pick a Hive TRV Local room group climate entity (detected by the members array attribute).

No configuration changes required. Works automatically on HA 2026.6+. On earlier versions the cards continue to work exactly as before — getEntitySuggestion is silently ignored.

v2.0.5

Choose a tag to compare

@gashwell gashwell released this 05 Jun 11:11

v2.0.5

Bug fixes

Fragile service entity lookup replaced — services (boost, end_boost, set_schedule, clear_schedule, advance_schedule) previously resolved a room group climate entity to its coordinator by slugifying the room name and string-matching (climate.{slug}). This broke for room names containing punctuation, accented characters, or anywhere HA slugified differently. Now uses the entity registry: looks up the unique_id (room_{room_id}_climate) and resolves directly to the coordinator.

Private attribute access removedbutton.py was reading boiler_mgr._boiler directly (a private attribute of BoilerDemandManager). BoilerDemandManager now exposes a public boiler_entity property and button.py uses that instead.

No configuration changes required. Existing groups, schedules, and boost defaults are preserved.

v2.0.4

Choose a tag to compare

@gashwell gashwell released this 03 Jun 06:35

v2.0.4

Documentation and installer script

DECISION_GUIDE.md — Full architecture guide covering how v2 and v3 work, when to use each version, data flow diagrams, storage schema, event bus, services, and card selection guide.

install-hive-cards.py — Run on your HA server to download and apply the cards:

python3 /config/install-hive-cards.py

or fetch directly:

curl -fsSL https://raw.githubusercontent.com/gashwell/Hive-TRV-Local-v2/main/install-hive-cards.py | python3

The script downloads the JS files, registers Lovelace resources, scans your dashboard for existing climate cards, and replaces them with the correct Hive TRV card (individual TRV vs room group auto-detected).

INSTALL_CARDS.md — Manual installation instructions and card YAML reference.

v2.0.3

Choose a tag to compare

@gashwell gashwell released this 03 Jun 06:28

v2.0.3

Two separate cards

custom:hive-trv-card — Individual Z2M TRV card. Shows current/target temperature, Manual/Schedule/Boost/Off modes, boost panel, schedule slots, battery, heating demand, signal, valve orientation, window toggle, frost protect. No group information.

custom:hive-trv-group-card — Room group card. Shows average temperature, group target, modes, boost panel, schedule slots, aggregate heating demand bar, per-member temperature list with individual heating indicators, frost protect all. No orientation or battery (those are per-device).

Both cards are auto-registered by the integration — no manual resource setup.