What's Changed
Bug Fixes
- Fix Translation Error When Skipping Backend Detection: Fixed "The intl string context variable 'detected_interfaces' was not provided" error when using the "Skip automatic backend detection" option in the config flow. The interface step now provides a default placeholder value when detection results are not available.
- Fix Missing device_class for Update Entities: Update entities for device firmware and hub updates now correctly report
device_class: firmware. Previously the device_class was not set despite having an entity description rule defined.
Internal
- Remove Unused UpdateEntityDescription Defaults: Removed
UpdateEntityDescriptionentries forUPDATEandHUB_UPDATEfromdefaults.pysince Update entities don't use the generic entity helper system. Thedevice_classis now set directly on the entity classes. - Migrate Event Platform to ChannelEventGroup: Migrated the event platform from individual
GenericEventsubscriptions to the newChannelEventGroupProtocolpattern. Event groups are now virtual data points bound to channels, providing unified subscription management viasubscribe_to_data_point_updated(). This simplifies subscription handling (single subscription per entity instead of one per event type) and aligns with the standardCallbackDataPointProtocolpattern. - Config Entry Migration v14: Added entity registry migration for event entities to update unique_ids from the old channel-based format (
homematicip_local_{channel_unique_id}) to the new event_group-based format (homematicip_local_event_group_homematic.keypress_{channel_unique_id}). This ensures existing event entities are preserved when upgrading from version 2.1.2.
Bump aiohomematic to 2026.1.40
New Features
- Paramset Description Patching System: Added a generic mechanism to correct faulty
paramset_descriptionsfrom the CCU. The system applies device-specific corrections during data ingestion using declarative patch definitions. Initial patch corrects HM-CC-VG-1 channel 1SET_TEMPERATUREMIN/MAX values (4.5/30.5) instead of the incorrect CCU-provided values. - translation_key for Data Points: All data point types now provide a consistent
translation_keyproperty for translations. This includes hub sensors, metrics sensors, inbox, install mode, device/system updates, and calculated data points.
Changed
- ChannelEventGroup as Virtual Data Point: Refactored
ChannelEventGroupfrom a helper class to a virtual data point bound to the Channel. Event groups now extendCallbackDataPointand follow the standard subscription pattern withsubscribe_to_data_point_updated(). See migration guide:docs/migrations/channel_event_group_migration_2026_01.md.
Bug Fixes
- Cache Schema v3: Cache schema bumped to v3 with automatic rebuild when the schema version changes.
- Legacy Cache Migration for Climate Schedules: Fixed
ValidationException: Time 360 is invaliderror when starting with cached schedule data. The issue was old cachedendtimevalues stored as numeric strings ("360") instead of integers or time strings. A new helper handles all three formats. - Coordinated Cache Clearing on Version Mismatch: Fixed issue where only one cache was cleared on schema version change. Now both device and paramset description caches are cleared together, preventing incomplete rebuilds.
- Sound Player Soundfile Default Handling: Fixed
turn_on()to use the entity's current value or default whensoundfileis not provided, instead of always defaulting to"INTERNAL_SOUNDFILE". - Backend Detection Timeout Support: Fixed
TypeError: ServerProxy.__init__() got an unexpected keyword argument 'timeout'. Introduced custom transport classes for proper socket timeout handling.