github SukramJ/homematicip_local 2.3.0b2

pre-release6 hours ago

What's Changed

Breaking Changes (Schedule Services)

  • All schedule services have been migrated from entity-based to device-based. Services now use device_id or device_address instead of targeting entities. Existing automations using old service names must be updated.

  • Renamed services:

    • get_schedule_simple_profileget_schedule_profile
    • get_schedule_simple_scheduleget_schedule
    • get_schedule_simple_weekdayget_schedule_weekday
    • set_simple_scheduleset_schedule
    • set_simple_schedule_profileset_schedule_profile
    • set_simple_schedule_weekdayset_schedule_weekday
    • set_schedule_active_profileset_current_schedule_profile
  • Renamed entity attributes (Climate & Week Profile Sensor):

    • active_profilecurrent_schedule_profile

Added

  • Week profile sensor entity: New AioHomematicWeekProfileSensor entity 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_id or device_address for 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_interval to 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 to 0.0 to disable.

  • Optimistic rollback events: Added homematicip_local.optimistic_rollback event 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_errors decorator to catch ValueError and pydantic.ValidationError, converting them to user-friendly HomeAssistantError messages

  • device_active_profile_index attribute: 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's ACTIVE_PROFILE (IP) or WEEK_PROGRAM_POINTER (RF) parameter.

  • current_schedule_profile attribute: 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_point updates, 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_attributes to 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_interval with 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 via device.week_profile_data_point.

  • Automatic profile sync from device (2026.2.6): ClimateWeekProfileDataPoint now binds the device's ACTIVE_PROFILE (IP) or WEEK_PROGRAM_POINTER (RF) generic data point. current_schedule_profile updates automatically when the thermostat switches profiles.

  • Climate CDP notification on schedule change (2026.2.6): When schedule data changes (e.g., after CONFIG_PENDING=False reload), the linked Climate CDP is automatically notified via an internal subscription, causing the HA Climate Entity to update.

  • device_active_profile_index property (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. Fires OptimisticRollbackEvent on rollback. Configurable via TimeoutConfig.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, temperature
    • ClimateWeekdaySchedule: Validates daily schedules with base_temperature and periods
    • ClimateProfileSchedule: 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_time
    • SimpleSchedule: 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_id fully unsubscribes from a data point, _custom_id is now reset to None. This allows re-registration with a different custom_id (e.g. after an entity_id rename in Home Assistant), preventing AioHomematicException on 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 JSONDecodeError when 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_paramset with check_against_pd=True for 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 _JsonSerializableMixin to 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 BaseCustomDpClimate and CustomDataPoint. Schedule operations are now exclusively available via device.week_profile_data_point.

  • Climate profile property renames (2026.2.6): On ClimateWeekProfileDataPointProtocol, active_profilecurrent_schedule_profile, active_schedulecurrent_profile_schedule, set_active_profile()set_current_schedule_profile(). This avoids a naming conflict with the device parameter ACTIVE_PROFILE. copy_schedule and copy_schedule_profile parameter renamed from target_climate_data_point to target_data_point.

  • HA-Addon renamed to HA-App (2026.2.6): SystemInformation.is_ha_addon renamed to is_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 @property methods with DelegatedProperty descriptors 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.

Don't miss a new homematicip_local release

NewReleases is sending notifications on new releases.