github SukramJ/homematicip_local 2.1.2b4

latest release: 2.1.2b5
pre-release5 hours ago

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 the update_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: 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 deepcopy to ensure complete independence.
  • Fix homematic.device_availability Event Not Fired: The event was defined but never actually fired when device availability changed. This broke all blueprints that relied on this event (persistent notifications, device reactivation). Now fires homematic.device_availability with full event data (device_id, name, address, interface_id, model, unavailable status) when DeviceLifecycleEventType.AVAILABILITY_CHANGED is received.
  • Fix Device Services Failing for Sub-Devices: Services like force_device_availability failed with "No device found" for sub-devices (devices with enable_sub_devices option). The identifier parser incorrectly included the group suffix (e.g., -1) in the interface_id, causing client lookup to fail. Now correctly strips the group suffix when parsing sub-device identifiers.

Internal

  • Migrate to Capabilities Pattern: Updated all supports_* properties to the new unified Capabilities pattern from aiohomematic. Static capabilities now use capabilities.* (e.g., capabilities.brightness, capabilities.open), while dynamic properties use has_* (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_values from config entry data.
  • Default Entity Descriptions for Update Entities: Added default descriptions with UpdateDeviceClass.FIRMWARE for UPDATE and HUB_UPDATE data point categories.
  • Interface Connectivity Binary Sensors: Added entity description rule with BinarySensorDeviceClass.CONNECTIVITY for the new hub-level interface connectivity sensors.

Bump aiohomematic to 2026.1.35

Bug Fixes

  • Fix Schedule Validation Error on Device Initialization: Fixed ValidationException: Time 360 is invalid error occurring when heating group devices (VirtualDevices interface) are initialized. The identify_base_temperature() function incorrectly assumed all endtime values in the schedule cache are formatted strings ("06:00"), but during initial cache loading they can be raw integers (360 minutes) directly from the CCU. The function now handles both integer and string formats by checking the type before conversion. This fixes climate entity creation failures and recurring errors on Home Assistant startup.
  • Fix Type Safety for ScheduleSlot: Updated ScheduleSlot TypedDict to correctly declare endtime: str | int instead of endtime: str. This reflects the actual behavior where the CCU always returns integers (minutes since midnight) while internal conversion may use string format.
  • Fix CUxD/CCU-Jack Unnecessary Reconnects via MQTT: Fixed false positive connection loss detection for CUxD and CCU-Jack interfaces when used with Homematic(IP) Local MQTT bridge. These interfaces use JSON-RPC without ping/pong support and receive events via MQTT, causing callback timeout checks to incorrectly trigger reconnects every ~4 minutes. Both is_callback_alive() and is_connected() now check ping_pong capability to skip callback timeout validation for MQTT-based interfaces.
  • Fix Syntax Error in device_ops.py: Fixed IndentationError in _validate_and_convert_value() method that prevented module import. Restored missing value conversion and MIN/MAX validation code block.
  • Fix LINK Paramsets Causing False "Incomplete Device Data" Issues: LINK paramsets are now excluded from paramset fetch operations and completeness checks. LINK paramsets are only relevant for device linking (direct associations) and are fetched dynamically when links are configured. Previously, failed LINK fetches (which occur when no links exist) caused devices to be incorrectly flagged as having incomplete data, triggering unnecessary repair issues.
  • Fix Empty Paramset Descriptions Not Being Cached: Fixed issue where paramset descriptions that return an empty dict {} (valid response) were incorrectly treated as missing. HmIP base device addresses and some channel types return empty MASTER or VALUES paramsets which is valid behavior. The fix uses is not None check instead of truthy check, ensuring empty dicts are properly cached.
  • Fix Device Availability Not Reset After CCU Restart: All devices remained unavailable after CCU restart because the availability reset only triggered when old_state was in (DISCONNECTED, FAILED, RECONNECTING), but the final transition has old_state=CONNECTING. Added CONNECTING to the list of states that trigger availability reset.
  • Fix Race Condition in Client State Event Processing: Events from the EventBus may be processed out of order (e.g., disconnected event processed after connected event). 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 ClientStateChangedEvent for 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.
  • Fix Temperature Parameter Formatting in Schedules: Temperature values in simple weekly schedules were sent as integers to the CCU, causing them to be silently ignored. The CCU requires temperature parameters as floats. Explicit float conversions are now applied to all schedule temperature values.
  • Fix Cache Persistence Race Condition: Cache is now automatically persisted when data fetch completes, preventing paramsets from being lost if a shutdown occurs before the scheduled save.
  • Fix Device Creation with Incomplete Data: Added validation ensuring all required paramsets exist in cache before device creation proceeds. Incomplete data now triggers an INCOMPLETE_DEVICE_DATA integration issue event instead of silently creating broken devices.
  • Fix Performance Regression in Device Creation: Fixed severe performance regression causing N cache saves for N devices. The event is now published once after the entire batch completes, reducing startup time from ~210 seconds to ~17 seconds for 397 devices (13x improvement).
  • Fix Parameter Type Conversion for HM-CC-VG-1: Fixed TypeError when calling put_paramset on HM-CC-VG-1 device. The device returns MIN/MAX values as strings instead of numbers, which now undergo proper numeric conversion before comparison.

Changed

  • Schedule Cache Now Uses Pessimistic Update Strategy: Climate schedule cache (ClimateWeekProfile and DefaultWeekProfile) is no longer updated optimistically when calling set_schedule(), set_profile(), or set_weekday(). The cache is now updated only after receiving CONFIG_PENDING = False from the CCU via reload_and_cache_schedule(). This ensures the cache always reflects the actual CCU state, eliminating race conditions and inconsistencies. The cache remains essential for performance (avoiding RPC calls on reads) and event optimization (publishing events only when data changes).

New Features

  • Faster Connectivity Detection: Improved connection loss detection from ~240s to ~20s with new ping_timeout (10s) and connectivity_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.
  • Schedule Support for HM-CC-VG-1: Enabled schedule functionality for the HM-CC-VG-1 virtual group device.

Don't miss a new homematicip_local release

NewReleases is sending notifications on new releases.