What's Changed
Breaking Changes (Schedule Services)
-
All schedule services have been migrated from entity-based to device-based. Services now use
device_idordevice_addressinstead of targeting entities. Existing automations using old service names must be updated. -
Renamed services:
get_schedule_simple_profile→get_schedule_profileget_schedule_simple_schedule→get_scheduleget_schedule_simple_weekday→get_schedule_weekdayset_simple_schedule→set_scheduleset_simple_schedule_profile→set_schedule_profileset_simple_schedule_weekday→set_schedule_weekdayset_schedule_active_profile→set_current_schedule_profile
-
Renamed entity attributes (Climate & Week Profile Sensor):
active_profile→current_schedule_profile
Added
-
Week profile sensor entity: New
AioHomematicWeekProfileSensorentity for every device with schedule support. Exposes schedule metadata (schedule type, max entries, schedule data) as state attributes. Climate devices additionally expose temperature bounds and available profiles (P1-P6). -
Device-based schedule services: All schedule services now use
device_idordevice_addressfor device identification. This replaces the previous domain-specific (entity-based) approach with a unified API that works for all device types. -
Command throttle interval config option: Added
command_throttle_intervalto Advanced Options (config flow and options flow). Controls the minimum delay between consecutive device commands per RF interface to ensure smooth operation and prevent packet loss during bulk operations. Default:0.1s. Set to0.0to disable. -
Optimistic rollback events: Added
homematicip_local.optimistic_rollbackevent and logbook integration. When an optimistic state update is rolled back (e.g. CCU rejects the value or times out), the event is fired and displayed in the logbook with the parameter name and rollback reason. -
Command throttle diagnostics: Added per-interface command throttle statistics to the diagnostics export, including interval, queue size, throttled/critical/burst counts, and burst detection thresholds.
-
Improved error handling: Extended
handle_homematic_errorsdecorator to catchValueErrorandpydantic.ValidationError, converting them to user-friendlyHomeAssistantErrormessages -
device_active_profile_indexattribute: Climate and week profile sensor entities now expose the 1-based profile index as reported by the device hardware. This value is automatically synced from the device'sACTIVE_PROFILE(IP) orWEEK_PROGRAM_POINTER(RF) parameter. -
current_schedule_profileattribute: Climate and week profile sensor entities expose the currently selected schedule profile (P1–P6). Automatically synchronized with the device's active profile parameter. -
Climate entity subscribes to week profile changes: The climate entity now subscribes to
device.week_profile_data_pointupdates, ensuring schedule attributes (schedule_data,current_schedule_profile,available_profiles) update in real-time when the schedule changes on the device. -
Database recording optimization: Added
_unrecorded_attributesto light, cover, switch, valve, siren, and week profile sensor entities. Static metadata attributes (e.g. available colors, channel positions, available soundfiles, schedule metadata) are now excluded from the HA recorder database, reducing storage usage.
Changed
- Config entry migration v16: Existing config entries are migrated to include
command_throttle_intervalwith the default value
Migration example:
Bump aiohomematic to 2026.2.6
New Features (aiohomematic)
-
WeekProfileDataPoint (2026.2.6): Device-level data points that serve as the central interface for schedule data — both for climate and non-climate devices. One data point per device exposes schedule metadata, target channel mappings, and delegates read/write operations to the underlying WeekProfile. Schedule access has been removed from custom data points (
BaseCustomDpClimate,CustomDataPoint) and is now exclusively available viadevice.week_profile_data_point. -
Automatic profile sync from device (2026.2.6):
ClimateWeekProfileDataPointnow binds the device'sACTIVE_PROFILE(IP) orWEEK_PROGRAM_POINTER(RF) generic data point.current_schedule_profileupdates automatically when the thermostat switches profiles. -
Climate CDP notification on schedule change (2026.2.6): When schedule data changes (e.g., after
CONFIG_PENDING=Falsereload), the linked Climate CDP is automatically notified via an internal subscription, causing the HA Climate Entity to update. -
device_active_profile_indexproperty (2026.2.6): Returns the 1-based profile index from the device parameter (int | None). RF values are normalised from 0-based to 1-based. -
Optimistic updates (2026.2.4): Data points immediately update their state when
send_value()is called, then rollback if the CCU rejects the value or times out. FiresOptimisticRollbackEventon rollback. Configurable viaTimeoutConfig.optimistic_update_timeout(default: 30s). -
Command throttle (2026.2.4): Configurable per-interface rate limiting for outgoing device commands. Enforces a minimum delay between consecutive commands on the same RF interface to ensure smooth operation and prevent packet loss. Configurable via
TimeoutConfig.command_throttle_interval. -
Command priority queue (2026.2.4): Three-tier priority system for command throttling:
- CRITICAL (priority 0): Security commands (locks, sirens) bypass throttle entirely
- HIGH (priority 1): Interactive user commands use normal throttle
- LOW (priority 2): Burst detection automatically downgrades commands when thresholds are exceeded
-
CRITICAL queue purge (2026.2.4): When a CRITICAL command arrives (e.g. cover STOP), all pending queued commands for the same channel group are purged from the throttle queue, preventing queued movement commands from overriding STOP.
-
Domain-specific schedule validation (2026.2.3): Added validation for schedule data based on device category (SWITCH, LIGHT, COVER, VALVE). The validation enforces that only appropriate fields are used for each device type. Backward-compatible: validation is only applied when domain context is provided.
-
Schedule Pydantic Models (2026.2.1): New validated Pydantic models for automatic validation with clear error messages:
Climate devices:
ClimateSchedulePeriod: Validates temperature periods with starttime, endtime, temperatureClimateWeekdaySchedule: Validates daily schedules with base_temperature and periodsClimateProfileSchedule: Validates weekly schedules (MONDAY-SUNDAY)ClimateSchedule: Validates complete profiles (P1-P6)
Non-climate devices:
SimpleScheduleEntry: Validated schedule entry with weekdays, time, condition, target_channels, level, duration, ramp_timeSimpleSchedule: Container for multiple schedule entries keyed by group number (1-24)
Bug Fixes (aiohomematic)
- CallbackDataPoint ownership reset on unsubscribe (2026.2.6): When the owning
custom_idfully unsubscribes from a data point,_custom_idis now reset toNone. This allows re-registration with a differentcustom_id(e.g. after an entity_id rename in Home Assistant), preventingAioHomematicExceptionon resubscription. - i18n format specs (2026.2.5): Fixed
i18n.tr()silently dropping format specifiers like{interval:.3f}. Placeholders with format specs now render correctly in log messages. - JSON control character sanitization (2026.2.2): Fixed
JSONDecodeErrorwhen ReGa scripts return JSON containing unescaped control characters in device names or values. The sanitization is now selective - it only escapes control characters within JSON string values, preserving structural whitespace. - LINK Paramset Validation (2026.2.1): Fixed
put_paramsetwithcheck_against_pd=Truefor LINK paramsets. Validation is now automatically skipped for LINK calls to prevent "Parameter not found" errors. - Schedule Pydantic Models JSON Serialization (2026.2.1): Added
_JsonSerializableMixinto all schedule Pydantic models to support orjson/Home Assistant JSON serialization.
Breaking Changes (aiohomematic)
-
Schedule access moved to WeekProfileDataPoint (2026.2.6): All schedule methods and properties removed from
BaseCustomDpClimateandCustomDataPoint. Schedule operations are now exclusively available viadevice.week_profile_data_point. -
Climate profile property renames (2026.2.6): On
ClimateWeekProfileDataPointProtocol,active_profile→current_schedule_profile,active_schedule→current_profile_schedule,set_active_profile()→set_current_schedule_profile(). This avoids a naming conflict with the device parameterACTIVE_PROFILE.copy_scheduleandcopy_schedule_profileparameter renamed fromtarget_climate_data_pointtotarget_data_point. -
HA-Addon renamed to HA-App (2026.2.6):
SystemInformation.is_ha_addonrenamed tois_ha_app. -
Climate Schedule API Unified to Pydantic Models (2026.2.1): The old dual-format API (TypedDict + Pydantic) has been removed. All schedule methods now use Pydantic models exclusively.
Changed (aiohomematic)
- DelegatedProperty expansion (2026.2.6): Replaced 56 boilerplate
@propertymethods withDelegatedPropertydescriptors across 23 files. Reduces repetitive delegation code while preserving runtime behavior. - ClimateWeekProfile: Simple schedule format now uses Pydantic models for automatic validation. The existing user-facing format remains unchanged, but input validation is now more robust with clear error messages.
- DefaultWeekProfile: Refactored schedule cache to use human-readable Pydantic models (
SimpleSchedule,SimpleScheduleEntry) instead of complex dictionary format.