Skip to content

Releases: MattieGit/qube_heatpump

v2026.2.4

12 Feb 21:02

Choose a tag to compare

v2026.2.4 Pre-release
Pre-release

Bug fixes

Fix: total_increasing sensors reporting false decreases after HA restart (#27)

Energy and working hours sensors with state_class: total_increasing could report a tiny decrease (e.g. 7353.69 → 7353.68) after a Home Assistant restart, triggering the warning "state is not strictly increasing".

Root cause (two bugs):

  1. Cross-cycle cache loss — The monotonic clamping cache was stored via hass.data.get(DOMAIN, {}) which silently created a temporary dict each update cycle. This meant the clamping logic was ineffective across polling intervals.
  2. Cross-restart cache loss — The in-memory cache was lost on HA restart, so the first register reading (subject to float32 precision jitter) could round slightly below the last recorded state.

Fix:

  • The monotonic cache is now stored as a coordinator instance attribute (fixes cross-cycle)
  • The cache is persisted to disk every 5 minutes via HA's Store helper (fixes restart)
  • On startup, the cache is restored from disk before the first coordinator refresh

Closes #27

2026.2.3

11 Feb 10:35

Choose a tag to compare

2026.2.3 Pre-release
Pre-release

What's new

Virtual thermostat

Control your Qube heat pump using an external room temperature sensor — no LinQ thermostat needed.

  • HVAC modes: Off, Heat, Cool, and Heat/Cool (auto-switching)
  • Hysteresis control: Activates modbus_demand when temperature drifts outside the target ± 0.3°C tolerance
  • Cooling support: Automatically switches bms_summerwinter on/off depending on the selected mode
  • State persistence: Target temperature and HVAC mode survive Home Assistant restarts
  • Safety timeout: If the temperature sensor stops reporting for 30 minutes, demand is turned off and a problem binary sensor (thermostat_sensor_timeout) is activated

DHW schedule

Schedule daily domestic hot water heating at a fixed time — useful when the LinQ thermostat is disabled and no longer manages DHW.

  • Configure a setpoint (40–65°C), start time, and end time
  • At the start time the integration writes the setpoint to the heat pump and activates DHW heating
  • At the end time DHW heating is turned off

How to enable

Both features are disabled by default. To enable them:

  1. Go to Settings → Devices & Services → Qube Heat Pump → Configure
  2. Toggle Enable virtual thermostat and/or Enable DHW schedule
  3. Follow the additional configuration steps that appear

Other changes

  • Fixed pre-existing ruff lint warnings
  • Version bump to 2026.2.3

Full Changelog: v2026.2.2...2026.2.3

Full Changelog: v2026.2.2...2026.2.3

v2026.2.2

07 Feb 09:04

Choose a tag to compare

⚠️ BREAKING CHANGES (since 2026.1.4) - Please Read Before Updating

This release contains breaking changes that may affect your existing setup. Automations, dashboards, and scripts referencing entity IDs may need to be updated.

Breaking: Entity ID Changes

  • Label prefix now always included: All entity IDs now include the device label prefix (e.g., sensor.qube_temp_supply instead of sensor.temp_supply)
  • Removed redundant qube_ prefix: Entity IDs no longer have a redundant qube_ prefix after the label (e.g., sensor.qube_temp_supply instead of sensor.qube_qube_temp_supply)
  • Renamed CV/SWW to CH/DHW: All entity names and IDs now use international terminology (Central Heating/Domestic Hot Water) instead of Dutch abbreviations

Breaking: Configuration Changes

  • Language setting removed: The "Language for entity names" option has been removed from the options flow (it was stored but never actually used)
  • Control switches moved: "Activate central heating", "Activate DHW heating", "Activate summer mode (cooling)", and "Start Anti-legionella" switches moved from Configuration to Controls section
  • Removed redundant entity: number.setpoint_dhw_setpoint removed (use number.tapw_timeprogram_dhwsetp_nolinq_setpoint instead)

Breaking: Architecture Overhaul

  • Major refactoring for Home Assistant core compatibility
  • Now uses python-qube-heatpump library instead of direct pymodbus usage

Note: Entity IDs are stored when first created. To get corrected entity IDs, reload the integration first (Settings → Integrations → Qube → Reload). For multi-device setups, you may need to remove both integrations and re-add them to get properly isolated entity registrations.


What's Changed in 2026.2.2

New Features

  • Writable heating/cooling override setpoints: Registers 101 (usr_pid_heatsetp) and 103 (usr_pid_coolsetp) can now be written via the write_register service and via the new number entities in the UI. This fixes the error "No writable entity found at address 101" for users who override the weather-dependent heating curve from Home Assistant automations.
  • Daily energy tracking: Added daily energy sensors for electric consumption and thermic yield (total, CH, and DHW split)
  • Configurable entity ID prefix: New "Entity ID prefix" option in integration settings

Fixes

  • Percentage sensors: Fixed pump/valve/demand sensors (aout_usrpmp_val, aout_srcpmp_val, aout_srcvalve_val, dhw_regreq, comppwrreq) reporting values 100x too high (e.g. 10000% instead of 100%)
  • Number entity translations: New setpoint entities show descriptive friendly names ("Heat setpoint (no curve)" / "Cooling setpoint (no curve)") instead of just "Qube"
  • Float32 jitter: Round values before monotonic clamp to prevent float32 jitter warnings
  • Coordinator lookups: Use unscoped data keys for coordinator lookups
  • Multi-device support (#25): Fixed entity corruption when adding a second heat pump
  • Entity ID prefix preservation: Fixed "Recreate entity ID" removing the label prefix
  • COP sensor precision: Fixed excessive decimals, added update throttling
  • Byte order: Corrected Float32 decoding from little endian to big endian
  • Room temperature: Returns unknown instead of -999 when sensor not installed; disabled by default
  • Many translation and naming fixes: See pre-release notes for full details

Requirements

  • python-qube-heatpump >= 1.5.1

Full Changelog: 2026.1.4...v2026.2.2

v2026.2.1

07 Feb 08:32

Choose a tag to compare

v2026.2.1 Pre-release
Pre-release

What's Changed

  • feat: Enable writing to heating/cooling override setpoint registers (101 and 103) via the write_register service. This fixes the error "No writable entity found at address 101" for users who override the weather-dependent heating curve from Home Assistant automations.
  • fix: Add number entity translations so the new setpoint entities show descriptive names instead of just "Qube".
  • fix: Round values before monotonic clamp to prevent float32 jitter warnings.
  • fix: Use unscoped data keys for coordinator lookups.

Upgrade notes

Requires python-qube-heatpump library v1.5.0+ (installed automatically).

v2026.1.14

05 Feb 10:17

Choose a tag to compare

v2026.1.14 Pre-release
Pre-release

Changes

Fixed

  • Energy sensor total_increasing warning - Fixed Home Assistant recorder warning where energy sensors (energy_total_thermic, energy_total_electric) occasionally reported a 0.01 decrease due to float32 precision jitter (Issue #26)

Technical Details

  • Root cause: the monotonic clamp in the coordinator operated on raw float values, but Home Assistant saw rounded values (2 decimal places for kWh). After an HA restart (when the in-memory cache is empty), float32 jitter from the modbus hardware could produce a rounded decrease (e.g. 4781.904781.89)
  • Fix: values are now rounded to their configured precision before the monotonic clamp, so the cache and HA always operate at the same precision
  • Added test reproducing both exact scenarios from the issue report

v2026.1.13

04 Feb 20:28

Choose a tag to compare

v2026.1.13 Pre-release
Pre-release

Changes

Fixed

  • Multi-device entity duplication - Fixed issue where adding a second heat pump caused all entities of the first heat pump to be duplicated with _3 suffix (Issue #25)

Technical Details

  • Unique IDs are now always scoped with host_unit prefix, regardless of single or multi-device mode
  • Removed the code that reloaded existing entries when adding new devices (no longer needed)
  • This ensures stable unique IDs when adding/removing devices

Migration

IMPORTANT: Users with existing multi-device setups who experienced duplication should:

  1. Remove ALL Qube Heat Pump integrations
  2. Restart Home Assistant
  3. Re-add both heat pumps fresh

Single-device users updating from v2026.1.12 or earlier will also need to remove and re-add the integration once due to the unique_id format change.

v2026.1.12

04 Feb 18:13

Choose a tag to compare

v2026.1.12 Pre-release
Pre-release

Changes

Fixed

  • Alarm group entity IDs - The alarm group was being populated with stale entity IDs from the entity registry. Now constructs entity IDs directly from vendor_id to ensure consistency with the actual entity IDs.

Notes

  • This fixes the "Unknown group members" error from Spook after updating to v2026.1.11
  • No need to remove/reinstall the integration - just update and restart Home Assistant

v2026.1.11

04 Feb 17:10

Choose a tag to compare

v2026.1.11 Pre-release
Pre-release

Changes

Fixed

  • Entity IDs now use vendor_id - Entity IDs are now stable and predictable based on vendor_id from modbus.yaml (e.g., switch.qube1_bms_summerwinter instead of switch.qube1_activate_summer_mode_cooling)
  • Fixed entity ID generation - Changed from invalid _attr_suggested_object_id to proper self.entity_id assignment, which Home Assistant correctly processes

Notes

  • Breaking change: Entity IDs will change after updating. You may need to update automations and dashboards.
  • To apply new entity IDs: Remove the integration completely, restart Home Assistant, then reinstall the integration.
  • Dashboard example has been updated with correct entity IDs.

v2026.1.10

04 Feb 15:19

Choose a tag to compare

v2026.1.10 Pre-release
Pre-release

What's Changed

Entity ID Naming Convention

Entity IDs now use vendor_id for stable, predictable naming that won't change when translations are updated.

Pattern: {platform}.{device_name}_{vendor_id}

Examples:

  • sensor.qube_temp_supply
  • switch.qube_bms_summerwinter
  • select.qube_sg_ready_mode

Benefits

  • Stable - Entity IDs won't change when translations are updated
  • Predictable - Direct mapping from modbus.yaml vendor_id to entity_id
  • Traceable - Easy to find modbus register documentation from entity_id

Breaking Changes

Entity IDs have changed. After updating, you need to remove and re-add the integration to get the new entity IDs.

Old Entity ID New Entity ID
sensor.qube_heat_pump_status sensor.qube_status_heatpump
sensor.qube_three_way_valve_status sensor.qube_drieweg_status
sensor.qube_four_way_valve_status sensor.qube_vierweg_status
sensor.qube_connect_errors sensor.qube_metric_errors_connect
sensor.qube_read_errors sensor.qube_metric_errors_read
sensor.qube_electric_consumption_standby sensor.qube_standby_energy
sensor.qube_electric_consumption_total_incl_standby sensor.qube_total_energy_incl_standby
number.qube_dhw_setpoint_manual_override number.qube_tapw_timeprogram_dhwsetp_nolinq

Other Changes

  • Fixed has_entity_name handling in number.py and button.py
  • Updated dashboard example with new entity IDs
  • Added CLAUDE.md documenting the naming convention

Full Changelog: v2026.1.9...v2026.1.10

v2026.1.9

04 Feb 14:12

Choose a tag to compare

v2026.1.9 Pre-release
Pre-release

Code cleanup

Removed redundant code after confirming the entity ID fix works correctly.

Changes

  • Moved _attr_has_entity_name = True to class attribute for all entity classes
  • Removed duplicate assignments from __init__ methods
  • Added class attribute to QubeSGReadyModeSelect for consistency

Note

If you're upgrading from a version before v2026.1.7 and entity IDs are not showing the correct qube_ prefix, you may need to remove and re-add the integration for the new entity ID format to take effect.