What's Changed
Bug Fixes
- Fix Translation Error on Duplicate CCU Configuration: Fixed "The intl string context variable 'serial' was not provided" error when attempting to add a CCU instance that is already configured. The abort message now correctly displays the serial number.
- Fix Unwanted Integration Reload on Action Select Change: Action select values (e.g., siren tones, light patterns) are now stored in a separate storage file instead of the config entry. Previously, changing an action select value triggered
async_update_entry()which caused a full integration reload via theupdate_listener. This fix eliminates unnecessary restarts when selecting different tones or patterns. Existing values are automatically migrated from config entry to the new storage file. - Fix Options Flow Not Persisting Changes (#2776): Configuration changes made in the Options Flow (e.g., enabling SysVar scan) were lost after Home Assistant restart. The issue was caused by a shallow copy of config entry data that shared nested dictionary references with the original. Home Assistant's change detection saw no difference and skipped saving. Now uses
deepcopyto ensure complete independence.
Internal
- Migrate to Capabilities Pattern: Updated all
supports_*properties to the new unified Capabilities pattern from aiohomematic. Static capabilities now usecapabilities.*(e.g.,capabilities.brightness,capabilities.open), while dynamic properties usehas_*(e.g.,has_hs_color,has_effects). This affects light, lock, siren, and MQTT entities. - Config Entry Version 13: Added migration to remove
action_select_valuesfrom config entry data. - Default Entity Descriptions for Update Entities: Added default descriptions with
UpdateDeviceClass.FIRMWAREforUPDATEandHUB_UPDATEdata point categories. - Interface Connectivity Binary Sensors: Added entity description rule with
BinarySensorDeviceClass.CONNECTIVITYfor the new hub-level interface connectivity sensors.
Bump aiohomematic to 2026.1.30
Bug Fixes
- Fix Device Availability Not Reset After CCU Restart (#2776): All devices remained unavailable after CCU restart because the availability reset only triggered when
old_statewas in(DISCONNECTED, FAILED, RECONNECTING), but the final transition hasold_state=CONNECTING. AddedCONNECTINGto the list of states that trigger availability reset. - Fix Race Condition in Client State Event Processing (#2776): Events from the EventBus may be processed out of order (e.g.,
disconnectedevent processed afterconnectedevent). Now checks the current client state before marking devices unavailable, preventing incorrect availability changes when the client has already recovered. - Fix Connectivity Sensors Not Updating During CCU Restart: Interface connectivity binary sensors now subscribe to
ClientStateChangedEventfor immediate reactive updates instead of only updating during scheduled refresh cycles. - Fix CuXD Devices Not Created When Paramset Descriptions Missing: When device_descriptions were already cached but paramset_descriptions were missing (e.g., from a previous interrupted run), devices were skipped. Now properly detects missing paramset_descriptions and ensures both caches stay synchronized.
New Features
- Faster Connectivity Detection: Improved connection loss detection from ~240s to ~20s with new
ping_timeout(10s) andconnectivity_error_threshold(1). Devices are now marked unavailable immediately when client state changes to DISCONNECTED/FAILED. System health score now correctly shows 0% before connections are established. - Interface Connectivity Binary Sensors: New hub-level binary sensors showing per-interface connectivity status (HmIP-RF, BidCos-RF, etc.). Shows ON when connected and operational, OFF when disconnected or failed. Always available since its purpose is to show the connection state itself.