Version 2.7.2 (2026-05-29)

May 29, 2026 · View on GitHub

What's Changed

Integration

  • Dependency-bump release; no behavioral changes in the integration itself
  • Rebuilt bundled frontend (homematic-config.js) against the latest homematicip-local-frontend commit for HA 2026.6 compatibility

Dependencies

Bump aiohomematic to 2026.5.11

  • Fix Switch/cover/valve schedule round-trip when the CCU paramset advertises fields the device category doesn't support (#3198): ramp_time / level_2 / duration are now cleared for SWITCH, LIGHT, COVER, VALVE, LOCK so reads no longer emit entries that the subsequent set_schedule() rejects
  • Fix blocking file I/O in the event loop on first easymode access: the gzip archive (openccu_data/data/easymode_extract.json.gz) was loaded lazily via read_bytes() on the first get_*() call, triggering HA's blocking-call warning during ws_get_form_schema — archive is now loaded eagerly at import time, all later lookups are pure dict reads

Bump aiohomematic-config to 2026.5.0

  • Tracks the aiohomematic 2026.5.10 / openccu-data 2026.5.0 minimums; no API or behavior changes for the integration

homematicip-local-frontend (last commit "HA 2026.6 Compatibility — ha-radio Removal")

  • Replaces the removed ha-radio element (gone in HA 2026.6) in form-parameter and add-link to keep the config panel working on 2026.6

Version 2.7.1 (2026-05-06)

What's Changed

Integration

  • Fix homematic.device_availability/device_error events silently dropped when event.device_name was empty (fallback to HA device-registry name)
  • Auto-remove orphaned entity-registry entries (incl. disabled) on startup (#3176) — replaces the "enable → reload → delete" workaround
  • Fix orphan cleanup deleting hub-backed entities (system_update, inbox, service/alarm_messages, install_mode, metrics, connectivity, program buttons) on every restart: sweep now aggregates all hub singleton/mapping DPs from hub_coordinator; delay reduced 120 s → 60 s

Dependencies

Bump aiohomematic to 2026.5.9

  • Fix climate activity reporting HEAT in cooling mode (HmIP-WTH-1 + HmIP-FALMOT-C12)
  • Fix RF dimmer flicker during ramps — LEVEL_REAL is now the authoritative status source
  • Fix HM LOWBAT not propagated to MaintenanceData.low_bat
  • Fix HmIP-RGBW/HmIP-DRG-DALI turn_off with transition rejected by CCU (regression from 2026.4.7)
  • Three follow-up fixes for residual dimmer flicker during/after ramps (#3177): in-flight command tracking, recency-based _effective_level fallback
  • Fix HmIP dimmer brightness showing state-channel summary instead of commanded value (#3181): #3166 mirror logic restricted to RF dimmers (LEVEL_REAL); HmIP falls back to action channel
  • Expose inbox_dp and update_dp as DelegatedProperty on HubCoordinator
  • Fix automatic reconnect after startup failure when the CCU is not yet reachable (#3183): EventBus.publish()/publish_batch() now merge key-specific and wildcard subscribers instead of short-circuiting — the ConnectionRecoveryCoordinator's heartbeat retry loop now actually runs when HA starts before the CCU is ready
  • Fix central stuck in FAILED after a startup-failure recovery succeeds (#3183 follow-up): heartbeat recovery path now hops through RECOVERING and keeps _active_recoveries populated so the final _transition_to_running()/_transition_to_degraded() actually fires — previously entities stayed unavailable until reload even though every interface reconnected

aiohomematic-config remains at 2026.4.7

  • No API or behavior changes for the integration since 2.7.0

homematicip-local-frontend (last commit unchanged since 2.7.0)

  • Latest commit "Schedule Card — Valve as Binary, Duration Limits (#57)", already shipped with 2.7.0

Version 2.7.0 (2026-04-22)

What's Changed

Integration

  • Per-channel schedule enable/disable support for non-climate week profiles (WebSocket endpoint + sensor attribute)
  • Schedule switch entities are now disabled by default in the entity registry
  • Schedule entities (week profile sensor, schedule switch) now consistently use "Zeitplan"/"Schedule" in their name, both with and without sub-devices enabled
  • Fixed schedule sub-device naming: schedule devices now correctly include "Schedule"/"Zeitplan" in their name when sub-devices are enabled
  • Added configurable command_retry_max_attempts setting in advanced config (default: 3, range: 0-10) for the new command retry mechanism
  • Added retry parameter to set_device_value, put_paramset, and put_link_paramset services (default: true) to leverage the new command retry mechanism in aiohomematic
  • Added missing config flow translations (EN/DE) for command_retry_max_attempts
  • Fixed KeyError when command_retry_max_attempts is absent from existing config entries
  • Enabled parallel test execution via pytest-xdist (-n auto --dist loadscope)
  • Internal code quality: aligned linter configuration with aiohomematic / HA core
    • Ruff: bumped target to Python 3.14, modernized [tool.ruff.lint] section syntax, enabled rule families A, ASYNC, BLE, FURB, PTH, full S (bandit), SLF, TC, TID and additional B/RUF checks; lowered mccabe complexity from 25 to 15; added banned-api entries for async_timeout and pytz; explicit pep257 docstring convention
    • Mypy: enabled possibly-undefined and unused-awaitable error codes
    • Pylint: added pylint_per_file_ignores plugin, enabled useless-suppression, removed deprecated extension-pkg-whitelist
    • Pytest: added log_format, asyncio_debug, custom markers and filterwarnings
    • Coverage: enabled branch coverage and extended exclude_lines for protocol stubs and abstract methods
    • Pre-commit: bumped python-typing-update to --py314-plus and included integration sources; bandit no longer scans test fixtures
  • Refactored async_migrate_entry into a dispatch table of pure data-only migrations (per-version helpers)
  • Split _on_system_status into per-detail handlers (central / connection / client / callback / issues)
  • Moved blocking Path.mkdir/Path.write_bytes off the event loop in CCU backup paths (button, services, update, websocket_api)

Blueprints

  • Modernized all blueprints: replaced deprecated service: with action:, simplified condition templates to shorthand syntax
  • Added homeassistant.min_version: "2026.3.0" to all blueprints
  • Added multi-device support to all button blueprints (2, 4, 6, 8-button)
  • Added CCU direct-link detection to all button blueprints: optional warning notification and action skip when CCU direct connections exist for the pressed button (based on community contribution by @hosswald)
  • Added configurable delay to all reactivate-device blueprints (default: 10 seconds)
  • Updated all blueprint versions to v2026-04-14
  • Added comprehensive blueprint test suite (171 tests): schema validation, input validation, template substitution, full-flow end-to-end tests including direct-link detection and all button-subtype mappings

Dependencies

Bump aiohomematic to 2026.5.0

  • Added device profile for HmIP-UDI-SMI55
  • Added ScheduleChannelSwitch data point for per-channel schedule enable/disable
  • Per-channel schedule enable/disable via COMBINED_PARAMETER (atomic bitmask + mode write)
  • Load WEEK_PROGRAM_CHANNEL_LOCKS value at startup (fixes delayed schedule_enabled attribute)
  • Command retry mechanism for transient failures (automatic retry with backoff for temporarily unreachable devices)
  • Lock schedule support for HmIP-DLD and HmIP-DLP (door lock mode, user permission mode, domain validation)
  • Extract MASTER paramset metadata from CCU WebUI dialog functions
  • Support non-climate link roles (HmIP-RCV-50 virtual remote and other non-climate devices now linkable via "Add Direct Link" wizard)
  • Added WeekProfile.supported_schedule_fields exposing the ScheduleFields the device advertises; forwarded as entity attribute so frontends can hide non-functional schedule inputs (e.g. HmIP-DLD)
  • Validate schedule writes against paramset description (check_against_pd=True) — unsupported WP_* parameters now raise a clear ClientException instead of being silently rejected
  • Schedule duration encoding now uses natural Homematic time bases and promotes to a coarser base only when the factor would overflow the CCU's factor=30 cap, so requests like "40min" no longer get silently clamped to 31 minutes on the device
  • SimpleScheduleEntry rejects unrepresentable durations (e.g. "31h", "301s", sub-100ms) at validation time with a clear ValueError instead of letting the CCU clamp them; use duration=None for "permanent"
  • Fixed schedule target channels for multi-config lock devices
  • Fixed missing DURATION_UNIT/DURATION_VALUE in putParamset for turn_on and turn_off (HmIP-BSL, HmIP-RGBW, HmIPW-WRC6, HmIP-DRG-DALI)
  • Fixed RAMP_TIME_TO_OFF usage for RGBW and DRG-DALI lights
  • Fixed siren duration always sent on turn_on
  • Fixed HmIP-RCV-50 (and similar devices) missing from the panel device list due to empty CHILDREN entries
  • Fixed HmIP-DLD silently rejecting schedule updates by filtering unsupported schedule fields before put_paramset
  • Improved logging for unsupported JSON-RPC methods (warning instead of error) and for devices with failing configurable-channel lookup
  • Internal code quality: stricter linter configuration (ruff S/BLE/PTH, lowered mccabe complexity, additional bandit checks, mypy possibly-undefined/unused-awaitable), migration of filesystem operations to pathlib, narrowed broad exception handlers, and refactored complex functions for readability
  • Adopt the new openccu-data package as the source-of-truth for CCU translation and easymode metadata; dropped the vendored aiohomematic/ccu_data/ tree (public API unchanged)

Bump aiohomematic-config to 2026.4.7

  • Per-channel schedule_enabled field on DeviceScheduleData
  • Added supported_schedule_fields on DeviceScheduleData exposing which ScheduleFields the device advertises
  • Use get_ui_label_translation() from aiohomematic
  • Fall back to the locale-aware "Other Settings" label for metadata parameter groups without label_key or populated label mapping (prevents raw group ids like group_5 from leaking to the UI)
  • Tightened code quality tooling (ruff/mypy/pylint/bandit/pytest) in line with aiohomematic and HA core
  • Adopt the new openccu-data package as the source-of-truth for easymode link-profile data; dropped the vendored aiohomematic_config/profiles/ directory (public API unchanged)

Bump homematicip-local-frontend

  • Per-channel schedule enable/disable as clickable channel chips
  • Added schedule support for lock devices
  • Improved the schedule card layout to reduce vertical space usage
  • Removed misleading "Update verfügbar" badge from CCU dashboard System Information card
  • Device schedule editor now hides unsupported schedule fields (e.g. for HmIP-DLD) based on supported_schedule_fields
  • Fixed lock schedule editor labels and translations
  • Fixed cards showing "Konfigurationsfehler" in Firefox
  • Config panel now available for all backends (CCU and Homegear); OpenCCU tab only shown for CCU backends
  • Fixed cards showing infinite loading spinner in HA Card Picker and on dashboards
  • Fixed device icons invisible or poorly visible in dark mode
  • Schedule card: switched the valve domain from a 0–100% slider to a binary on/off control to match CCU semantics for water valves (HmIP-WSM / ELV-SH-WSM); selecting <100% no longer accidentally closes the valve
  • Schedule editor enforces the CCU's DURATION_FACTOR/RAMP_TIME_FACTOR cap of 30 per unit (≤30 for s/min/h, ≤3000 in 100 ms steps for ms); invalid values are rejected upfront instead of being silently clamped on the device, and switching units clamps to the new unit's max
  • Added a "Permanent"/"Dauerhaft" toggle in the device schedule editor that sets duration=null (no auto-revert); the schedule list now displays "Permanent"/"Dauerhaft" instead of - for these entries

Version 2.6.0 (2026-04-09)

What's Changed

New Frontend Cards

All frontend cards are now delivered directly through the integration — no separate HACS installation required. Cards are automatically available once the integration is loaded. Existing standalone HACS installations are detected and skipped with a console warning.

  • Climate Schedule Card (homematicip-local-climate-schedule-card): Visual weekly thermostat schedule editor with profile switching, copy/paste, and import/export. Edit heating schedules conveniently right from your Home Assistant dashboard.
  • Schedule Card (homematicip-local-schedule-card): Schedule editor for switches, lights, covers, and valves with fixed-time and astronomical conditions (sunrise/sunset). Supports multiple switching points per day with different values.
  • Status Cards (homematicip-local-status-card) — three new cards in one bundle:
    • homematicip-system-health-card: System health score, device statistics, Duty Cycle/Carrier Sense levels per radio module, optional incidents list
    • homematicip-device-status-card: Device status overview with filtering (all/problems/unreachable/low battery/config pending)
    • homematicip-messages-card: Service and alarm messages with acknowledge buttons

Integration

  • HmIP-DLP support: Added entity descriptions for door lock panel — door sensor (binary sensor), sabotage sensors, lock state reason (sensor), auto-relock and permission state (switches)
  • Non-admin schedule editing: Non-admin users can edit device schedules via the schedule cards when enabled in Options Flow. Backend enforces permissions via @require_scope decorator (WebSocket) and check_service_permission() (service calls). New get_user_permissions WebSocket endpoint for frontend permission queries.

Dependencies

Bump aiohomematic to 2026.4.4

  • Additional data points for HmIP-DLP (door state, permission, lock state reason, auto-relock, sabotage)
  • Channel name exposed in configurable device channels, device links, and linkable channels
  • Multi-channel detection cache for additional data points
  • Synthesize missing parameter name translations from value entries
  • Clamp schedule level_2 to [0.0, 1.0]
  • Always populate unconfirmed value on set (fixes unknown state after setting same value)
  • Fixed multi-channel postfix for data point names
  • Fixed spurious optimistic rollbacks for CUxD/CCU-Jack devices

Bump aiohomematic-config to 2026.4.1

  • operations field on FormParameter exposing the raw OPERATIONS bitfield from the paramset description
  • Receiver type alias resolution for shared easymode profiles (e.g. OPTICAL_SIGNAL_RECEIVERDIMMER_VIRTUAL_RECEIVER)
  • Easymode metadata enrichment: conditional visibility, presets, subset groups
  • Cross-validation constraints model and semantic parameter grouping
  • Master profile store for MASTER paramset easymode profiles
  • HmIP channel type resolution for correct CCU translations

Bump homematicip-local-frontend

  • Integration-bundled cards: climate schedule card, schedule card, and three new status cards
  • Non-admin permissions (Phase 2): backend-enforced permission scopes, read-only mode
  • UX Review — Full CCU Parity & Mobile Optimization (57 items resolved)
  • Redesigned device schedule list: three-line card layout
  • OpenCCU dashboard: Inbox, Service Messages, Alarm Messages
  • Easymode support for paramset editor
  • Integration dashboard: system health, device statistics, throttle stats, incidents
  • HA 2026.3.0+/2026.4.0+ compatibility
  • Improved mobile layout across all packages

Version 2.5.2 (2026-03-30)

What's Changed

Breaking Changes

  • Removed SysVar entities for alarm/service messages: The system variables ${sysVarAlarmMessages} (ID 40) and ${sysVarServiceMessages} (ID 41) are no longer auto-enabled and renamed. These are superseded by the dedicated hub sensors HmAlarmMessagesSensor and HmServiceMessagesSensor. Users who have automations referencing the old SysVar-based entity IDs (sensor.*_sysvar_alarm_messages / sensor.*_sysvar_service_messages) must update them to use the new hub sensor entities (sensor.*_hub_alarm_messages / sensor.*_hub_service_messages).

Integration

  • Hub data WebSocket API: ws_get_hub_data now reads alarm/service message counts directly from the dedicated hub data points instead of iterating over system variable data points
  • SubscriptionGroup: Event bus subscriptions managed via SubscriptionGroup instead of manual callback tracking
  • Device name from events: Event handlers (_on_device_trigger, _on_optimistic_rollback, _fire_device_availability_event) now use event.device_name from aiohomematic, falling back to HA device registry only for user-overridden names
  • DataPointType-based platform routing: get_new_data_points() uses DataPointType enum instead of concrete class types, decoupling platform setup from aiohomematic model internals
  • Unified subscription architecture: Entity-level subscriptions migrated from subscribe_to_data_point_updated()/subscribe_to_device_removed() to EventBus SubscriptionGroup.subscribe() with DataPointStateChangedEvent/DeviceRemovedEvent. Data point registration via register()/unregister() replaces custom_id ownership
  • State transition handlers: Central state transitions (RUNNING/RECOVERING) handled via CentralStateChangedEvent subscription; DEGRADED/FAILED remain on SystemStatusChangedEvent for access to failure details
  • Exclude message attributes from recorder: AioHomematicSysvarSensor excludes alarm_1..alarm_99 and message_1..message_199 attributes from recorder to prevent database bloat

Config Panel

  • Easymode support for paramset editor — conditional visibility, preset dropdowns, and subset groups for context-dependent device configuration forms
  • Cross-validation translations (en/de) for min/max, level range, and threshold constraints
  • Active climate profile indicator — profile dropdown now shows which profile is active on the device (e.g. "Profil 1 (Aktives Profil)")
  • Device detail improvements: RSSI Peer always shown, Duty Cycle and Reachability displayed as Yes/No
  • Device icons displayed in device list, device detail, and channel config views (via CCU proxy endpoint)
  • Parameter help text with Markdown formatting below each parameter
  • MASTER paramset time presets — unit/value parameter pairs displayed as a single preset dropdown (13 standard Homematic presets, 100ms–15 minutes)
  • Dropdown and radio options now use translated labels from the backend
  • HmIP-specific parameter translations — config panel now resolves HmIP channel types for correct CCU translations (e.g. SHUTTER_CONTACTSHUTTER_CONTACT_HMIP)
  • OpenCCU dashboard: sub-tab navigation (General, Messages, Signal Quality, Firmware); all table columns sortable; filter bars for Signal Quality and Firmware tables (shown when >10 devices)
  • OpenCCU dashboard: Messages tab with Inbox (accept devices with rename and auto-confirm), Service Messages (acknowledge), and Alarm Messages (acknowledge) — badge shows total count
  • Climate and device schedule editors now use shared @hmip/schedule-ui components
  • Semantic parameter grouping from easymode metadata with locale-aware labels
  • Cross-parameter validation exposed via CrossValidationConstraint model
  • Fixed ha-slider and ha-select event handling in paramset and schedule editors (slider changes not registering, event leaking, dropdown closing dialogs)
  • Fixed device schedule entries without target channels not being shown; target channels are now optional
  • Fixed UTF-8 link names showing as mojibake (e.g. "Küchenblock" instead of "Küchenblock")
  • Fixed editor dialog closing on save when validation errors exist
  • Fixed copy/paste schedule icons overflowing at narrow widths

Dependencies

Bump aiohomematic to 2026.4.0

  • Fixed forced-to-sensor data points not publishing events: Data points with force_to_sensor() (LEVEL on HmIP-eTRV and HmIP-HEATING) published events with the internal _unique_id instead of the unique_id property, causing key mismatches and orphaned subscriptions (memory leak)
  • Fixed false channel identification for hub data points: Renamed rega_id to ise_id to correctly identify hub data point channels
  • Fixed acknowledge for alarm messages: ReGa script for acknowledging alarm messages corrected
  • Message enrichment: ServiceMessageData and AlarmMessageData include pre-resolved fields (message_code, display_name, msg_type_name) with i18n support (en/de)
  • Individual message attributes: Message sensors expose each message as individual extra state attribute (alarm_1, message_1, ...) with human-readable display names
  • ServiceMessageType enum extended: Added ALARM, UPDATE_PENDING, and COMMUNICATION types
  • DST-safe health checks: Replaced datetime.now() with time.monotonic() for callback alive and connection checks, preventing false timeouts during DST transitions
  • Alarm messages fix: Fixed ReGa script not returning active alarm messages for system alarms with sentinel trigger data points
  • Service messages hub sensor: New sensor exposing active CCU service messages — count as state, full message details as attribute
  • Alarm messages hub sensor: New sensor exposing active CCU alarm messages (Alarmmeldungen) — count as state, full message details as attribute
  • Acknowledge messages: Support for acknowledging service and alarm messages via ReGa scripts
  • CCU data gzip consolidation: CCU-sourced data (easymode metadata, translations) consolidated into gzip archives — 95% package size reduction (~11 MB → ~516 KB)
  • CCU easymode metadata extraction: Channel-level easymode metadata for MASTER paramset profile enrichment
  • Hidden/device-level channels in configuration: Device-level, internal, and invisible channels with MASTER paramset are now included in configurable channels
  • Read-only MASTER parameters: Read-only configuration values are now displayed in device configuration
  • TLS certifi CA bundle: TLS context now loads the certifi CA bundle when available, ensuring trusted certificates work out-of-the-box in Home Assistant
  • Skip optimistic updates for action data points: Action data points (ACTION, ACTION_NUMBER, ACTION_SELECT, BUTTON) never receive CCU confirmations — the optimistic timer now skips them, preventing spurious rollback warnings
  • Skip duplicate optimistic sends: Identical value sends are deduplicated to avoid unnecessary device writes
  • Additional parameter translations: Extracted more parameter translations for improved config panel localization
  • Connection recovery: Heartbeat timer now starts correctly after CCU reboots
  • HmIP channel type resolution: resolve_channel_type for HmIP-specific translation lookups
  • New device: HmIP-DLP (IP Door Lock Pro)
  • SysvarDpSwitch turn_on/turn_off: Direct turn_on()/turn_off() methods for system variable switches
  • DataPointType enum: Canonical data point type for downstream platform routing without isinstance checks
  • SubscriptionGroup: Collective subscription lifecycle management via event_bus.create_subscription_group()
  • Device name in events: Human-readable device names on DeviceTriggerEvent, DeviceLifecycleEvent, OptimisticRollbackEvent, and DataPointStateChangedEvent
  • State transition callbacks: central.on_state_transition() for targeted CentralState transition handling
  • Extended query facade: get_data_points() with data_point_type filter; get_devices() with interface/availability filters; get_schedule_capable_devices()
  • System variable creation: create_system_variable_bool(), _float(), _enum() for creating system variables on the CCU
  • Link info read/write: get_link_info() / set_link_info() for link metadata management
  • Service message suppression: suppress_service_message() / get_suppressed_service_messages()
  • Quittable flag based on trigger datapoint: Service message quittable check now uses OPERATION_WRITE on the trigger datapoint, matching CCU WebUI behavior
  • Acknowledge only writable messages: acknowledge_message refuses non-quittable messages instead of silently acknowledging them
  • Removed auto-enable of alarm/service SysVars: ${sysVarAlarmMessages} and ${sysVarServiceMessages} no longer force-enabled — superseded by dedicated hub sensors
  • Exposed message DPs on HubCoordinator: alarm_messages_dp and service_messages_dp accessible via HubCoordinator for direct downstream access
  • Event tier enforcement: Internal events separated from public API; __all__ exports only public events
  • Unified subscription architecture: DataPoint subscriptions routed through EventBus; subscribe_to_data_point_updated()/subscribe_to_device_removed() and custom_id removed; register()/unregister() for consumer lifecycle; SubscriptionGroup.add() replaced by SubscriptionGroup.subscribe(); typed get_data_points_by_type() query method

Bump aiohomematic-config to 2026.3.5

  • Easymode metadata enrichment: conditional visibility, option presets, subset groups, and metadata-based parameter ordering
  • Cross-parameter validation in config sessions
  • MasterProfileStore for MASTER paramset easymode profiles
  • HmIP channel type resolution via is_hmip parameter
  • device_active_profile_index field for active profile index from device
  • device_icon field with icon filename from CCU device database
  • Parameter description field with Markdown-formatted help text
  • TCL profile parsing improvements (variable resolution, subst handling, source includes)
  • New receiver profiles (door lock, universal light, RGBW DALI)
  • CrossValidationConstraint model and cross_validation field on FormSchema
  • Semantic parameter grouping from easymode parameter_groups metadata with locale-aware labels

Bump homematicip-local-frontend

  • HA 2026.3.0+ / 2026.4.0+ compatibility
  • Removed frontend message enrichment — display names and message codes now provided by aiohomematic
  • OpenCCU Messages tab: Inbox (accept devices), Service Messages (acknowledge), Alarm Messages (acknowledge) with badge counts
  • Acknowledge only quittable messages in service and alarm message cards

Version 2.4.1 (2026-03-11)

What's Changed

Fixed

  • Install mode availability: The install mode status WebSocket response now includes an available field indicating whether each interface (HmIP-RF, BidCos-RF) actually supports install mode. Previously, unavailable interfaces were indistinguishable from inactive ones.

Config Panel

  • Added auto-polling to Integration dashboard — refreshes every 5s during initialization, every 30s once stable
  • Added auto-polling to OpenCCU dashboard — refreshes all data (system info, hub/service/alarm messages, signal quality, firmware, install mode) every 30s; loading spinner only shown on initial load

Dependencies

Bump aiohomematic to 2026.3.8

  • Fix connection recovery after startup failure: Heartbeat timer now starts correctly after CCU reboots, preventing central from getting stuck in FAILED state
  • PayloadProtocol: New protocol interface for config_payload, info_payload, and state_payload properties across devices, channels, data points, and central
  • Property alt_name support: Property decorators accept optional alt_name for alternative payload keys (e.g. addressserial_number, firmwaresw_version)
  • Capabilities reclassified: capabilities properties moved from info_property to config_property (immutable device features)

Bump aiohomematic-config to 2026.3.2

  • Add device_active_profile_index field to ClimateScheduleData for active profile index from device
  • Python 3.14 minimum, dropped Python 3.13 support

Version 2.4.0 (2026-03-05)

What's Changed

Added

  • DpActionNumber support: New AioHomematicActionNumber entity for write-only FLOAT/INTEGER data points (BaseDpActionNumber). Values are stored locally (not sent to device) and persisted in a dedicated storage file (homematicip_local.action_number.{entry_id}), analogous to the existing DpActionSelect pattern. Entities are filtered by DP_ACTION_NUMBER_WHITELIST (currently empty; DURATION_VALUE prepared but commented out).
  • CombinedDataPoint support: New AioHomematicCombinedNumber entity for CombinedDataPointProtocol data points (e.g. CombinedDpTimerAction). These combined data points merge multiple underlying parameters (e.g. timer value + unit) into a single writable number entity with automatic unit conversion. Exposed as EntityCategory.CONFIG number entities with min/max/unit from the combined data point. Sensor platform filters out CombinedDataPointProtocol instances to prevent duplicate read-only entities.
  • 15 new WebSocket commands for the Integration and OpenCCU panel tabs (homematicip_local/integration/* and homematicip_local/ccu/*)

Fixed

  • Fix sensor entities not created for non-DpSensor data points: The isinstance(data_point, DpSensor) filter added to exclude CombinedDataPointProtocol instances also excluded CalculatedDataPoint instances (e.g. OperatingVoltageLevel / Betriebsspannungspegel) and forced-sensor GenericDataPoint instances (e.g. LEVEL / Ventilöffnungsgrad on HmIP-eTRV). The filter now excludes only CombinedDataPointProtocol instead of requiring specific subclasses.
  • Fix CombinedDataPoint number entities not created on dynamic discovery: The async_add_combined_number dispatcher in the number platform listened on DataPointCategory.SENSOR but CombinedDpTimerAction (e.g. siren duration on HmIP-ASIR-2) has _category = DataPointCategory.ACTION_NUMBER. Changed the signal to ACTION_NUMBER so combined number entities are correctly created during dynamic device discovery.

Changed

  • Python 3.14 minimum: Dropped Python 3.13 support. CI, mypy, pylint, ruff, Dockerfile, and all documentation updated to target Python 3.14+.
  • Minimum Home Assistant version: Raised from 2025.10.0 to 2026.3.0.

Config Panel

  • Integration dashboard tab: New "Integration" tab in the config panel providing a consolidated view of the integration's operational state:

    • System health with central state and health score
    • Device statistics with per-interface breakdown (total, unreachable, firmware-updatable)
    • Command throttle monitor per interface (interval, queue size, throttled/burst counts)
    • Incident log with severity-colored entries and clear action
    • Cache management (clear all cached data)
  • OpenCCU dashboard tab: New "OpenCCU" tab for CCU-specific information and management:

    • System information (name, model, version, serial, hostname, CCU type, available interfaces)
    • Hub messages (service and alarm message counts)
    • Install mode control for HmIP-RF and BidCos-RF with activation buttons and remaining time display
    • Signal quality table with sortable columns (RSSI, signal strength, battery, reachability per device)
    • Firmware overview table with sortable columns and update-available highlighting
    • CCU backup creation with download to backup directory
  • Tab navigation: The config panel now features a tab bar (Devices / Integration / OpenCCU) for switching between views. Tab state is persisted in the URL hash.

  • Link config editor fix: Fixed false dirty state when opening the link config editor without making changes.

  • HA 2026.3 compatibility: Fixed ha-select compatibility with Home Assistant 2026.3.0+.

Dependencies

Bump aiohomematic to 2026.3.4

  • DpActionNumber data points: New DpActionFloat and DpActionInteger for write-only FLOAT/INTEGER parameters with MIN/MAX validation
  • DpActionBoolean and DpActionString data points: Complete the DpAction hierarchy for write-only BOOL/STRING parameters. DpAction now only handles TYPE=ACTION parameters
  • Type-correct custom data point fields: Replaced DpAction with specific types (DpActionFloat, DpActionInteger, DpActionBoolean, DpActionString) in custom data points based on pydevccu paramset TYPE
  • CombinedDataPoint for timer value+unit pairs: New CombinedDpTimerAction combines timer value + unit into a single writable entity with automatic unit conversion (seconds to S/M/H). Replaces TimerField/TimerAccessor pattern. Siren duration exposed as visible number entity with automatic unit conversion
  • CombinedDpHsColor for hue+saturation pairs: Encapsulates HUE + SATURATION into a single tuple[float, float] value with automatic saturation scaling. Simplifies RGBW and DALI light custom data points
  • Unified field visibility in profile configs: Merged 6 field dictionaries into 3 with per-entry visibility via hidden()/visible() helpers
  • Siren duration fix: turn_on() now properly converts duration with unit conversion and uses stored default when no explicit duration is provided
  • Duration translations: Added German and English translations for DURATION_VALUE
  • Fix scheduler busy-loop at 100% CPU during connection issues: Skipped jobs now advance their schedule to prevent busy-loop and burst on recovery
  • Security hardening: ReGa script injection prevention, device address validation, password field protection, authorization header sanitization, ReGa script path traversal prevention, firmware URL scheme validation, restrictive temp file/directory permissions, RPC background task limit (1000 max), cryptographic RNG for address anonymization
  • Fix health tracker central state sync: sync_central_state() synchronizes cached central state after _evaluate_central_state() completes
  • Performance: Pre-sorted EventBus handlers, parallel device finalization/client refresh/interface operations, weakref.finalize for subscription cleanup, slots=True for dataclasses, optimized multi-channel group check

Bump aiohomematic-config to 2026.3.2

  • Add device_active_profile_index field to ClimateScheduleData for active profile index from device
  • Add device_icon field to FormSchema with icon filename from CCU device database
  • Add description field to FormParameter with Markdown-formatted parameter help text
  • Python 3.14 minimum: Dropped Python 3.13 support

Version 2.3.2 (2026-03-01)

What's Changed

Changed

  • Backup agent stores only CCU backups: The backup agent no longer inherits from LocalBackupAgent and no longer writes the HA backup tar file. It now extends BackupAgent directly and only stores the CCU backup (.sbk) and metadata (.json) in the backup directory. The HA backup tar is managed by HA core. CCU backup failures (unavailable CCU, no data, connection error) now raise BackupAgentError instead of being silently logged, allowing HA to properly report per-agent backup failures. Orphaned metadata from previous versions is automatically cleaned up on load.

Config Panel

  • Device icons: Device list, device detail, and channel config views now display device images from the CCU via proxy endpoint. Graceful fallback when icon is unavailable.
  • Parameter help texts: Markdown-formatted help texts for ~165 MASTER paramset parameters (e.g. BUTTON_LOCK, TEMPERATURE_OFFSET, VALVE_OFFSET) are now displayed below each parameter in the configuration panel
  • Device schedule fix: Schedule entries without target channels are now correctly displayed (dimmed). Removed frontend target_channels validation (CCU allows TARGET_CHANNELS = 0). Auto-selects first device in schedule view when no matching device is found.
  • Bug fixes: Fixed ha-slider event handling (fires value-changed instead of native change), fixed ha-select event leaking corrupting pending changes state, fixed ha-select dropdown closing the device schedule editor dialog, fixed editor dialog closing on save when validation errors exist

Dependencies

Bump aiohomematic to 2026.3.0

  • Device icons: Extract device model to icon filename mapping from CCU's DEVDB.tcl (525 entries). New get_device_icon() in ccu_translations and icon property on Device expose the filename relative to img/devices/250/ for downstream consumers.
  • Profile-specific parameter translations: Extract ~550 additional parameter translations from CCU easymode profile localization files (e.g. COLOR_TEMP, MAX_COLOR_TEMP, SWITCH_DIRECTION), merged with lowest priority into the existing parameter translation output.
  • Parameter help texts: Extract and expose Markdown-formatted help texts for ~165 MASTER paramset parameters from the CCU WebUI. The HTML content is converted to Markdown, template variables are resolved, and the result is available via get_parameter_help() and as a description property on BaseParameterDataPoint.
  • Fix device link encoding: Fix garbled UTF-8 characters in device link names and descriptions retrieved via XML-RPC. The CCU stores user-defined strings as UTF-8 but the XML-RPC transport decodes them as ISO-8859-1, causing multi-byte characters to be misinterpreted (e.g. üü). New fix_xml_rpc_encoding utility reverses the double-encoding.
  • Fix spurious optimistic update rollbacks: apply_optimistic_value() was called before the is_state_change() check in the direct send path. When sending a value identical to the current state (e.g. turning off an already-off switch), the optimistic timer started but no RPC was sent to the CCU, making confirmation impossible. After 30 seconds the timer fired a spurious rollback with warning logs and OptimisticRollbackEvent. The state change check now runs first so optimistic tracking is only activated when an RPC call actually occurs.
  • Fix install mode: Use interface-specific client instead of primary client for install mode buttons. Previously, activating install mode for one interface (e.g. HmIP-RF) could incorrectly target another interface (e.g. BidCos-RF).
  • Fix non-climate schedules with empty target channels: Schedules without explicit target channels were incorrectly filtered as inactive because is_schedule_active() required both weekdays and target channels. The CCU handles default channel assignment when no explicit channels are configured, so the activity check now only requires at least one weekday.

Bump aiohomematic-config to 2026.3.1

  • Add device_active_profile_index field to ClimateScheduleData for active profile index from device
  • Add device_icon field to FormSchema with icon filename from CCU device database
  • Add description field to FormParameter with Markdown-formatted parameter help text
  • Use get_parameter_help() from aiohomematic to populate help texts (locale-aware, with LINK prefix stripping)
  • Fix URL-encoded umlauts in profile names and descriptions (%D6Ö) by adding urllib.parse.unquote() before html.unescape()
  • Fix profile matching to prefer most specific profile when multiple profiles match (highest fixed-constraint count wins)
  • Resolve TCL $variable references in easymode profile constraints (e.g. $NOP, $RAMP_ON)
  • Handle TCL [subst {...}] wrappers in easymode profile constraint parsing
  • Follow TCL source includes to resolve profiles defined in shared files (e.g. profiles.tcl, profilesTunableWhite.tcl)
  • Add profiles for new receiver types: AUTO_RELOCK_TRANSCEIVER, DOOR_LOCK_TRANSCEIVER, UNIVERSAL_LIGHT_RECEIVER_LSC, UNIVERSAL_LIGHT_RECEIVER_RGB(W), UNIVERSAL_LIGHT_RECEIVER_RGBW_DALI, UNIVERSAL_LIGHT_RECEIVER_TW

Version 2.3.1 (2026-02-26)

What's Changed

Fixed

  • Fix panel registration failure on integration reload: Separated static HTTP route registration from frontend panel registration. The static route (which cannot be removed by aiohttp) is now tracked independently and only registered once per HA process lifetime. Previously, reloading the integration or an automatic retry after a transient error would attempt to re-register the static route, causing a RuntimeError that cascaded into all platform setups failing with "has already been setup".

  • Fix entity translations for LEVEL sensors: LEVEL sensors on thermostats and other devices (e.g. valve opening, cover level, light level, tilt level) now show translated names and correct icons again. The translation_key from entity descriptions was incorrectly filtered by a whitelist, causing both the local translation and the icon mapping from icons.json to be lost. Added translations for pipe_level, cover_level, light_level, and cover_tilt in all locales.

Config Panel

  • Migrated all UI elements to Home Assistant built-in components
  • MASTER paramset: Unit/Value parameter pairs (e.g. *_UNIT + *_VALUE) are now displayed as a single preset dropdown instead of two separate rows, matching the CCU behavior
  • 13 standard Homematic time presets (100ms–15 minutes) with localized labels (EN/DE)
  • "Custom value" / "Wert eingeben" option reveals the original unit and value fields for manual entry
  • Automatic detection: if current values match a preset, the preset is shown; otherwise custom mode with detail fields

Dependencies

Bump aiohomematic to 2026.2.27

  • Fix channel-specific translation lookup: The channel_type parameter was not lowercased before lookup, causing channel-specific translations (e.g. maintenance|low_bat → "Batterie") to never match when the channel type came from device descriptions in uppercase. Both lookup functions now normalize channel_type to lowercase.
  • Option value translations from options.tcl: ~65 new entries per locale for MASTER paramset dropdown parameters (POWERUP_JUMPTARGET, LOGIC_COMBINATION, FLOOR_HEATING_MODE, HEATING_MODE_SELECTION, MIOB_DIN_CONFIG, DALI_EFFECTS, etc.). Parameters that previously showed raw VALUE_LIST values now display human-readable labels in the UI.

Version 2.3.0 (2026-02-23)

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
  • Removed services:

    • set_schedule_active_profile / set_current_schedule_profile — use set_current_schedule_profile via the configuration panel or update the profile through the set_schedule_profile service instead
  • 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.

  • Device configuration panel: New sidebar panel for editing device parameters, managing direct links, and configuring schedules — directly from the Home Assistant UI. Enable via Advanced Options. See documentation.

  • Panel translations: The configuration panel UI (sidebar title, section headers, parameter labels, enum values, toggle labels) is fully translated based on the Home Assistant language setting (German and English). Parameter filtering matches the CCU WebUI easymode behavior — only parameters with known translations are shown.

  • 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.

  • Paramset inconsistency repair issue: Displays a Home Assistant repair issue when aiohomematic detects missing parameters on HmIP/HmIPW devices after firmware updates. Informs the user about affected devices and recommends a factory reset via the CCU WebUI.

  • WRC6 Blueprint: Community blueprint for 6-button wall remote (HmIP-WRC6) now supports multiple devices and includes optional direct connection collision checks. Not backwards compatible — existing automations using this blueprint need to be reconfigured.

  • Translated interface display names: Interface names in config flow error messages and detection info now use translated, user-friendly names (e.g. "Homematic IP" instead of "HmIP-RF") with full German translation support. Warning messages for undetected interfaces are also translated.

  • Configuration panel: Session management: New server-side ConfigSession with undo/redo support. Changes are tracked in-memory before writing to the device, enabling safe editing with validation feedback.

  • Configuration panel: Export/Import: Export channel paramset configurations as JSON and import them to same-model devices. Enables configuration backup and transfer between identical devices.

  • Configuration panel: Copy paramset: Copy configuration between same-model device channels. Automatically filters to writable parameters present in the target.

  • Configuration panel: Change history: Persistent log of all paramset writes (manual, import, copy) with old/new value diffs. Stored via HA Store with a 500-entry FIFO limit. Retrievable and clearable per config entry.

  • Configuration panel: Enhanced device list: Device list now includes cached maintenance data (UNREACH, LOW_BAT, RSSI_DEVICE, RSSI_PEER, DUTYCYCLE, CONFIG_PENDING) from channel 0, enabling the frontend to display device health without additional roundtrips.

  • Configuration panel: Direct links (Direktverknüpfungen): Browse, create, configure, and remove direct device-to-device links (peerings) for BidCos-RF, BidCos-Wired, and HmIP-RF interfaces. Includes link overview grouped by channel, link paramset editing via form schema, and a 3-step wizard for creating new links with compatible channel filtering.

  • Configuration panel: Link profiles & UX: Profile-based link configuration with easymode profiles from CCU (Expert, Dimmer ein/aus, Treppenlicht, etc.). Combined time selector for TIME_BASE/TIME_FACTOR pairs, SHORT/LONG keypress tabs, percent slider for LEVEL parameters with "Last value" support, and hidden jump targets/condition transitions in profile mode. Fully translated panel UI (EN/DE).

  • Configuration panel: Deep-linking: Navigate directly to a device, channel config, or link view via URL hash parameters. Supports browser back/forward navigation.

  • CCU backup agent: New LocalBackupAgent that appears in the HA backup UI as a backup storage location. HA backups can be stored in the CCU backup directory and managed (list, download, delete) via the standard backup UI. One agent is registered per CCU config entry (multi-CCU capable). Existing CCU .sbk pre/post-backup hooks are unchanged.

  • Configuration panel: Schedule management: Schedule editing integrated into the configuration panel via WebSocket API. List devices with schedule support, read/write climate schedules per profile and weekday, set the active climate profile, and read/write generic device schedules — all from the panel UI.

  • Configuration panel: Reload device config: New WebSocket command to reload a device's configuration from the CCU without restarting the integration.

  • Device configuration URL deep-link: When the configuration panel is enabled, each device's DeviceInfo now includes a configuration_url that links directly to the device detail view in the configuration panel. Clicking the link on a device's page navigates to the panel with the correct entry, device address, and interface preselected.

  • config_entry_id attribute: Climate and week profile sensor entities with schedule support now expose a config_entry_id state attribute, enabling automations and frontend cards to identify the associated config entry.

Changed

  • Schedule WebSocket commands opened to non-admin users: Removed @require_admin restriction from get_climate_schedule, set_climate_active_profile, and get_device_schedule WebSocket commands, allowing non-admin users to read and interact with schedule data.

  • Admin-only restriction for writing Services: The services put_link_paramset, set_schedule, set_schedule_profile, copy_schedule, and copy_schedule_profile now require admin privileges (async_register_admin_service). Read-only schedule services remain accessible to all users.

  • Entity names from backend translations: Removed redundant local entity translations (binary_sensor, button, lock, number, select, sensor, switch, valve) from strings.json and translation files. Entity names are now provided by the backend CCU translation system via translated_name. Only climate (preset modes) and event (keypress types) translations remain local.

  • Config entry migration v16: Existing config entries are migrated to include command_throttle_interval with the default value

  • Configuration panel: Business logic extraction: Moved reusable logic from websocket_api.py to aiohomematic / aiohomematic-config:

    • Device listing now delegates to ConfigurationCoordinator.get_configurable_devices() (was ~70 LOC inline)
    • Paramset copy now delegates to ConfigurationCoordinator.copy_paramset() (was ~80 LOC inline)
    • Change history tracking now uses ConfigChangeLog from aiohomematic-config (was custom inline implementation)
    • Removed _LinkLabelResolver workaround in favor of FormSchemaGenerator(require_translation=False)

Bug Fixes

  • Sub-device entity name deduplication: Fixed entity_id duplication when sub-devices are enabled. When the HA device name (channel group name) was a prefix of the backend's translated_name, the device name appeared twice in the entity_id (e.g. binary_sensor.atbm_terrasse_atbm_terrasse_schaltausgang). The device name prefix is now stripped from the entity name, producing the correct entity_id (e.g. binary_sensor.atbm_terrasse_schaltausgang).

  • Multi-instance WebSocket registration: Fixed duplicate WebSocket command registration error when multiple integration instances (config entries) are set up. Commands are now registered only once.

  • Link profile matching on read failure: Fixed active profile detection when link paramset read fails. Now correctly falls back to Expert (profile 0) instead of vacuously matching the first profile.

  • Configuration panel: Fix delete direct connection: Fixed deletion of direct device-to-device links (Direktverknüpfungen) not working correctly in the configuration panel frontend.

  • Multi-instance panel registration: Fixed the configuration panel disappearing when multiple CCU instances are configured and not all have the panel enabled. The panel is now kept registered as long as at least one config entry has it enabled, instead of letting the last-loaded entry's setting override all others.

Bump aiohomematic to 2026.2.25

Documentation (aiohomematic)

  • Comprehensive documentation audit (2026.2.21): ~20 documentation files updated with corrected class names, API signatures, coordinator access patterns, event types, constant values, exception hierarchy, and sequence diagrams.

New Features (aiohomematic, continued)

  • Schedule domain property for week profiles (2026.2.22): schedule_domain property on WeekProfileDataPoint and WeekProfileDataPointProtocol that returns the DataPointCategory (switch, light, cover, valve) for non-climate schedule devices. Enables consumers like the Climate Schedule Card to distinguish schedule types and adapt their UI accordingly.

Architecture (aiohomematic)

  • Architecture cleanup (2026.2.8): Query methods extracted from CentralUnit to DeviceQueryFacade (central.query_facade). Support module split into submodules (support.address, support.file_ops, support.mixins). Protocol hierarchy reorganized with new interfaces.central and interfaces.model modules. Optimistic update logic extracted to model.optimistic.

New Features (aiohomematic)

  • CCU translation extraction (2026.2.10): New script (script/extract_ccu_translations.py) that extracts human-readable translations from the OpenCCU/RaspberryMatic WebUI for channel types, device models, parameter names, and parameter enum values. Supports local OCCU checkout and remote CCU fetch. Resolves two-level stringtable indirection, URL-decodes Latin-1 characters, and strips HTML from values. 2500+ translation entries across 8 JSON files (4 categories x 2 locales).

  • CCU translations loader module (2026.2.10): New module (aiohomematic/ccu_translations.py) providing typed lookup functions for CCU-sourced translations: get_channel_type_translation(), get_device_model_description(), get_parameter_translation(), get_parameter_value_translation(). All lookups are thread-safe and asyncio event loop safe (lazy initialization, then pure dict reads with zero I/O).

  • Translated data point names (2026.2.11): Data points now expose translated name_label and name_label_with_index properties via the CCU translation system. Provides human-readable parameter names (e.g. "Temperature Offset" instead of "TEMPERATURE_OFFSET") for UI rendering.

  • Value-only translation fallback (2026.2.13): get_parameter_value_translation now has a three-tier lookup: channel-specific → parameter-specific → value-only. The new value-only fallback builds an index of standalone enum values mapped to their shortest (most generic) translation, so shared values like weekday names resolve even for unknown parameters.

  • Configurable channel filtering (2026.2.13): get_configurable_channels now applies CCU-compatible filtering rules: channels must have the VISIBLE flag set and must not have the INTERNAL flag. WEEK_PROGRAM channels are excluded as they are handled by schedule cards.

  • On-demand LINK paramset description fetching (2026.2.19): get_paramset_description_on_demand on InterfaceClient and get_link_paramset_description on ConfigurationCoordinator for fetching LINK paramset descriptions directly from the backend when needed. LINK paramsets are not cached during device discovery, so this API enables direct link configuration without requiring a full device reload.

  • LinkCoordinator for device direct link management (2026.2.20): LinkCoordinator as a high-level facade for listing, creating, and removing direct links between device channels. Includes DeviceLink and LinkableChannel dataclasses for enriched link data with translated channel type labels, device metadata, and link direction. Provides linkable channel discovery with role-based filtering. Exposed via LinkFacadeProtocol on CentralUnit.link.

  • Dimmer last-level tracking (2026.2.20): last_level property and set_last_level method on CustomDpDimmer for tracking the last non-default brightness level, enabling restore-to-previous-brightness workflows.

  • Configurable device listing (2026.2.20): get_configurable_devices on ConfigurationCoordinator returning ConfigurableDevice dataclasses with resolved channel type labels, effective paramset keys (MASTER excluded when no writable visible parameters exist), and MaintenanceData from channel 0. Exposed via ConfigurationFacadeProtocol.

  • Paramset copy operation (2026.2.20): copy_paramset on ConfigurationCoordinator for copying writable paramset values from a source channel to a target channel. Filters non-writable and missing parameters, returns CopyParamsetResult with copy/skip counts and old target values for change tracking.

  • parameter_tools module (2026.2.9): New standalone module providing pure-function utilities for working with parameter descriptions, independent of DataPoint instances. Includes ParameterHelper (flag/operation checks, enum resolution, step size calculation), ParameterValidator (value validation, type coercion), and ParamsetDiff (type-aware paramset comparison).

  • ConfigurationCoordinator (2026.2.9): New high-level facade for device configuration operations, exposed as central.configuration. Provides get_paramset_description(), get_all_paramset_descriptions(), get_paramset(), put_paramset(), get_configurable_channels(), and get_parameter_data().

  • Paramset consistency checker (2026.2.7): Automatically detects missing parameters on HmIP/HmIPW devices after firmware updates. The HmIPServer (crRFD) on the CCU sometimes fails to refresh its stored parameter data, creating a mismatch between getParamsetDescription() (schema) and getParamset() (actual values). Reports inconsistencies via IntegrationIssue events, log warnings, and diagnostics data.

  • 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)

Improved (aiohomematic)

  • CCU translation loading via pkgutil (2026.2.12): Replaced Path.read_text() with pkgutil.get_data() for loading CCU translation files. Avoids blocking file I/O detection in Home Assistant's event loop. Translations are eagerly initialized at import time.

  • Robust JSON parsing with stdlib fallback (2026.2.11): When orjson fails to parse JSON from CCU Rega scripts (e.g., due to non-standard literals like NaN or Infinity), the parser now falls through to Python's stdlib json module. Extended control character sanitization to include DEL (U+007F). Diagnostic logging for JSON parse errors now includes exact codepoint, position, and surrounding context.

  • Extraction script improvements (2026.2.13): Added PNAME.txt and easymode TCL file parsing, improved HTML entity decoding. Parameters: 841 → 1029 (+188), parameter values: 1256 → 1326 (+70). Removed 17 redundant custom translation entries now covered by improved extraction.

  • Empty parameter translation suppresses parameter name (2026.2.14): When a CCU parameter translation resolves to an empty string (""), the parameter name is now omitted from translated_name and translated_full_name. This allows translations to explicitly suppress redundant parameter names when the channel name already conveys the meaning. None (no translation found) still falls back to the original untranslated name.

  • Custom data point postfix translation (2026.2.16): Custom data points now translate their data_point_name_postfix via the CCU translation system, providing localized names (e.g. translating parameter postfixes like BUTTON_LOCK) consistent with generic data points.

Bug Fixes (aiohomematic)

  • Fix HmIP-HDM2 cover showing "unknown" state (2026.2.25): Devices without tilt support (e.g. HmIP-HDM2 in plissee mode) sent LEVEL_2_STATUS = INVALID from the CCU, which poisoned the cover entity's is_status_valid check and caused Home Assistant to show "unknown" state despite position control working. CustomDpBlind now excludes LEVEL_2 from relevant data points when its value is None.
  • Use JSON-RPC for HmIP-RF install mode (2026.2.25): The Java-based HMIPServer does not support the XML-RPC setInstallMode method — it throws IllegalArgumentException: argument type mismatch and returns an empty response. Install mode for HmIP-RF now uses the dedicated JSON-RPC methods Interface.setInstallModeHMIP and Interface.getInstallMode instead. BidCos-RF continues to use XML-RPC setInstallMode as before.
  • Fix BidCos-RF install mode with device address filter (2026.2.25): The XML-RPC call for signature (3) setInstallMode(Boolean, Integer, String) incorrectly sent 4 arguments (on, time, mode, address) instead of the documented 3 arguments (on, time, address).
  • Improve empty XML-RPC response handling (2026.2.25): Empty HTTP responses from the CCU (e.g. caused by server-side exceptions) are now caught as ExpatError with a specific warning log and raised as ClientException, instead of falling through to the generic exception handler.
  • Handle empty XML-RPC responses for void CCU methods (2026.2.24): The CCU's setInstallMode method returns an empty HTTP response body instead of a proper XML-RPC response. The XML parser failed with ExpatError: no element found. The proxy now detects empty responses and treats them as successful void returns, preventing ClientException when activating install mode.
  • Clear deleted schedule entries on CCU (2026.2.23): DefaultWeekProfile.convert_dict_to_raw_schedule now explicitly zeroes out WEEKDAY and TARGET_CHANNELS for unused groups (1-24) that are not in the schedule. This ensures that deleted schedule entries are properly deactivated on the CCU, since put_paramset only updates keys that are sent.
  • LINK paramset parameter translations (2026.2.18): get_parameter_translation() and get_parameter_value_translation() now strip SHORT_/LONG_ prefixes and retry the base name, resolving translations for link parameters (e.g. SHORT_ON_LEVEL → "Einschalthelligkeit (kurz)"). Added 138 parameter translations and 1158 value translations for link-specific parameters.
  • Fix delayed device creation failing on multi-interface devices (2026.2.18): When a new HmIP device was paired, the CCU sends newDevices on multiple interfaces (e.g. HmIP-RF and VirtualDevices) with the same device address. _delayed_device_descriptions was keyed by device address only, causing the first call to consume descriptions from all interfaces. Fixed by making _delayed_device_descriptions interface-aware.
  • Preserve channel postfix when translation suppresses parameter name (2026.2.17): When a parameter translation resolves to an empty string for a multi-channel data point, the channel disambiguation postfix (e.g. ch13) was lost because the truthiness check treated "" the same as None. Changed to an identity check (is not None) so that an empty translation correctly yields translated_name="ch13" instead of removing the name entirely.
  • i18n: Allow multiple CentralUnit instances (2026.2.15): set_locale() is now idempotent — calling it again with the same locale is a no-op. When called with a different locale, it logs a message and keeps the original. Previously, creating a second CentralUnit raised RuntimeError because set_locale() was strictly one-shot.
  • XML-RPC server race condition on multi-hub startup (2026.2.7): Fixed a race condition in AsyncXmlRpcServer.start() that caused "address in use" errors when multiple central units started concurrently. The singleton server is now protected by an asyncio.Lock.
  • Optimistic rollback now clears unconfirmed value (2026.2.7): _rollback_optimistic_value() now properly clears the unconfirmed value before restoring the previous confirmed value, preventing the unconfirmed value from undermining the rollback.
  • 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.

Changed (aiohomematic)

  • 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.
  • Rename _temporary_value to _unconfirmed_value (2026.2.7): All internal references renamed to clarify the role of the second value tier in the three-tier resolution model (optimistic → unconfirmed → confirmed).
  • 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.

Bump aiohomematic-config to 2026.2.10

New companion library providing device configuration utilities for the integration.

  • Initial release (2026.2.1): FormSchemaGenerator for UI form schemas, ParameterGrouper for logical sections, LabelResolver for i18n labels, ConfigSession for undo/redo change tracking, ConfigExporter for JSON export/import, WidgetType mapping.
  • Upstream CCU translations (2026.2.3): Replaced local translation files with CCU translations from aiohomematic. Added channel_type parameter to LabelResolver.resolve(), option_labels on FormParameter, model_description/channel_type_label on FormSchema, model/sub_model parameters to FormSchemaGenerator.generate().
  • Parameter filtering and section titles (2026.2.4): Locale-aware section titles in ParameterGrouper (German translations). Parameters without CCU translation are filtered (matches CCU WebUI easymode behavior). VALUE_LIST parameters always get option_labels with humanized fallback.
  • Link parameter metadata & profiles (2026.2.5): link_param_metadata module for classifying LINK parameters (SHORT/LONG grouping, time pair detection, category classification). ProfileStore for loading easymode profile definitions from CCU-extracted JSON. FormSchemaGenerator enriches LINK parameters with metadata via enrich_link_metadata flag. Time preset tables for on/off, delay, and ramp durations.
  • Change history module (2026.2.6): ConfigChangeLog class with FIFO-capped storage, filtering, and serialization. ConfigChangeEntry frozen dataclass for immutable change records. build_change_diff() helper for computing old/new value diffs.
  • Async profile loading (2026.2.7): ProfileStore.get_profiles() and ProfileStore.match_active_profile() are now async. Fixed blocking read_text/open calls inside the async event loop (uses asyncio.to_thread). Breaking: callers must now await these methods.
  • Schedule facade module (2026.2.8): schedule_facade module for schedule management in the configuration panel. list_schedule_devices() for discovering devices with schedule support. get_climate_schedule() / set_climate_schedule_weekday() / set_climate_active_profile() for climate schedules. get_device_schedule() / set_device_schedule() for generic device schedules.
  • Schedule domain from upstream (2026.2.9): Use schedule_domain property from aiohomematic instead of local heuristic. Removed _get_schedule_domain() helper and ScheduleType import from schedule_facade.
  • Device-level change history filtering (2026.2.10): ConfigChangeLog.get_entries() now uses prefix matching for the channel_address filter, so querying by device address returns history entries for all channels of that device.

Version 2.2.4 (2026-02-01)

What's Changed

Bug Fixes

  • Program Button Naming: Fixed regression where CCU program button entities were named "P Taste" instead of the actual program name. The issue was caused by the HUB_BUTTON default entity description using a generic translation key that overwrote the program name.
  • Hub Entity Naming: Fixed regression where hub entities (sysvars, programs) lost their instance name prefix in entity_id (e.g., switch.otto_sv_anwesenheit became switch.anwesenheit). The fix ensures hub entities don't use a translation_key, allowing the custom name property to properly add "SV "/"P " prefixes.

Documentation

  • README: Added "Companion Cards" section featuring the Climate Schedule Card for visual editing of thermostat week profiles.

Bump aiohomematic to 2026.2.0

Bug Fixes

  • Device Re-Pairing (2026.2.0): Fixed devices not appearing after factory reset and re-pairing. When a device was reset and re-paired with the same address, channel descriptions were not added to cache because only the parent device address was checked.
  • EventBus Subscription Leak (2026.2.0): Fixed subscription leak for DeviceLifecycleEvent when stopping CentralUnit, eliminating "LEAKED_SUBSCRIPTION" warnings during shutdown.
  • CUxD/CCU-Jack Interface Registration (2026.1.57): Fixed devices incorrectly assigned to Interface.BIDCOS_RF instead of their actual interface (e.g., Interface.CUXD). This caused get_data_points(interface=Interface.CUXD) to filter out all CUxD devices. Interface is now properly registered during device creation.
  • CUxD/CCU-Jack Data Polling (2026.1.56): Fixed data not updating after startup for polled interfaces. The refresh_data_point_data() method was using hardcoded CallSource.HM_INIT which caused data points with ignore_on_initial_load to be skipped during periodic polling.
  • OperatingVoltageLevel Battery Calculation (2026.1.55): Fixed battery percentage calculation to use user-configured LOW_BAT_LIMIT value instead of default. This fixes incorrect battery readings when users have customized the low battery threshold.

Test Infrastructure

  • OpenCCU Test Fixtures (2026.1.55): Added comprehensive test infrastructure for VirtualCCU with OpenCCU backend mode support, including device lifecycle event handling and full 397-device central unit tests.

Version 2.2.3 (2026-01-29)

What's Changed

New Features

  • Binary Sensor Entities: Added entity descriptions for new binary sensors:
    • HmIP-SRH & HM-Sec-RHS: Added WINDOW_OPEN binary sensor for rotary handle sensors (window open detection)
    • HmIP-SWSD: Added SMOKE_ALARM and INTRUSION_ALARM binary sensors for smoke/intrusion detector

Documentation

  • README Shortened: Reduced README.md from ~1960 lines to ~140 lines. Detailed documentation moved to the new documentation site at sukramj.github.io/aiohomematic. README now contains quick start links, installation instructions, and references to full documentation.

Bug Fixes

  • Fix SSDP Import for Home Assistant 2025.2+: Updated SsdpServiceInfo import in tests from deprecated homeassistant.components.ssdp to new location homeassistant.helpers.service_info.ssdp.

Internal

  • Type Safety Improvements: Added @override decorator to 100+ methods across all entity platforms to explicitly mark methods overriding parent class methods. Added Final annotation to 15 EVENT_* constants in const.py. These changes improve code clarity and enable better static analysis.

Bump aiohomematic to 2026.1.54

New Features

  • HmIP-WRC6-230 Support (2026.1.53): Added support for HmIP-WRC6-230 (Wall-mount Remote Control 6-button 230V) as a fixed color light device.
  • Derived Binary Sensors (2026.1.52): A registry-based system now enables creation of binary sensors derived from enum data points. New calculated parameters include INTRUSION_ALARM, SMOKE_ALARM, and WINDOW_OPEN. Examples: HmIP-SRH/HM-Sec-RHS window handle sensors now provide a WINDOW_OPEN binary sensor (activated when TILTED or OPEN), and HmIP-SWSD smoke detectors provide INTRUSION_ALARM and SMOKE_ALARM binary sensors (activated when alarm active).
  • Enhanced Data Point Validity (2026.1.52): Comprehensive validation for data points now includes type checking, range validation, and proper None handling. Added has_valid_value_type and is_value_in_range properties to BaseParameterDataPoint. STATUS parameter events are automatically subscribed and processed. Type-specific validation rules for each parameter type (FLOAT, INTEGER, BOOL, ENUM, etc.) with warning logs for out-of-range values received from CCU.
  • Contract Tests for Regression Prevention (2026.1.51): Added extensive contract testing infrastructure with 500+ tests specifically designed to prevent regressions during AI-assisted refactoring. Coverage includes backend capabilities, state machines, connection recovery, event systems, lifecycle methods, enums, configuration classes, exception hierarchies, protocol interfaces, hub entities, subscription APIs, and device/channel protocols.

Changed

  • Reduced Validation Logging (2026.1.54): Log level for data point validation messages (value range min/max and enum index/value checks) reduced from WARNING to DEBUG to reduce log noise.
  • Pydantic Model Conversions: Multiple configuration classes migrated to Pydantic BaseModel with frozen immutability including TimeoutConfig, InterfaceConfig, CentralConfig, DeviceConfig, ProfileConfig, and BackendCapabilities.
  • Type Safety Improvements: Added @unique decorator to 70+ enum classes to prevent accidental duplicate values, @override decorator to explicitly mark overridden methods, and Final annotations to key constants.

Bug Fixes

  • Fix Client Reconnection from INITIALIZED State: Fixed an issue where clients stuck in INITIALIZED state couldn't be reconnected. The state machine now permits INITIALIZED → DISCONNECTED transitions enabling recovery.
  • Fix JSON Parsing Control Characters: Fixed JSONDecodeError by sanitizing JSON-RPC responses, escaping control characters (U+0000 to U+001F) to proper \uXXXX sequences.

Version 2.2.2 (2026-01-25)

What's Changed

Bug Fixes

  • Fix Interface Port Resolution: Interface ports are now correctly resolved using aiohomematic's default port mapping when no port is explicitly configured. JSON-RPC-only interfaces (CUxD, CCU-Jack) now correctly pass None instead of a port number, as they don't use XML-RPC ports.

Bump aiohomematic to 2026.1.50

Changed

  • Port Handling Refactoring for JSON-RPC Interfaces: InterfaceConfig.port changed from int to int | None for cleaner semantics. JSON-RPC-only interfaces (CUxD, CCU-Jack) now properly use None instead of the workaround value 0. This provides improved type safety and eliminates validation workarounds throughout the codebase.

Bug Fixes

  • Fix Hub Data Not Refreshing After Reconnection: Hub data (System Update, Programs, Sysvars) is now refreshed after successful reconnection. Previously, stale information persisted—for example, "Update available" would display even after the CCU completed firmware updates during disconnection.
  • Fix Client Recovery for Secondary Interfaces: Recovery for CUxD and CCU-Jack clients now succeeds when other clients already exist. The issue stemmed from attempting to create all clients simultaneously; the fix creates the specific failing interface client directly instead of recreating all clients.
  • Fix Clients Stuck in INITIALIZED State: Clients stuck in INITIALIZED state (initialized but never connected) can now recover. The state machine now permits INITIALIZED → DISCONNECTED transitions, enabling proper state reset for reconnection attempts.
  • Fix JSON-RPC Port Handling: TCP pre-flight checks now correctly skip interfaces with None port. CUxD and CCU-Jack rely on JSON-RPC via central ports (443/80) rather than individual XML-RPC ports. A new JSON-RPC port pre-flight check verifies service availability before client creation.

Version 2.2.1 (2026-01-25)

What's Changed

Bump aiohomematic to 2026.1.48

Bug Fixes

  • Fix XML-RPC Authentication Headers Not Sent with TLS: Fixed a critical bug where HTTP Basic Authentication headers were not being sent when TLS was enabled. This caused all XML-RPC calls to fail with ProtocolError: Unauthorized when CCU authentication was enabled. The fix passes authentication headers directly to the transport classes.
  • Fix Authentication Check Fails for Non-Admin Users: Fixed a regression introduced in 2026.1.41 where users without ADMIN rights on the CCU would fail to connect. When CCU.getAuthEnabled returns "access denied (ADMIN needed 2)", this proves authentication is enabled (otherwise no permission check would occur). The method now correctly returns True instead of propagating the exception.

Version 2.2.0 (2026-01-23)

What's Changed

Breaking Changes

  • System Update Entity Removed for HA-Addon: The System Update entity is no longer created for Home Assistant Add-on deployments. Users with existing orphaned entities from previous versions can manually delete them via Home Assistant's entity management.

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 UpdateEntityDescription entries for UPDATE and HUB_UPDATE from defaults.py since Update entities don't use the generic entity helper system. The device_class is now set directly on the entity classes.
  • Migrate Event Platform to ChannelEventGroup: Migrated the event platform from individual GenericEvent subscriptions to the new ChannelEventGroupProtocol pattern. Event groups are now virtual data points bound to channels, providing unified subscription management via subscribe_to_data_point_updated(). This simplifies subscription handling (single subscription per entity instead of one per event type) and aligns with the standard CallbackDataPointProtocol pattern.
  • 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.
  • Config Entry Migration v15: Added migration to remove deprecated OptionalSettings values from config entry data. Removes ENABLE_LINKED_ENTITY_CLIMATE_ACTIVITY (now always enabled) and USE_INTERFACE_CLIENT (legacy client removed) that were removed in aiohomematic 2026.1.44.
  • Local Validators: Implemented local voluptuous validators (validate_channel_no, validate_wait_for, validate_device_address, validate_channel_address, validate_paramset_key) in support.py to replace validators removed from aiohomematic after its migration to Pydantic.

Bump aiohomematic to 2026.1.46

New Features

  • HA-Addon Detection: Automatically detects when running as a Home Assistant Add-on by checking for HM_RUNNING_IN_HA or SUPERVISOR_TOKEN environment variables. A new is_ha_addon field in SystemInformation indicates the backend's execution context.
  • System Update Handling for HA-Addons: The has_system_update property now returns False when operating as an HA-Addon, preventing unnecessary system update entities from being created. The firmware_update_trigger capability is similarly disabled, since the HA Supervisor manages all updates within that environment.
  • Free-Threaded Python Support: Added compatibility with Python 3.14 free-threaded builds (no GIL) through a new compatibility module. Includes detection functions and a conditional JSON backend that automatically selects orjson on standard builds while falling back to stdlib json on free-threaded versions.
  • CentralRegistry for Thread-Safe Instance Management: New thread-safe registry replaces the previous module-level dictionary for managing CentralUnit instances, employing a copy-on-read pattern safe for both GIL-enabled and free-threaded Python environments.
  • orjson Now Optional: orjson is no longer a required dependency. Install via pip install aiohomematic[fast] for enhanced JSON serialization on standard Python builds. All JSON operations now use a compatibility module that automatically selects the best available backend.
  • Paramset Description Patching System: Added a generic mechanism to correct faulty paramset_descriptions from the CCU. The system applies device-specific corrections during data ingestion using declarative patch definitions. Initial patch corrects HM-CC-VG-1 channel 1 SET_TEMPERATURE MIN/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_key property for translations. This includes hub sensors, metrics sensors, inbox, install mode, device/system updates, and calculated data points.
  • Startup Resilience for Authentication Errors: Added a 3-stage validation approach for improved startup reliability: TCP pre-flight check validates port availability, client creation & RPC validation verifies backend communication, and retry with exponential backoff handles transient errors before failing. New TimeoutConfig parameters: startup_max_init_attempts (default: 5), startup_init_retry_delay (default: 3s), and startup_max_init_retry_delay (default: 30s).
  • Device Availability Events for Forced Availability: The force_device_availability method now fires DeviceLifecycleEventType.AVAILABILITY_CHANGED events, ensuring the integration receives proper notifications when device availability is manually changed.
  • SensorValueMixin: New mixin class consolidating duplicated value transformation logic between DpSensor (generic) and SysvarDpSensor (hub). Provides standardized handling for value list lookup, converter functions, and string length validation.

Changed

  • ChannelEventGroup as Virtual Data Point: Refactored ChannelEventGroup from a helper class to a virtual data point bound to the Channel. Event groups now extend CallbackDataPoint and follow the standard subscription pattern with subscribe_to_data_point_updated(). See migration guide: docs/migrations/channel_event_group_migration_2026_01.md.
  • Replace Voluptuous with Pydantic: Migrated all validation from voluptuous to Pydantic for improved type safety and validation. Address validation patterns (DEVICE_ADDRESS_PATTERN, CHANNEL_ADDRESS_PATTERN) remain available as compiled regex patterns in aiohomematic.const.
  • Async RPC Server is Now Standard: The async XML-RPC server (using aiohttp) is now the only RPC server implementation. The legacy thread-based XML-RPC server has been removed along with OptionalSettings.ASYNC_RPC_SERVER.
  • InterfaceClient is Now Standard: The legacy client implementations (ClientCCU, ClientJsonCCU, ClientHomegear) and handler classes have been removed. InterfaceClient with the Backend Strategy Pattern is now the only implementation. OptionalSettings.USE_INTERFACE_CLIENT has been removed.
  • Linked Entity Climate Activity Always Enabled: The OptionalSettings.ENABLE_LINKED_ENTITY_CLIMATE_ACTIVITY feature flag has been removed - linked entity climate activity is now always enabled.

Bug Fixes

  • Automatic Reconnection After Startup Failures: Fixed scenarios where the backend was unavailable during Home Assistant startup. The integration previously remained in FAILED state indefinitely. Now the heartbeat timer automatically activates when central transitions to FAILED state during startup, with recovery attempts every 60 seconds (configurable). Port resolution for TCP checks falls back to interface configuration when client doesn't exist.
  • 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 invalid error when starting with cached schedule data. The issue was old cached endtime values 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 when soundfile is 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.

Version 2.1.2 (2026-01-14)

What's Changed

New Features

  • New Services for Configuration Reload: Added two new admin services to reload device and channel configurations from the CCU without restarting Home Assistant:
    • reload_device_config: Reloads device configuration (accepts device_id or device_address)
    • reload_channel_config: Reloads channel configuration (accepts device_id or device_address + channel number)

Bug Fixes

  • Fix Backend Detection Hanging with Non-Standard Ports: Fixed issue where backend detection would hang indefinitely when using non-standard HTTP/HTTPS ports (e.g., port 2080 instead of 80). Added 20-second timeout wrapper with graceful degradation - if detection times out or fails, the config flow now proceeds directly to manual interface configuration instead of blocking. Users can also skip backend detection entirely via new checkbox in the connection step (useful when non-standard ports are known upfront). Resolves #2804.
  • 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.38

New Features

  • Configurable Backend Detection Timeouts: Backend detection timeouts are now managed centrally through TimeoutConfig instead of hardcoded constants. Two new configurable fields:
    • backend_detection_request: float = 5.0 — Timeout for individual XML-RPC/JSON-RPC requests
    • backend_detection_total: float = 15.0 — Total timeout for complete detection process
  • Socket-Level Timeout for XML-RPC Connections: Added timeout parameter to XML-RPC connections to prevent indefinite hangs when connecting to unreachable hosts. Default socket timeout of 5s during detection, while normal RPC operations maintain backward compatibility.
  • Smart Early Abort on Fatal Connection Errors: Backend detection now distinguishes fatal errors (ETIMEDOUT, EHOSTUNREACH, ENETUNREACH) from transient errors (ECONNREFUSED). Fatal errors trigger immediate abort, reducing detection time on unreachable hosts from ~30s to ~5s (6× improvement).
  • Service Methods for Manual Configuration Reload: New Device.reload_device_config() and Channel.reload_channel_config() methods enable external cache updates for scenarios where CONFIG_PENDING events are unreliable (particularly for classic BidCos devices).

Bug Fixes (from 2026.1.37)

  • 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 Schedule Validation Error for HM-CC-VG-1 Heating Groups: The CCU sometimes returns ENDTIME values as strings ("360") instead of integers (360). The convert_raw_to_dict_schedule() function now handles both formats by checking if string values are numeric before conversion.
  • 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 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 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.
  • Type Conversion for Read Operations: New optional convert_from_pd parameter across client implementations automatically converts CCU values to correct types (INTEGER, FLOAT, BOOL, ENUM, STRING) based on ParameterDescription.
  • WeekProfile Automatic Type Conversion: Both ClimateWeekProfile and DefaultWeekProfile now use convert_from_pd=True when fetching schedules, ensuring ENDTIME values return as integers and TEMPERATURE as floats directly from the client layer.

Version 2.1.1 (2026-01-09)

What's Changed

Bug Fixes

  • Fix Unwanted Config Entry Reloads: Fixed integration restarting whenever a device's availability changed. The device registry's disabled_by field was being updated on availability changes, which Home Assistant interprets as requiring a config entry reload. Entity availability is now handled exclusively through the entity's available property, which is the correct approach for transient state changes.
  • Fix False Positive Duplicate Key Warnings: Entity description validation no longer warns about rules with the same key when they have different filtering criteria (device filters, priorities, etc.). These are valid override patterns, not duplicates.

Bump aiohomematic to 2026.1.27

Bug Fixes

  • Fix State Machine Transition Error on Unload: Allow transition from FAILED to DISCONNECTED state. This fixes InvalidStateTransitionError when unloading the integration while a client is in failed state
  • Fix Leaked EventBus Subscriptions on Central Stop: Six internal subscription leaks have been fixed across HubCoordinator, ClientCoordinator, CacheCoordinator, EventCoordinator, CentralUnit, and various client classes. The number of leaked subscriptions logged at shutdown has been reduced from ~7800 to zero
  • Fix Empty Device List Treated as Error: The initialize_proxy() method now correctly handles empty device lists from interfaces that don't support RPC callbacks. Previously, an empty device list was incorrectly treated as a connection failure
  • Fix Ping/Pong Mismatch Issue Not Clearing: The ping_pong_mismatch repair issue is now correctly removed when the connection recovers (mismatch_count drops to 0). Previously, the issue remained visible even after recovery due to a type comparison mismatch
  • Clear Stale Issues on Startup: Transient repair issues (ping_pong_mismatch, pending_pong_mismatch, unknown_pong_mismatch, fetch_data_failed, interface_not_reachable, xmlrpc_server_receives_no_events) are now automatically deleted when the integration starts. These issues from previous sessions are no longer relevant after a restart
  • Fix Persistent Repair Issues After CCU Restart: Fixed central state getting stuck in "recovering" after successful recovery. A race condition in ConnectionRecoveryCoordinator caused the state transition check to run before the interface was removed from active recoveries, preventing the transition to "running" state. Also adds immediate connection repair notifications when recovery starts and clears them when recovery succeeds
  • Fix Recovery Stuck in Infinite Retry Loop: After CCU restart, the XML-RPC proxy's HTTP connection could enter an inconsistent state causing system.listMethods calls to fail silently. The proxy transport is now reset before RPC availability checks during recovery

Internal

  • Migrate to Strongly Typed Events: Updated to use IntegrationIssueType and IntegrationIssueSeverity enums instead of string comparisons for better type safety and IDE support

Version 2.1.0 (2026-01-08)

What's Changed

Bug Fixes

  • Home Assistant 2026.1.0+ Compatibility: Fixed "Detected blocking call to import_module" error that prevented the integration from loading. All blocking I/O operations during central unit creation now run in a thread pool executor.

Internal

  • Async Central Creation: Migrated ControlConfig.create_central(), check_config(), create_control_unit(), and create_control_unit_temp() to async methods
  • Factory Pattern for ControlUnit: Added BaseControlUnit.async_create() class method for async instantiation

Bump aiohomematic to 2026.1.20

New Features

  • old_value and new_value fields in DataPointStateChangedEvent: External consumers can now track what changed without maintaining their own previous state
  • AvailabilityInfo dataclass: New unified view of device availability bundling reachability, battery, and signal information
  • Device.availability property: Returns AvailabilityInfo providing a unified view of device connectivity and health status
  • Consumer API documentation: New docs/consumer_api.md guide for external consumers like Matter bridges

Internal

  • Eliminate all remaining lazy imports: All noqa: PLC0415 markers have been removed from production code. Circular imports have been resolved through module restructuring
  • Remove unnecessary delayed imports: Moved imports to top-level where no circular dependency exists

Version 2.0.6 (2026-01-08)

What's Changed

Bug Fixes

  • Device Auto-Confirmation After Cache Clear: Fixed devices not being auto-confirmed after clearing the aiohomematic cache. Previously, all devices were incorrectly shown as repair issues because the wrong device identifier format was used for registry lookups. Devices that already exist in Home Assistant are now correctly recognized and auto-confirmed
  • Device Availability Updates: Fixed device availability changes not updating the device registry correctly due to the same identifier format mismatch

Bump aiohomematic to 2026.1.17

Bug Fixes

  • VirtualDevices Init Timeout: Fixed VirtualDevices init() timing out even though the CCU successfully processed the request. On some CCU backends (OpenCCU, RaspberryMatic), the VirtualDevices service processes the init() request correctly but fails to send the response. The initialization is now treated as successful if a listDevices callback was received during the timeout
  • VirtualDevices Connection Failure: Fixed VirtualDevices failing to connect on OpenCCU/RaspberryMatic. The CCU's XML-RPC parser crashed when receiving device descriptions with empty CHILDREN fields. Device descriptions are now normalized to ensure CHILDREN is always a list
  • Retry Mechanism Removed: Removed the retry mechanism that was conflicting with CircuitBreaker pattern, causing cascading failures. This particularly affected slower backends (Virtual Devices on Raspberry Pi 4, OpenCCU systems) where retry attempts counted toward circuit breaker thresholds, triggering premature failures during initialization. Network errors now fail immediately for more predictable behavior
  • Homegear Device Names Not Loading: Fixed device names not loading for Homegear backends. The InterfaceClient was missing metadata retrieval via getMetadata() calls

Version 2.0.5 (2026-01-05)

What's Changed

New Features

  • Simple Schedule Services: Added get_schedule_simple_profile and get_schedule_simple_weekday services. These return schedule data in a simplified format that is easier to read and use.

Deprecations

  • Schedule Services: Deprecated set_schedule_profile, set_schedule_weekday, get_schedule_profile, and get_schedule_weekday services. These will be removed in April 2026. Use set_schedule_simple_profile, set_schedule_simple_weekday, get_schedule_simple_profile, and get_schedule_simple_weekday instead. A warning is now logged when using the deprecated services.

Bump aiohomematic to 2026.1.13

Bug Fixes

  • CUxD/CCU-Jack Recovery Fix: Fixed recovery mechanism for JSON-RPC-only interfaces (CUxD, CCU-Jack). Recovery now checks the JSON-RPC port (80/443) instead of failing at the TCP check stage. This prevents the central unit from entering a FAILED state when these services are actually available
  • Device Availability Not Updating: Fixed devices not showing as unavailable when UN_REACH changes. All entity states are now refreshed when device availability changes
  • HmIP-MP3P LED Auto-Off: Fixed LED turning off after 10 seconds on HmIP-MP3P sound player devices
  • VirtualDevices Init Timeout: Fixed initialization timeout causing client failure for virtual devices
  • Device Cache After Firmware Updates: Fixed device structure changes after firmware updates. Cached descriptions are now removed and refreshed from the CCU, preventing errors like "Non-existent Channel 3"
  • Device Replacement/Re-pairing: Fixed device replacement and re-pairing handlers. Old device entries are now properly removed and recreated with fresh data
  • Hub Entities with Secondary Client Failures: Fixed system variables and programs not appearing when secondary clients (e.g., CUxD) fail to initialize
  • Connection Recovery Port Detection: Fixed port detection during connection recovery for all client implementations
  • Channel Names Not Loading: Fixed channel names not loading when using InterfaceClient (JSON-RPC). The nested channels array from the JSON-RPC response is now processed correctly

Version 2.0.4 (2026-01-04)

What's Changed

New Features

  • Undetected Interface Warning: Config flow now shows a warning when enabled interfaces were not detected on the CCU (e.g., CUxD installed but not running)

Bug Fixes

  • Device Trigger Address Mapping: Fixed device_address to address conversion in device triggers. Existing automations using device triggers (e.g., button press events) that failed with "required key not provided @ data['address']" will now work after re-saving
  • Validation Error UX: Validation errors during interface configuration now stay on the interface page instead of navigating to port configuration. This allows users to disable problematic interfaces (e.g., CUxD not running) directly
  • Interface Availability Pre-Check: Config flow now validates interface availability BEFORE attempting connection. If an interface is enabled but was not detected on the CCU, a clear error message is shown immediately without unnecessary connection attempts

Bump aiohomematic to 2026.1.9

Improvements

  • Backend Detection Validates Interface Availability: The backend detection now verifies that each interface process is actually running via is_present() check, not just installed
  • Fix CUxD/CCU-Jack JSON-RPC Method Overrides: ClientJsonCCU now properly uses JSON-RPC for all device operations

Version 2.0.3 (2026-01-03)

What's Changed

New Features

  • Light Last Brightness Option: Added config option Restore last brightness for lights in advanced settings. When enabled, lights will turn on with the last non-zero brightness level instead of default 100%. Default is disabled.

Improvements

  • Configuration Options: Improved labels and descriptions for all advanced configuration options in config flow and options flow
  • Documentation: Updated README.md with corrected descriptions for Device Behavior and Expert Options sections

Bug Fixes

  • Sensor State Class: Added unit-based fallback rules for %, bar, °C, and g/m³ units. This restores long-term statistics support for Homebrew devices like HB-UNI sensors
  • Device Model Matching: Fixed case-insensitive device model matching for entity description rules. Older devices like HmIP-SWDO (reported as HMIP-SWDO by CCU) now correctly receive their device_class (e.g., window)
  • Service Schema: Removed invalid base_temperature parameter from set_schedule_simple_profile service schema (parameter is part of simple_profile_data, not a separate field)
  • Service Name: Fixed incorrect service name create_backupcreate_ccu_backup in release notes

Bump aiohomematic to 2026.1.8

Bug Fixes

  • Fix CuXD/CCU-Jack Device Control: ClientJsonCCU now properly overrides set_value and put_paramset to use JSON-RPC
  • Fix Sysvar-to-Device Association: System variables with device references are now correctly associated with their devices/channels
  • Fix Runtime Device Addition: Fixed KeyError when adding new devices during runtime after cache was loaded

New Features

  • Circuit Breaker Incident Recording: Circuit breaker state changes are now recorded as incidents
  • CONNECTION_LOST Incident Recording: Connection loss events are now recorded as incidents
  • CONNECTION_RESTORED Incident Recording: Connection restoration events are now recorded as incidents
  • RPC_ERROR Incident Recording: RPC call failures are now recorded as incidents
  • CALLBACK_TIMEOUT Incident Recording: Callback timeout events are now recorded as incidents
  • Per-Type Incident Storage: IncidentStore now uses per-IncidentType storage limits

Version 2.0.2 (2026-01-02)

What's Changed

New Features

  • Confirm All Delayed Devices Service: New service confirm_all_delayed_devices to confirm all pending inbox devices at once

Bug Fixes

  • Callback Issues Cleanup: Stale callback repair issues are now cleaned up at startup (fixes leftover issues from PingPong race condition)

Bump aiohomematic to 2026.1.5

New Features

  • Add IncidentStore for Persistent Diagnostic Incidents: New storage system for tracking and persisting diagnostic incidents
  • PingPong Tracker Incident Recording: Connection health issues are now recorded as incidents
  • PingPong Diagnostics Journal: Enhanced diagnostic capabilities for connection monitoring

Bug Fixes

  • Fix PingPong Unknown Issue Not Cleared: Unknown PONG mismatch issues are now properly cleared when conditions normalize
  • Fix OperatingVoltageLevel Shows Unknown After Restart (Issue #2674): Battery parameters now load from cache on startup
  • Fix KeyError for PARENT in Device Descriptions: Use .get() to safely access optional PARENT field

Version 2.0.1 (2026-01-02)

What's Changed

Bug Fixes

  • Select Entities: Fixed Select entities (e.g., WINDOW_STATE) not being created due to incorrect whitelist filtering

Bump aiohomematic to 2026.1.3

Bug Fixes

  • Fix PingPong Race Condition: Register ping token in tracker before sending the ping request
  • Fix Week Profile ScheduleCondition: Extended ScheduleCondition enum with all 8 valid values
  • Fix ClientJsonCCU Handler Initialization: ClientJsonCCU (used for CCU-Jack) now properly initializes handlers

Version 2.0.0 (2026-01-02)

What's Changed

New Features

  • HmIP-WRCD Text Display: Full support for the wall-mount remote control with display via NotifyEntity, including services for sending text with icons, colors, sounds, and alignment options
  • HmIP-MP3P Sound Player: Full support for the combination signalling device with services for sound playback (play_sound, stop_sound) and LED control (set_sound_led) with colors, brightness, and timing options
  • Siren Control: Automatic select entities for siren tone and light pattern selection with full translations (no manual InputHelper setup required)
  • Reauthentication: Added reauthentication flow to update expired credentials without removing the integration
  • Reconfigure Flow: Quick reconfiguration of connection settings without full re-setup
  • Air Quality Sensors: New entity descriptions for DIRT_LEVEL and SMOKE_LEVEL sensors
  • Enhanced Diagnostics: Comprehensive system metrics in diagnostics including RPC statistics, event bus metrics, cache performance, health status, and service call analytics
  • System Metrics Sensors: New diagnostic sensors for monitoring system health (%), connection latency (ms), and last event age (s) - providing real-time visibility into CCU communication status
  • Delayed Device Repair: Devices stuck in the CCU inbox can now be added through Home Assistant's repairs interface with a guided fix flow
  • Restore Last Brightness: Dimmers now remember their last brightness level and automatically restore it when turned on without specifying brightness (persists across HA restarts)

Improvements

  • Configuration Experience: Enhanced config flow with improved error messages, progress indicators (Step X of Y), and menu-based navigation
  • Error Handling: Reduced log flooding during connection issues with improved error handling decorator for entity actions
  • Translations: Fixed naming of untranslated entities and improved translation coverage for press events
  • Translations: Added missing repair issue translations (callback_server_failed, client_failed, connection_failed) and entity translations (button_press)

Bug Fixes

  • Services: Fixed set_schedule_simple_weekday service
  • Translations: Fixed translation issues

Developer Experience

  • Code Quality: Strict mypy type checking, consistent use of keyword-only arguments, removed legacy code from config flow
  • Testing: Comprehensive test coverage improvements for config flow, services, lights, and updates
  • Documentation: Added comprehensive CLAUDE.md for AI assistants with development guidelines and project structure

Bump aiohomematic to 2026.1.2

Storage & Persistence

  • Storage Abstraction Layer: Unified storage system enabling Home Assistant Store integration
    • Protocol-based architecture allows transparent substitution of storage backends
    • Local implementation uses orjson for fast serialization with atomic writes
    • Supports ZIP archive loading, version migrations, and delayed/debounced saves
  • Device Definition Export: Export device definitions as single ZIP file for easier sharing and debugging

RPC Server

  • Async XML-RPC Server (Experimental): New asyncio-native alternative to thread-based server
    • Enable via OptionalSettings.ASYNC_RPC_SERVER in CentralConfig
    • Full system.multicall support for batched CCU events
    • Health-check endpoint (GET /health) for monitoring
    • Metrics: request count, error count, latency, active background tasks
    • Graceful shutdown with task cancellation

Connection Recovery

  • Unified Recovery Architecture: New event-driven connection recovery coordinator
    • Staged recovery process: TCP check → RPC check → Warmup → Stability check → Reconnect
    • Automatic retry with exponential backoff (max 8 attempts)
    • Parallel recovery support for multi-interface setups
  • Fixed Authentication Errors: JSON-RPC sessions are now cleared when recovery starts
    • Prevents "access denied" errors after CCU restarts
  • Device Inbox at Startup: Inbox sensor now available immediately after integration start
  • Repair Issues Restored: Delayed device creation again triggers repair issues in HA

Observability & Metrics

  • Complete Event-Driven Metrics: All components now emit metric events to EventBus instead of maintaining local state
    • MetricsObserver aggregates latency, counter, gauge, and health metrics in real-time
    • Type-safe MetricKey dataclass with MetricKeys factory for all known metrics
    • emit_latency(), emit_counter(), emit_gauge(), emit_health() functions for easy metric emission
    • Dedicated aiohomematic/metrics/ module with clean separation of concerns
  • Comprehensive System Events: New events for complete system observability
    • Connection state changes with reason tracking
    • Cache invalidation and refresh events
    • Circuit breaker state transitions and trip notifications
    • Scheduler task execution and data refresh events
    • Request coalescing events for performance monitoring
  • RPC Server Monitoring: Track incoming requests from CCU with latency, error rates, and active tasks
  • Generic Serialization: All metrics and health data now export to JSON-serializable dictionaries
  • Data Point Categories: View data point counts grouped by type (SWITCH, SENSOR, CLIMATE, etc.)
  • Improved Cache Metrics: Clear distinction between true caches (with hit/miss) and trackers (size only)
  • Self-Healing Recovery: Automatic data refresh after circuit breaker recovery
  • Hub Metrics Sensors: Three HA-visible sensors for real-time system monitoring:
    • System Health (0-100%)
    • Connection Latency (ms)
    • Last Event Age (seconds since last CCU event)
  • RPC Monitoring: Track success/failure rates, latency, and request coalescing effectiveness

Connection Reliability

  • Improved Reconnection: New state machine architecture for faster, more reliable recovery after CCU restarts
  • CircuitBreaker: Automatic protection against repeated connection failures with staged reconnection
  • Reduced Log Noise: Less ERROR logging during expected reconnection scenarios

Device Management

  • Device Inbox: Accept and rename new devices pending pairing directly from the integration
  • Install Mode: Separate install mode control per interface (HmIP-RF and BidCos-RF) with countdown timer
  • Backup Support: Create and download CCU system backups, firmware download and update triggers

Climate & Schedules

  • Schedule Caching: Faster schedule operations with intelligent caching
  • Simple Schedule Format: Easier to read and modify weekly heating schedules
  • Schedule Sync: Bidirectional get/set schedule operations with filtered data format

Siren Control

  • Visible Alarm Settings: Acoustic and optical alarm selection now available as controllable entities
  • Flexible Turn-On: Siren activation uses entity values as defaults when service parameters omitted

Bug Fixes

  • Device Creation Race Condition: Fixed startup crash when CCU callback and initialization code raced
  • Resilient Channel Handling: Devices remain functional even when some channel descriptions are missing
  • Cover/Dimmer Restart: Fixed is_valid returning False after CCU restart when status is UNKNOWN
  • Empty Numeric Values: Fixed conversion error when CCU sends empty strings for FLOAT/INTEGER parameters
  • RGBW/LSC Auto-Off: Fixed lights turning off unexpectedly when using transition times
  • Reconnect Availability: Entities no longer remain unavailable after CCU reconnect
  • STATUS Parameters: Fixed handling of integer values from backend for status updates
  • Firmware Updates: Fixed firmware data not refreshing after update check

New Device Support

  • HmIP-MP3P Kombisignalgeber: Sound player with MP3 playback (channel 2) and RGB LED control (channel 6)
  • HmIP-WRCD Text Display: Wall-mount Remote Control with Display - send text, icons, colors, and sounds to the LCD
  • DeviceProfileRegistry for centralized device-to-profile mappings
  • DpActionSelect data point type for write-only selection parameters

Developer Experience

  • Fluent Configuration: New CentralConfigBuilder with method chaining and factory presets for CCU/Homegear
  • Request Tracing: Context variables pattern for request tracking through async call chains with automatic log prefixing
  • Type Converters: Extensible to_homematic_value() / from_homematic_value() using singledispatch pattern

Internal Improvements

  • Protocol-based architecture for better testability and decoupling
  • Event bus system replacing legacy callback patterns
  • Strict type checking throughout codebase
  • Translatable log messages and exceptions
  • Generic protocols for improved mypy type inference on data point values
  • Declarative field descriptors for custom and calculated data points
  • DelegatedProperty descriptor for simple property delegation with caching support
  • Enhanced linter with DP004 path validation for DelegatedProperty definitions
  • Store package restructured into persistent/ and dynamic/ subpackages for better maintainability
  • Typed dataclasses (CachedCommand, PongTracker) replace untyped tuples and dicts
  • Event-driven test patterns with EventCapture fixture for behavior verification through events
  • Import standardization with lint-package-imports pre-commit hook enforcing package facade usage
  • Package structure refactoring: Split large __init__.py files into dedicated modules
    • central/coordinators/ subpackage for CacheCoordinator, ClientCoordinator, ConnectionRecoveryCoordinator, DeviceCoordinator, EventCoordinator, HubCoordinator
    • central/events/ subpackage for EventBus, event types, and integration events
    • client/ccu.py, client/config.py for client classes
    • model/hub/hub.py for Hub orchestrator
  • Export validation with lint_all_exports.py ensuring consistent __all__ exports
  • Semantic Naming: Renamed classes to reflect actual purpose
    • CommandCacheCommandTracker (tracks sent commands, not a cache)
    • PingPongCachePingPongTracker (tracks connection health)
    • *DescriptionCache*DescriptionRegistry (authoritative stores)
    • ParameterVisibilityCacheParameterVisibilityRegistry
  • TrackerStatistics: Dedicated statistics class for trackers (evictions only, no hit/miss)

Version 1.90.2 (2025-11-05)

What's Changed

  • Bump aiohomematic to 2025.11.7
    • Add post_init_data_point_fields
    • Handle early arrival of pong events
    • Make ping pong handling more robust
    • Move on_link_peer_changed and refresh_link_peer_activity_sources to BaseCustomDpClimate
  • Ensure hvac_action is None for devices without activity sources

Version 1.90.0 (2025-11-04)

What's Changed

  • Bump aiohomematic to 2025.11.5
    • Add 'optional settings' config option
    • Add ELV-SH-PSMCI
    • Add dew point spread and enthalpy to calculated sensors
    • Add fallback to climate.activity to use linked channels, if own dps don't exist
    • Add link peer channel to channel
    • Add link_peer channels to device
    • Add pong_mismatch_allowed to ping pong event
    • Add session recorder
    • Ensure custom_ids are only used for external registrations
    • Fix issue after reconnect
    • Handle ping after ping success
    • Refactor PingPongCache
    • Refactor rpc handling
    • Remove link support for not linkable interfaces
    • Test support: Improve code/test coverage
    • Use enum for internal custom ids
    • Use generic DP DpDummy instead of NoneTypeDataPoint replacement
  • Add 'optional settings' to config flow
  • Add action for session recorder
  • Add config flow migration for parameter renaming
  • Adopt changes in friendly name of upnp discovery to OpenCCU
  • Display hvac action for climate entities as off if device is off; display idle if no value exists
  • Improve test coverage of core modules

Version 1.89.1 (2025-10-10)

What's Changed

  • Bump aiohomematic to 2025.10.5
    • API cleanup: ensure that kw arguments are passed to the underlying function
    • Add Keyword-only method linter (mypy-style)
    • Add option to delay new device creation
    • Add source of device creation to callback
    • Fix issue with non existing PARENT in device description
  • Add unknown_pong_mismatch notification
  • Add option to config flow to delay new device creation

Version 1.88.1 (2025-10-01)

What's Changed

  • Bump aiohomematic to 2025.10.1
    • Add option to cover entities that the current default behaviour can be disabled:
      • The default behaviour is, that the primary cover entity of a group uses the level of the state channel and no its own level to display a correct level.
      • Only HM experts should disable this option, that like to control all three writeable channels of a cover group.
    • Add option to config flow for cover entities

Version 1.88.0 (2025-10-01)

This release requires HA 2025.10.0 or later.

Info

There is no longer any need to register Homematic(IP) Local for OpenCCU as a custom repository in HACS, as it is now registered directly with HACS. Existing HACS configurations will be migrated automatically (by HACS), so no further action is required.

What's Changed

  • Bump aiohomematic to 2025.10.0
    • Add CuXD parameters CMD_RETL and CMD_RETS to ignore list, to avoid warnings when reading the value without an appropriate configuration.
      • CMD_RETL warning: use CUX28010xx:16.CMD_QUERY_RET=1 to activate CUX28010xx:16.CMD_RETL command!
      • CMD_RETS warning: use CUX28010xx:16.CMD_QUERY_RET=1 to activate CUX28010xx:16.CMD_RETS command!
      • Add them to unignore if you are able to handle the warnings.
    • Fix device has_sub_devices
    • Fix magic method issue with log_context in xml_rpc client
    • Improve error message if service is not available
    • Re-/Store last manual temperature of climate entity
  • Improve config_flow error messages
  • Remove deprecation warning (The deprecated argument hass was passed to verify_domain_control) of Home Assistant 2025.10.0 for Homematic(IP local)
  • Use of improved API for registering platform entity services from HA

Version 1.87.0 (2025-09-24)

What's Changed

  • Bump aiohomematic to 2025.9.4
    • Refactor CDP OperatingVoltageLevel
    • Refactor event method handling
    • Refactor decorators
      • Add log_context to @*_property
      • Add overloads to @*_property
      • Add overloads to @inspector
    • Add examples to naming documentation
    • Document how device, channel and data point names are created (docs/naming.md)
    • Remove dedicated @cached_property -> use @hm_property(cached=True) instead
    • Use dedicated loggers for event and performance logging
  • Add HmIP-STV to tri_state
  • Document how devices and entities are named (docs/naming.md); aligned with AIOhomematic docs
  • Ignore unconfigured entries

Version 1.86.0 (2025-09-02)

What's Changed

  • Bump aiohomematic to 2025.8.10
    • Improve documentation
      • Added docs/architecture.md describing high-level components (central, client, model, caches, support) and their interactions
      • Added data flow for XML-RPC/JSON-RPC, event handling, and data point updates
      • Added sequence diagrams for connect, device discovery, state change propagation
    • Add customization for HmIP-LSC
    • Avoid deadlocks within locks (cover)
    • Detailing the central status
    • Improve boundary logging und exception handling
    • Improve decorators
    • Improve fetch_all_device_data
    • Improve lock handling
    • Improve room assignment
    • Shield network I/O against cancellation
    • Validate custom datapoint definition on startup
  • Fix area/room assignment with enabled sub devices
  • Use greek small letter mu "\u03bc" instead of micro sign "\u00B5" for micro unit prefix

Version 1.85.2 (2025-08-07)

What's Changed

  • Bump aiohomematic to 2025.8.6
    • Do not send additional parameter in kwargs for events
    • Small performance improvements
    • Rename hahomematic to aiohomematic
  • Use parameter from datapoint for events
  • Rename custom_homematic to homematicip_local

Version 1.85.1 (2025-08-07)

What's Changed

  • Bump hahomematic to 2025.8.3
    • Simplify should_fire_data_point_updated_callback for calculated data points
    • Use slots

Version 1.85.0 (2025-08-01)

What's Changed

  • Bump hahomematic to 2025.7.7
    • Add default customization for (Deleting of obsolete entities/device might be required):
      • ELV-SH-SW1-BAT,
      • HmIP-WGT, HmIP-WGTC
      • HmIP-SMO230
    • Align exception naming
    • Enable OPERATING_VOLTAGE_LEVEL for HM-CC-RT-DN and HM-TC-IT-WM-W-EU
    • Fire updated events for calculated DPs when refreshed within a second
    • Refactor argument extraction from exceptions
    • Rename channel* to group* properties for cover, light and switch
  • Check uniqueness of instance name
  • Follow HA 2025.8: Use platform_data instead platform to avoid deprecation
  • Remove version const for hahomematic dependency check

Version 1.84.1 (2025-06-27)

What's Changed

  • Categorize diagnostic temperature sensors

Version 1.84.0 (2025-06-17)

What's Changed

  • Bump hahomematic to 2025.6.0
    • Add CustomDP valve for ELV-SH-WSM / HmIP-WSM
    • Add batteries for ELV-SH-TACO
    • Add button_lock to HmIP-DLD
    • Add operating voltage level to ELV-SH-WSM / HmIP-WSM
    • Add state channel to sub_device_channel mapping
    • Enable ACTUAL_TEMPERATURE on maintenance channel
    • Improve identify ip address
    • Improve sub_device_channel identification
    • Wait with PING/PONG handling until interface is initialized
  • Add valve platform
  • Add option to use sub devices to config flow/advanced options
  • Set suggested_display_precision for OPERATING_VOLTAGE to 1

Version 1.83.0 (2025-04-05)

What's Changed

  • Bump hahomematic to 2025.4.1
    • Limit text values to 255 characters
  • Add add_link and remove_link to actions
  • Add translation for HM-Sec-WDS states
  • Add options to all enums

Version 1.82.1 (2025-04-03)

What's Changed

  • Bump hahomematic to 2025.4.0
    • Create TLS context during module load

Version 1.82.0 (2025-03-28)

What's Changed

  • Bump hahomematic to 2025.3.0
    • Add HmIP-FCI1 and HmIP-FCI6 to batteries
    • Add vapor concentration and dew point to all device channels that support temperature and humidity
    • Clear session on auth failure
    • Ensure load_data_point_value usage for initial load
    • Fix OperatingVoltageLevel attributes: low_bat_limit, low_bat_limit_default
    • Ignore model on initial load (HmIP-SWSD, HmIP-SWD)
    • Ignore parameters on initial load, if not already fetched by rega script (ERROR*, RSSI*, DUTY_CYCLE, DUTYCYCLE, LOW_BAT, LOWBAT, OPERATING_VOLTAGE)
    • Remove @cache and @lru_cache annotations
    • Use @cached_property for expensive, one time calculated properties
    • Use enums for const parameter values

Version 1.81.2 (2025-02-05)

What's Changed

  • Bump hahomematic to 2025.2.5
    • Use value instead of default for low_bat_limit

Version 1.81.1 (2025-02-05)

What's Changed

  • Bump hahomematic to 2025.2.3
    • Add calculated data points for HM devices
    • Catch JSONDecodeError on load/save cache files
    • Catch get_metadata XMLRPC fault
    • Ignore devices with unknown battery
    • Remove python 3.12 for github tests and pylint
    • Set battery to UNKNOWN for HmIP-PCBS-BAT
    • Sort battery list for correct wildcard search
    • Use py 3.14 for mypy and pylint
  • Fix import from HA

Version 1.80.0 (2025-01-30)

What's Changed

  • Bump hahomematic to 2025.2.0
    • Add calculated data points:
      • ApparentTemperature
      • DewPoint
      • FrostPoint
      • OperatingVoltageLevel
      • VaporConcentration
    • Add config option to define the hm_master_poll_after_send_intervals
    • Add LOW_BAT_LIMIT
    • Add WEEK_PROGRAM_POINTER for bidcos climate devices
    • Add climate presets based on WEEK_PROGRAM_POINTER
    • Define schedule_channel_address for HM schedule usage
    • Don't read on unavailable devices
    • Enable schedule on hm thermostat
    • Fix usage of master dps for bidcos climate devices
    • Improve connection error handling
    • Poll master dp values 5s after send for bidcos devices
    • Refactor parameter_visibility
    • Rename paramset_key to paramset_key_or_link_address for put_paramset
    • Use temporary values where push is not supported
  • Add support for CalculatedDataPoint
  • Add translations to apparent_temperature

Version 1.79.1 (2025-01-21)

What's Changed

  • Bump hahomematic to 2025.1.11
    • Cleanup cache file clear
    • Delay start of scheduler until devices are created
    • Rename instance_name to central_name
    • Slugify cache file name
  • Compare keys against sysvar names with wildcards

Version 1.79.0 (2025-01-17)

What's Changed

  • Bump hahomematic to 2025.1.10
    • Improve defaultdict usage
    • Load cached files as defaultdicts
    • Use Mapping instead of dict where possible
  • Delete cache
    • Fix a problem with new devices, due to an issue in 1.78.0

Version 1.78.1 (2025-01-14)

What's Changed

  • Bump hahomematic to 2025.1.7
    • Fix KeyError on uninitialised dict

Version 1.78.0 (2025-01-11)

What's Changed

  • Bump hahomematic to 2025.1.5
    • Consider heating value type when calculating hvac action
    • Fix issue with programs/sysvars on backend restart
    • Identify channel of a system variable if name ends with channel address
    • Refactor create_* methods:
    • Speedup wildcard lookup
  • Add entity descriptions for (some statistics might be recalculated):
    • svHmIPRainCounter*, svHmIPRainCounterToday*, svHmIPRainCounterYesterday*
    • svHmIPSunshineCounter*, svHmIPSunshineCounterToday*, vHmIPSunshineCounterYesterday*
    • svEnergyCounter*, svEnergyCounterFeedIn*
  • Device related sysvars are now shown under the device instead of the hub

Version 1.77.0 (2024-12-29)

What's Changed

  • Bump hahomematic to 2025.1.0
    • Remove get-/set_install_mode
  • Add switch to toggle the state of CCU programs
  • Remove action set_install_mode

Version 1.76.1 (2024-12-27)

What's Changed

  • Bump hahomematic to 2024.12.13
    • Add program switch
  • Fix double prefix for programs

Version 1.76.0 (2024-12-27)

Breaking changes

  • Remove unignore file import -> Use the UI option
  • Rename marker for extended system variables from hahm to HAHM to better align with other markers -> Rename the marker in the sysvar description from hahm to HAHM

What's Changed

  • Bump hahomematic to 2024.12.12
    • Add periodic checks for device firmware updates
    • Ensure service and alarm messages are always displayed
    • Extend element_matches_key search
    • Fix remove last sysvar/program
    • Log debug if variable is too long
    • Refactor scheduler to use just one task
    • Remove default markers from description
    • Remove sv prefix from sysvar / p prefix from program
    • Remove unignore file import
    • Rename create methods
    • Rename marker for extended system variables from hahm to HAHM to better align with other markers
    • Start json_rpc client only for ccu
    • Support markers for sysvar/program selection
  • Add advanced config options to define markers for programs and sysvars. This means that not all programs/sysvars are retrieved except the internal ones.
  • Fix warning device_registry.async_get_or_create referencing a non existing via_device
  • Move periodic checks for device firmware updates to lib
  • Reformat line length to 120
  • Use existing config in config flow interface page

Version 1.75.1 (2024-12-15)

Noteworthy

  • The repositories custom_homematic, hahomematic and pydevccu have been transferred from danielperna84 to sukramj
  • Old urls are automatically redirected

What's Changed

  • Remove danielperna84 from links after repository transfer to sukramj

Version 1.75.0 (2024-12-15)

Noteworthy

  • Fixes issue with special characters in sysvar/program descriptions

What's Changed

  • Bump hahomematic to 2024.12.5
    • Add method cleanup_text_from_html_tags
    • Add missing encoding to unquote
    • Decode received sysvar/program descriptions
    • Ensure default encoding is ISO-8859-1 where needed
    • Limit number of concurrent mass operations to json api to 3 parallel executions
    • Replace special character replacement by simple UriEncode() method use by @jens-maus

Version 1.74.0 (2024-12-10)

New Features

  • Experimental support for CUxD and CCU-Jack devices
    • The default setup uses a 15s polling interval
    • Optional setup with MQTT for CuXD and CCU-Jack virtual Devices is possible to use push events.
    • Please read the docs for more information.
    • Please use the discussion forum for feedback

What's Changed

  • Bump hahomematic to 2024.12.2
    • Catch orjson.JSONDecodeError on faulthy json script response
    • Use kelvin instead of mireds for color temp
  • Enable support for CuXD and CCU-Jack (15s polling interval)
  • Enable MQTT support for CuXD, CCU-Jack and system variable refresh (MQTT is needed in CCU description)
  • Return color temperature in kelvin

Version 1.73.0 (2024-12-06)

What's Changed

  • Bump hahomematic to 2024.12.0
    • Add BidCos-Wired to list of primary interface candidates
    • Add TIME_OF_OPERATION to smoke detector
    • Add description to sysvar and program
    • Add description to sysvar and program
    • Enable central link management for HmIP-wired
    • Make sysvars eventable
    • Remove obsolete try/except in homegear client
    • Reset temporary values before write
    • Switch multiplier from int to float
    • Use more constants for cover and light
  • Add action get_variable_value
  • Add option to receive sysvar changes over mqtt
  • Add translations for TIME_OF_OPERATION

Version 1.72.0 (2024-11-21)

What's Changed

  • Bump hahomematic to 2024.11.8
    • Add missing @service annotations
    • Add performance measurement to @service
    • Don't re-raise exception on internal services
    • Move @service
    • Remove @service from abstract methods
  • Expand list of unrecorded attributes

Version 1.71.0 (2024-11-19)

What's Changed

  • Bump hahomematic to 2024.11.7
    • Add basic support for json clients
    • Add data_point_path event
    • Add getDeviceDescription, getParamsetDescription, listDevices, getValue, setValue, getParamset, putParamset to json_rpc
    • Add get_data_point_path to central
    • Add interface(id) to performance log message
    • Add interfaces_requiring_periodic_refresh to config
    • Add option to refresh data by interface
    • Add periodic data refresh to CentralUnitChecker for some interfaces
    • Add sysvar/program refresh to scheduler
    • Add xml_rpc support flag to client
    • Allow empty port for some interfaces
    • Do reconnect/reload only for affected interfaces
    • Extend DP_KEY with interface_id
    • Fix returned version of client
    • Ignore unknown interfaces
    • Improve store tmp value
    • Maintain data_cache by interface
    • Reduce MAX_CACHE_AGE to 15s
    • Remove clients for not available interfaces
    • Rename event to data_point_event
    • Run periodic tasks with an individual interval
    • Store temporary value for polling client data points
    • Store temporary value for sysvar data points
  • Add mqtt support
  • Add new option to UI (but disabled)
  • Remove sysvar/program refresh from scheduler

Version 1.70.0 (2024-11-06)

What's Changed

  • Bump hahomematic to 2024.11.0
    • Improve on_time usage
  • Fix copy schedule

Version 1.69.0 (2024-10-27)

What's Changed

  • Bump hahomematic to 2024.10.17
    • Fire interface event, if data could not be fetched with script from CCU
    • Optimize MASTER data load
    • Rename model to better distinguish from HA
    • Use enum for json/event keys
  • Add missing action icons
  • Follow backend changes
  • Use enum for services

Version 1.68.1 (2024-10-26)

What's Changed

  • Bump hahomematic to 2024.10.14
    • Use version from module hahomematic
  • Add check if Homematic(IP) Local for OpenCCU uses the expected version of hahomematic

Version 1.68.0 (2024-10-24)

What's Changed

  • Bump hahomematic to 2024.10.13
    • Add central link methods to click event
    • Add create_central_links and remove_central_links to device and central
    • Add operation_mode to channel
    • Add reportValueUsage, addLink, removeLink and getLinks to client
    • Add version to code
    • Align method parameters with CCU
    • Check if channel has programs before deleting links
    • Disable climate temperature validation when turning off
    • Fix wrong channel assignment for HmIP-DRBLI4
    • Use PRESS_SHORT for reportValueUsage
  • Add actions to manage central links

Version 1.67.0 (2024-10-15)

What's Changed

  • Bump hahomematic to 2024.10.8
    • Add MIN_MAX_VALUE_NOT_RELEVANT_FOR_MANU_MODE, OPTIMUM_START_STOP and TEMPERATURE_OFFSET to climate
    • Add basic climate schedule services
    • Add config option for max read workers
    • Add services to copy climate schedules
    • Add simple climate schedule service to store profiles
    • Convert schedule time from minutes to hh:mm
    • Disable collector for stop events
    • Fix rx_mode lazy_config
    • Improve logging when raising exception
    • Improve profile validation
    • Log exception at the most outer service
    • Make DEFAULT and UPDATEABLE optional due to homegear support
    • Make validation for climate schedules optional
    • Move context var to own module
    • Raise exception on set_value, put_paramset
    • Remove command queue
    • Rename climate enums and constants to better distinguish from HA
    • Reuse existing dict types
    • Simplify entity imports
    • Use regex to identify schedule profiles
  • Add action to fetch climate device schedule
  • Add action to store climate device schedule (experimental)
  • Add action to copy climate schedules
  • Add option to config flow/advanced to listen on all ip addresses
  • Add OPTIMUM_START_STOP and TEMPERATURE_OFFSET to climate attributes
  • Fix issue with duplicate device addresses over multiple backends
  • Raise HomeAssistantError on service exception
  • Remove periodic master entity update
  • Rename service to action in README.md

Version 1.66.0 (2024-09-21)

Breaking change:

  • Use service put_link_paramset to manipulate direct connections
  • Use service get_link_paramset to read direct connections
  • Remove customization (it's not a pure dimmer) for ELV-SH-WUA / HmIP-WUA. Remove obsolete entities if necessary

What's Changed

  • Bump hahomematic to 2024.9.12
    • Add bind_collector to all relevant methods with option to disable it
    • Add config option for listen ip address and port
    • Add check for link paramsets
    • Add getLinkPeers XmlRPC method
    • Add missing PayloadMixin
    • Add name to channel
    • Add paramset_key to entity_key
    • Adjust payload and path
    • Avoid permanent cache save on remove device
    • Catch bind address errors of xml rpc server
    • Check rx_mode
    • Do not create update entities that are not updatable (manually remove obsolete update entities)
    • Ensure only one load/save of cache file at time
    • Identify bind_collector annotated methods
    • Improve paramset key check
    • Load all paramsets
    • Mark externally accessed services with service_call if bind_collector is not appropriate
    • Mark only level as relevant entity for DALI
    • Only try device update refresh if device is updatable
    • Refactor device/entity to extract channel
    • Refactor get_events, get_new_entities
    • Refactor update entity
    • Remove CED for ELV-SH-WUA / HmIP-WUA
    • Remove unnecessary checks
    • Rename value_property to state_property
    • Replace device_type by model
    • Separate enable/disable sysvar and program scan
    • Shorten names
    • Small definition fix for DALI
    • Switch typing of paramset_key from str to ParamsetKey
    • Use TypedDict for device_description
    • Use TypedDict for parameter_data
    • Use channel instead of channel_addresses
    • Use paramset_description from channel
    • Use validator for local schema
  • Add advanced options to config flow
  • Add option to enable/disable program scan to advanced options
  • Add services get_link_peers, get_link_paramset, put_link_paramset
  • Improve german descriptions by @baxxy13
  • Use domain alias
  • Use select for paramset_key with actions calls
  • Use selector for rx_mode in service description

Version 1.65.0 (2024-08-25)

  • Bump hahomematic to 2024.8.13
    • Add CED for ELV-SH-WUA / HmIP-WUA
    • Add UN_IGNORE_WILDCARD to get_parameters
    • Add additional validation on config parameters
    • Avoid excessive memory usage in cache
    • Check/convert values of manual executed put_paramset/set_value
    • Cleanup DeviceDescriptionCache
    • Cleanup ParamsetDescriptionCache
    • Make HEATING_COOLING visible for thermostats
    • Make load only relevant paramset descriptions configurable
    • Refactor directory handling
    • Refactor get_parameters for unignore_candidates
    • Use only relevant IP for XmlRPC Server listening on
  • Add HEATING_COOLING translations
  • Clear cache on schema migration
  • Keep optional values in config flow
  • Load al paramset descriptions into cache
  • Make unignore configurable in the UI
  • Move mapping access to control config
  • Refactor config flow. some options are now on the advanced page.
  • Use SELECTORs in config flow
  • Validate put_paramset/set_value against device descriptions
  • Write optional parameters in Config Flow only when filled

Version 1.64.0 (2024-08-05)

  • Bump hahomematic to 2024.8.1
    • Add button lock CE
    • Reduce data load, if only device description is updated
    • Allow undefined generic entities besides CE
  • Remove service delete_device. Use delete on the device entry instead
  • Fix triggers and action when using meta integrations
  • Add translation to button lock
  • Add device class to RSSI

Version 1.63.1 (2024-06-22)

  • Use entry.runtime_data instead of hass.data
  • Use HassKey for hass.data

Version 1.63.0 (2024-06-03)

  • Bump hahomematic to 2024.6.0
    • Fix address for bidcos wired virtual device
    • Catch TypeError on SysVar import
    • Add time units to HmIP-RGBW calls
  • Add entity registry migration for fixed hmw entries

Version 1.62.0 (2024-05-15)

  • Bump hahomematic to 2024.5.4
    • Improve callback register/unregister
    • Move command_queue handling from device to channel
    • Add level sensors to cover/blind
    • Allow changing level or tilt while blind is moving by @sleiner
    • Fix value assignment to lock enums
    • Set open tilt level back to 100%
    • Use PEP 695 typing
    • Enable CE visible entities by default
  • Add individual translations for LEVEL
  • Adjust entity activation

Version 1.61.0 (2024-05-05)

  • Bump hahomematic to 2024.5.0
    • Make some items from value_property to property
    • Rename callbacks
    • Fix Homegear reconnect
    • Add COLOR_BEHAVIOUR to HmIP-BSL
  • Ensure unload of platform services

Version 1.60.1 (2024-04-26)

  • Add missing parameter for set_cover_combined_position

Version 1.60.0 (2024-04-24)

Breaking change:

  • tilt level is set to 50% to be open instead of 100%

Changes:

  • Bump hahomematic to 2024.4.12
    • Rename loop_safe to loop_check
    • Reduce loop_check to minimum
    • Update ruff rules / requirements
    • Make entity event async
    • Extract looper from central and reuse for json/xml_rpc
    • Move loop_check to async_support
    • Record last value send
    • Decompose combined parameter
    • Return affected entity keys for service calls
    • Add callback to unregister on register return
    • Add option to wait for set_value/put_paramset callback
    • Add wait_for_callback to collector
    • Wait for target value in wait_for_state_change_or_timeout
    • Add command queue
    • Move open/close from IpBlind to Blind
    • Use central_client_factory fixture
    • Ensure central.stop() is called in tests
    • Fix missing param in unregister_entity_updated_callback
    • Set open tilt level to 50%
  • Add option to services to wait for set_value/put_paramset callback
  • Add wait_for_callback to set_cover_combined_position

Version 1.59.0 (2024-04-09)

  • Bump hahomematic to 2024.4.6
    • Remove support for python 3.11
    • Use more list comprehension
    • Customize HmIP-DRG-DALI
    • Fix register refreshed entity
    • Refactor callback naming
    • Restructure check_connection
    • Make xml_rpc event async
    • Block central stop until tasks are finished
    • Unify entity update/refresh events
    • Remove unused callback from tests
    • Add loop_safe annotation
    • Remove entity_data_event_callback
    • Make system_event_callback loop aware
  • Use more list comprehension
  • Add icons to services
  • Use ConfigFlowResult
  • Use thread-safe method schedule_update_ha_state to write ha state
  • Add missing callback annotations
  • Add async prefix to callback annotated methods
  • Move state classes from total to total_increasing

Version 1.58.0 (2024-03-10)

  • Bump hahomematic to 2024.3.1
    • Add additional parameter to HBW-LC4-IN4-DR
  • Fix return zero value for sysvar number

Version 1.57.1 (2024-03-05)

  • Fix device_class for GAS_FLOW

Version 1.57.0 (2024-03-01)

  • Bump hahomematic to 2024.3.0
    • Add HBW-LC4-IN4-DR
  • Remove unnecessary async
  • Add GAS_* parameters of HmIP-ESI
  • Avoid some HA deprecation warnings

Version 1.56.0 (2024-02-15)

  • Bump hahomematic to 2024.2.4
    • Add option to un ignore mechanism to ignore the automatic creation of custom entities by device type
    • Fix mapping for HBW-LC-RGBWW-IN6-DR
    • Fix mapping of HmIP-HDM
    • Group entities to sub devices / base channels
    • Add mapping for fixed color channel
    • Refactor entity name data

Version 1.55.0 (2024-02-02)

  • Bump hahomematic to 2024.2.1
    • Store old_value in entity model
    • Move product group identification to client
    • Add new pattern for unignore (parameter:paramset_key@device_type:channel_no)
    • Allow all as unignore parameter for device_type and channel_no
    • Remove old complex format for unignore
    • Remove deprecation warnings for py3.12
    • Fix/improve unignore search
    • Accept float as input for int numbers
  • Use state_class total instead of total_increasing for sensors
  • Add required ClimateEntityFeature TURN_OFF/TURN_ON for HA2024.2
  • Replace icon_fn by icon translations for HA 2024.2
  • Fix via_device in device_info

Version 1.54.0 (2024-01-12)

  • Bump hahomematic to 2024.1.7
    • Fix unignore doc and improve unignore tests
    • Move unignore check to entity
    • Reload master data after config pending event
    • Allow direct_call without cache wait time
  • Remove whitespace from name end

Version 1.53.0 (2024-01-09)

  • Bump hahomematic to 2024.1.5
    • Add duration=111600 when ramp_time used for HmIP-RGBW
    • Allow ordered execution of collector paramsets
    • Only consider relevant entities for HmIP-RGBW
    • Remove effects from HmIP-RGBW when in PWM mode

Version 1.52.0 (2023-12-19)

  • Bump hahomematic to 2023.12.4
    • Add HB-LC-Bl1-Velux to cover
  • Avoid mutating entity descriptions

Version 1.51.0 (2023-12-17)

  • Bump hahomematic to 2023.12.3
    • Save all rooms to entity model
    • Set attributes of dataclasses
    • Add another reason to ping pong mismatch
  • Fix entity names without translations
  • Add some descriptions to config flow

Version 1.50.0 (2023-12-01)

  • Bump hahomematic to 2023.12.1
    • Add support for away_mode and classic Homematic thermostats
    • Collect config validation errors
  • Add validator to instance name (@ is not allowed)
  • Use collected config validation errors
  • Catch more generic connection exceptions

Version 1.49.0 (2023-11-21)

  • Bump hahomematic to 2023.11.4
    • Use last_refreshed for validation check
    • Improve ping/pong mechanism. Fire event, if mismatch is 15 within 5 Minutes

Version 1.48.0 (2023-11-01)

  • Bump hahomematic to 2023.10.14
    • Add class method default_platform
    • Cleanup cover
    • Fix service enable_away_mode_by_calendar
    • Rename fire events
    • Replace last_updated by last_refreshed
    • Switch formatting from black to ruff-format
  • Add device address to device info

Version 1.47.0 (2023-10-11)

  • Bump hahomematic to 2023.10.12
    • Add filter options to device.get_entity*
    • Align method signatures
    • Fix register_update_callback for update
    • Ignore switch to sensor if un ignored
    • Register external sources with custom identifier
    • Remove WrapperEntity
    • Remove get_update_entities
    • Remove subscribed_entity_unique_identifiers
    • Rename custom_identifier to custom_id
    • Rename unique_identifier to unique_id
    • Send relevant entities instead of devices in callback
    • Update un ignore documentation
  • Improve typing within async_setup_entry
  • Merge dicts to collect active entities
  • Move statistics collection to diagnostics module
  • Use backend methods instead of local wrappers
  • Use filtering backend methods

Version 1.46.0 (2023-10-10)

  • Bump hahomematic to 2023.10.7
    • Adjust typing after move to more enums
    • Add measure_execution_time to writing methods
    • Fix send sysvar #1249
    • Add HmIPW-SCTHD

Version 1.45.0 (2023-10-07)

  • Bump hahomematic to 2023.10.6
    • Add started property to central
    • Rename:
      • value_list -> values
      • effect_list -> effects
    • Add more checks to get/set value from/tp values
    • Use more tuple instead of list
    • Cleanup code
    • Collect subscribed entities in central
    • Add faultCode and faultString to xmlrpc.client.Fault
    • Use Mapping/Set for readonly access
    • Use enum for CE fields
    • Use Parameter for ED
  • Follow backend changes

Version 1.44.1 (2023-10-04)

  • Make default values configurable in ControlConfig

Version 1.44.0 (2023-10-04)

  • Bump hahomematic to 2023.10.4
    • Code cleanup
      • Remove Hm prefix from enums
      • Use enum for parameters
      • Use more existing constants
    • Use enum for JsonRPC and XmlRPC methods
    • Get supported JsonRPC and XmlRPC methods and check against used methods
    • Cleanup exception handling
    • Catch 'internal error' on get_auth_enabled. Relevant for for CCU2 users
  • Follow backend changes
  • Remove recorder platform
  • Add test for recorder _unrecorded_attributes

Version 1.43.1 (2023-09-30)

  • Bump hahomematic to 2023.9.8
    • Improve caching
      • Cleanup cache naming
      • Remove max_age from most method signatures
      • Simplify data cache
      • Rename some cache methods
    • Remove attr prefix

Version 1.43.0 (2023-09-29)

  • Bump hahomematic to 2023.9.7
    • Cleanup light code
    • Use more enums for climate, cover, lock
    • Use TypedDict for light, siren args
    • Update ReGa-Script fetch_all_device_data.fn by @Baxxy13
    • Parameterize call to fetch_all_device_data.fn
    • Simplify json rpc post code
    • Improve for ConnectionProblemIssuer json rpc
    • Improve handle_exception_log
    • Avoid repeated logs
    • Add check to BaseHomematicException
    • Reduce log level to 'warning' for get_all_device_data 'JSONDecodeError' exceptions
  • Align isort setup with hass
  • Remove recorder platform

Version 1.42.0 (2023-09-22)

  • Bump hahomematic to 2023.9.4
    • Re add channel 7 for HmIPW-WRC6
    • Reduce log level for exceptions in fetch_paramset_description
    • Refactor get_paramset_description
    • Filter SSLErrors by code
    • Cleanup logger
    • Refactor client and central modules
  • Adopt changes in HA 2023.9
  • Use more shorthand attributes
  • Add _unrecorded_attributes

Version 1.41.0 (2023-09-03)

  • Bump hahomematic to 2023.8.3 - 2023.9.0
    • Add SSLError to XmlRpcProxy and JsonRpcAioHttpClient
    • Add decorator to measure function execution time
    • Add ping pong tests
    • Align sslcontext creation with Home Assistant
    • Convert StrEnum and IntEnum in proxy
    • Extend HmIPW-WRC6 implementation
    • Fix get_all_system_variables return value
    • Improve testing
    • Make integration more robust against json result failures
    • Make start_direct a config option
    • Optimize get readable entities for MASTER
    • Reduce visibility of local constants
    • Refactor cover api
    • Refactor to more enum usage
    • Remove obsolete comments
    • Remove use_caches and load_un_ignore from central config
    • Restructure test helper
    • Update project setup
  • Improve custom component testing
    • Add Github flows for pylint and tests
    • Add infrastructure for platform tests
    • Increase config flow coverage
    • Make Homematic entities mockable
  • Avoid init_central
  • Cleanup scheduler code
  • Increase master scan interval to 1h
  • Make tilt_postion optional for set_cover_combined_position
  • Rename some methods for consistency

Version 1.40.1 (2023-08-06)

  • Bump hahomematic to 2023.8.1
    • Prepare backend for HA issue usage
  • Bump hahomematic to 2023.8.2
    • Improve exception and log handling
  • Fix DE service name translation
  • Use issues instead of persistent notifications for interface events

Version 1.40.0 (2023-07-29)

  • Bump hahomematic to 2023.7.4
    • Add identifier to device
    • Rename ENTITY_NO_CREATE to NO_CREATE
    • Ignore click events on plugs
  • Bump hahomematic to 2023.7.5
    • Add SystemInformation to client api
    • Send credentials on XmlRPC api only when authentication is enabled in CCU
  • Bump hahomematic to 2023.7.6
    • Refactor Json error handling / logging
    • Use ping pong only for CCU
  • Bump hahomematic to 2023.8.0
    • Remove only the starting device name from entity name
    • Remove title from program and sysvar names
  • Remove support for python 3.10
  • Add available_interfaces to SystemInformation
  • Use identifier from device
  • Add event entities
  • Remove unmaintained NL translation
  • Add service translations
  • Remove click_events from logbook
  • Add SystemInformation to diagnostics

Version 1.39.2 (2023-07-13)

  • Bump hahomematic to 2023.7.3
    • Fire interface event about ping/pong mismatch
    • Add message to fire_interface_event
  • Refactor event usage
  • Add option to config flow to control system notifications (controls CALLBACK and PINGPONG notifications)

Version 1.39.1 (2023-07-12)

  • Bump hahomematic to 2023.7.1
    • Log an error about the ping/pong count mismatch
  • Bump hahomematic to 2023.7.2
    • Add new Events PRESS_LOCK and PRESS_UNLOCK for HmIP-WKP
  • Add entity descriptions and translations for HmIP-WKP

Version 1.39.0 (2023-07-07)

  • Bump hahomematic to 2023.7.0
    • Project file maintenance
  • Add services that return data:
    • get_device_value
    • get_paramset
  • Fix entity state translations

Version 1.38.0 (2023-07-02)

  • Guard against failure due to future HA api changes related to CC specific usage
  • Make entity name translation more verbose

Version 1.37.6 (2023-06-29)

  • Fix error with names before HA 2023.7 pt2

Version 1.37.5 (2023-06-29)

  • Fix error with names before HA 2023.7

Version 1.37.4 (2023-06-23)

  • Bump hahomematic to 2023.6.1
    • Fix tunable white support for hmIP-RGBW
    • Avoid creating entities that are not usable in selected device operation mode for hmIP-RGBW
    • Update requirements
  • Add missing comma, to fix entity description
  • Remove device class from percentage entity description

Version 1.37.3 (2023-06-02)

  • Bump hahomematic to 2023.6.0
    • Update requirements
    • Do not create update entities for virtual remotes
    • Cleanup FIX_UNIT_BY_PARAM
  • Fix latest version of update entity
  • Use VALVE_STATE entity description only for Bidcos devices

Version 1.37.1 (2023-05-26)

  • Display updates only if update is ready for installation on device

Version 1.37.0 (2023-05-15)

  • Bump hahomematic to 2023.5.2
    • Refactor device description cache handling
    • Add device firmware update handling
  • Add device firmware update entity
  • Add 'Update device firmware data' service
  • Add 6h schedule for device firmware data refresh
  • Avoid overriding hostname by ssdp data

Version 1.36.0 (2023-05-01)

  • Bump hahomematic to 2023.5.0
    • Remove unsupported on_time / refactor HmIP-RGBW

Version 1.35.0 (2023-04-28)

  • Bump hahomematic to 2023.4.5
    • Update requirements
    • Add HmIP-RGBW
  • Fix supported_color_modes for light

Version 1.34.2 (2023-04-24)

  • Bump hahomematic to 2023.4.2
    • Update requirements
    • Fix cover (HDM2) no longer working

Version 1.34.1 (2023-04-16)

  • Bump hahomematic to 2023.4.0
    • Update requirements
    • Add log message to negative password check
  • Use positional args
  • Fix Cannot parse hex-string value

Version 1.34.0 (2023-04-05)

New features

  • Add service "set cover combined position"
  • Add name translation

All changes:

  • Bump hahomematic to 2023.3.1
    • Add name to tasks
    • Improve typing
    • Move callback calls into exception block
    • Remove avoidable usage of deepcopy
    • Add dependabot
    • Update requirements
    • Drop pyupgrade, autoflake, flake8 in favor of ruff
    • Refactor cover, add set_combined_position
  • Update minimum required version
  • Add service "set cover combined position"
  • Add name translation

Version 1.33.1 (2023-03-03)

All changes:

  • Bump hahomematic to 2023.3.0
    • Update ruff, adjust module aliases
    • Fix spamming CCU logs with errors (#981)
  • Fix import
  • Update minimum required version

Version 1.33.0 (2023-02-26)

All changes:

  • Bump hahomematic to 2023.2.11
    • Update ruff, fix comments
    • Switch to orjson
    • Fix climate: compare set temperature to target temperature

Version 1.32.0 (2023-02-23)

Breaking change

-Remove set_device_value_raw: use set_device_value instead (See changelog release 1.27.1)

New features

  • Enable HmIP-SMSD as siren

All changes:

  • Bump hahomematic to 2023.2.10

    • Use sets for central callbacks
    • Add get_all_entities for device
  • Enable HmIP-SMSD as siren

  • Add pre-commit checks and cleanup repo

  • Remove set_device_value_raw

Version 1.31.0 (2023-02-18)

New features

All changes:

  • Bump hahomematic to 2023.2.9
    • Fix property types
    • Ensure modules for platforms are loaded
    • Use local dicts for device lists
    • Clear central data cache if identified as outdated
    • Avoid redundant cache loads within init phase
    • Extract value preparation from send_value
    • Differentiate between input and default parameter type
    • Fix asyncio-dangling-task (RUF006)
  • Add typed dict for light and siren
  • Bump hahomematic to 2023.2.8
    • Add project setup script
    • Add entity_data event
    • Add payload mixin
    • Cleanup module dependencies
    • Use cache decorators for some high-traffic methods
    • Allow that channel_no could be None
    • Add and use get_channel_address
    • Add HmIP-SWSD as siren
  • Add device_class to doorbell if binary behavior is set
  • Align packages to backend lib
  • Align to siren backend changes
  • Used typed dicts for light and siren
  • Update translation keys

Version 1.30.2 (2023-02-08)

All changes:

  • Remove native_precision for Concentration of HmIP-SCTH230

This change is necessary because native_precision has been swapped for suggested_display_precision without a deprecation period in the HA core. Before switching to HA 2023.3, all CC users who use version 1.28.0 (or greater) must therefore update. Rounding support for Concentration of HmIP-SCTH230 will be re-added with HA 2023.3

Version 1.30.1 (2023-02-08)

New features

All changes:

  • Bump hahomematic to 2023.2.7
    • Disable validation of state change for action and button
    • Check if entity is writable on send

Version 1.30.0 (2023-02-07)

New features

All changes:

  • Bump hahomematic to 2023.2.6
    • Add missing bind_collector
    • Add more Final typing
    • Add option to collector to disable put_paramset
    • Add on_time Mixin to temporary store on_time
  • Align to backend lib

Version 1.29.0 (2023-02-06)

New features

  • Add virtual channels for HmIP cover/blind

All changes:

  • Bump hahomematic to 2023.2.5
    • Add comments to parameter_visibility
    • Use put_paramset only when there is more than one parameter to sent
    • Use only one implementation for garage doors (HO/TM)
    • Avoid backend calls if value/state doesn't change
      • If an entity (e.g. switch) has only one parameter that represents its state, then a call to the backend will be made, if the parameter value sent is not identical to the current state.
      • If an entity (e.g. cover, climate, light) has multiple parameters that represent its state, then a call to the backend will be made, if one of these parameter values sent is not identical to its current state.
      • Not covered by this approach:
        • platforms: lock and siren.
        • services: stop_cover, stop_cover_tilt, enable_away_mode_*, disable_away_mode, set_on_time_value
        • system variables
    • Add virtual channels for HmIP cover/blind:
      • Channel no as examples from HmIP-BROLL. The implementation of the first actor channel (4) remains unchanged, which means that this channel (4) shows the correct cover position from sensor channel (3). The other actor channels (5+6) are generated as initially deactivated and only use the cover position from their own channel after activation.
  • Fix channel 0 not working for put_paramset

Version 1.28.0 (2023-02-01)

All changes:

  • Bump hahomematic to 2023.2.1
    • Separate check for parameter is un_ignored based on if it should be hidden or not
  • Bump hahomematic to 2023.2.0
    • Log validation exceptions in central
    • Add typing to decorators
  • Bump hahomematic to 2023.1.8
    • Ensure the signal handler gets called at most once by @mtdcr
    • Fix stop central, if another central is active on the same XmlRPC server
    • JsonRpcAioHttpClient: Allow empty password by @mtdcr
    • Remove VALVE_STATE from HmIPW-FALMOT-C12
    • Remove put_paramset from custom_entity
    • Remove set_value, put_paramset from central
    • Remove support for python 3.9
    • Remove to int converter for HmIP-SCTH230 CONCENTRATION
    • Replace old-style union syntax
    • Validate password with regex (warning only!)
  • Add native_precision (=0) for CONCENTRATION
  • Check password on config flow validation
  • Limit services to own integration
  • Replace old-style union syntax
  • Use exception types from backend
  • Use kwargs in callbacks

Version 1.27.2 (2023-01-26)

All changes:

  • Remove device class GAS from GAS_POWER (limitation of HA)
  • Replace async_setup_platforms by async_forward_entry_setups in __init__.py
  • Fix put_paramset for HM MASTER paramset

Version 1.27.1 (2023-01-XX)

New features

  • Add additional parameter device_address to services

All changes:

  • Bump hahomematic to 2023.1.7
    • Add a new custom entity type for windows drive
    • Return True if sending service calls succeed
    • Aggregate calls to backend
    • Fix HmIP-MOD-TM: inverted direction
  • Add additional parameter device_address to services:
    • force_device_availability
    • set_device_value
    • put_paramset
  • Deprecate service set_device_value_raw. Will be removed with HA 2023-03. Seitch to service set_device_value instead.
  • Follow garage changes from backend

Version 1.27.0 (2023-01-20)

New features

  • Add LED_STATUS to HM-OU-LED16

All changes:

  • Bump hahomematic to 2023.1.5
    • Remove LOWBAT from HM-LC-Sw1-DR
    • Sort lists in parameter_visibility.py
    • Replace custom entity config data structure by CustomConfig
    • Allow multiple CustomConfigs for a hm device
    • Add ExtendedConfig to custom entities
    • Cleanup test imports
    • Increase the line length to 99
    • Add ExtendedConfig and use for additional_entities
    • Remove obsolete ED_ADDITIONAL_ENTITIES_BY_DEVICE_TYPE from entity_definition
    • Add LED_STATUS to HM-OU-LED16
  • Fix: SysVars enabled (should be disabled) on initial setup
  • Add model and version to service information
  • Remove duplicate logbook entry for device_availability
  • Use old value of SYSVAR_SCAN_ENABLED in options flow

Version 1.26.5 (2023-01-16)

  • Fix display of logbook events

Version 1.26.4 (2023-01-16)

New features

  • Update color_conversion threshold (HmIP-BSL) by @guillempages

All changes:

  • Bump hahomematic to 2023.1.4
    • Remove obsolete parse_ccu_sys_var
    • Add helper, central tests
    • Add more tests and test based refactorings
    • Reduce backend calls and logging during lost connection
    • Update color_conversion threshold by @guillempages
  • Fix name in homematic.key_press events

Version 1.26.2 (2023-01-13)

New features

  • Add device availability and error to logbook

All changes:

  • Bump hahomematic to 2023.1.3
    • Unify event parameters
    • Refactor entity.py for better event support
    • Fix wrong warning after set_system_variable
    • Add validation to event_data
  • Reassign event parameters in control_unit
  • Add device availability and error to logbook

Version 1.26.1 (2023-01-09)

New features

  • Remove LOWBAT from HM-LC-Sw1-Pl, HM-LC-Sw2-FM
  • Remove OPERATING_VOLTAGE from HmIP-BROLL, HmIP-FROLL
  • Use actions and buttons for device actions

All changes:

  • Bump hahomematic to 2023.1.2
    • No longer create ClientSession in json_rpc_client for tests
    • Add backend tests
    • Use mocked local client to check method_calls
    • Remove sleep after connection_checker stops
    • Remove LOWBAT from HM-LC-Sw1-Pl, HM-LC-Sw2-FM
    • Simplify entity de-/registration
    • Refactor add/delete device and add tests
    • Add un_ignore_list to test config
    • Allow unignore for DEVICE_ERROR_EVENTS
    • Remove OPERATING_VOLTAGE from HmIP-BROLL, HmIP-FROLL
    • Remove loop from test signature
    • Cleanup ignore/unignore handling and add tests
  • Move delete device logic to central
  • Use actions and buttons for device actions

Version 1.26.0 (2023-01-02)

This release requires HA >= 2023.1

Breaking changes

  • Rename climate presets from 'Profile ' to 'weekprogram': HA now allows translations of custom preset modes. The internal preset mode has been renamed from 'Profile ' to 'weekprogram'. If service climate.set_preset_mode was used with values like "Proflle 1", these automations and scripts need to be edited and use "week_program_1" instead. This preset mode is now displayed as "WP 1" to better accommodate the available space in the UI.

New features

  • Make sysvar_scan_interval configurable The integration can now be reconfigured to use a shorter or longer interval between sysvar scans. The sysvar scan can also be disabled, if not needed.

All changes:

  • Bump hahomematic to 2023.1.0
    • Remove empty unit for numeric sysvars
    • Fix native device units
    • Rename climate presets from 'Profile ' to 'weekprogram'
    • Add un_ignore list to central config
    • Fix entity_definition schema
    • Rename cache_dict to persistent_cache
    • Reduce access to internal complex objects for custom_component
    • Allow to disable cache
    • Allow to disable un_ignore load
    • Add local client
    • Use local client in tests
    • Move event() code to central_unit
    • Move listDevices() code to central_unit
  • Align custom_component to HA 2023.01
    • Align translations to new schema
    • Remove wrong device_classes
    • Use more UnitOf enums
    • Add options for enum sensors. Makes state values selectable in triggers.
  • Reformat code / check with flake 8
  • Add SensorStateClass.TOTALINCREASING to svEnergyCounter* sysvars
  • Add SensorStateClass.MEASUREMENT to numeric sysvars
  • Add SwitchDeviceClass.OUTLET to HmIP plugs
  • Reorg entity helper
  • Make sysvar_scan_interval configurable

Version 1.25.1 (2022-12-22)

  • Bump hahomematic to 2022.12.8
    • Reformat code
    • Refactor entity inheritance
  • Follow backend: Refactor entity inheritance
  • Add value_list to sensor attributes

Version 1.25.0 (2022-12-21)

  • Bump hahomematic to 2022.12.7
    • Send ERROR_* parameters as homematic.device_error event
  • Fire homematic.device_error event
  • Add blueprint to display device error as persistent notification

Version 1.24.4 (2022-12-20)

  • Bump hahomematic to 2022.12.6
    • Add additional checks for custom entities
  • Fix entity_helper for LEVEL

Version 1.24.3 (2022-12-18)

  • Bump hahomematic to 2022.12.5
    • Code Cleanup
    • Remove sub_type from model to simplify code
    • Remove obsolete methods
    • Refactor binary_sensor check
    • Convert value_list to tuple
    • Use tuple for immutable lists
  • Remove sub_types for device selection
  • Convert frozenset to tuple in entity helper
  • Use device class tamper for sabotage parameter

Version 1.24.2 (2022-12-13)

  • Bump hahomematic to 2022.12.4
    • Fix disable away_mode in climate. Now goes back to the origin control_mode.
  • Add start date and time for service homematicip_local.enable_away_mode_by_calendar and use date and time pickers

Version 1.24.1 (2022-12-12)

  • Bump hahomematic to 2022.12.3
    • Add separate off_temperature for HM heating group HM-CC-VG-1

Version 1.24.0 (2022-12-12)

  • Bump hahomematic to 2022.12.2

    • Add HM-LC-AO-SM as light
  • Change device_class of weather wind speed sensor to new device class wind_speed

  • Remove hub sensor

  • Breaking Changes:

    • Due to changes in HA, the following services now have to use config entry_id (selectable in UI) instead of hub sensor:
      • clear_cache
      • fetch_system_variables
      • set_variable_value
    • The number of service messages is now a sysvar, due to the removal of the hub sensor
    • Replace bluepring homematicip_local_persistent_notification.yaml by current version
      • selection of hub sensor no longer needed

Version 1.23.0 (2022-12-01)

  • Bump hahomematic to 2022.12.1
    • Improve naming of modules
    • Add new platform for text sysvars
  • Remove support for old hub entities with homematicip_local.*
  • Raise min HA # Version to 2022.12
  • Use EntityFeature return type for climate/light supported features
  • Add text platform for character string sysvars (extended). See docs.

Version 1.22.0 (2022-12-01)

  • Bump hahomematic to 2022.12.0
    • Add transition to light turn_off
    • Remove min brightness of 10 for lights
  • Raise hour limit for away mode to 999 hours
  • Add multiplier 100 to LEVEL

Version 1.21.3 (2022-11-13)

  • Bump hahomematic to 2022.11.2
    • Generalize some collection helpers
  • Rename attribute COLOR_NAME to COLOR

Version 1.21.2 (2022-11-09)

  • Simplify # Version check
  • Switch LEVEL sensor on creation from hidden to deactivated

Version 1.21.1 (2022-11-08)

  • hide LEVEL sensor on creation

Version 1.21.0 (2022-11-08)

  • Bump hahomematic to 2022.11.1
    • Use generic property implementation
    • Code cleanup
    • Add option to wrap entities to a different platform
    • Wrap LEVEL of HmIP-TRV*, HmIP-HEATING to sensor
  • Use UnitOf* enums
  • Add EntityDescription for LEVEL of HmIP-TRV*, HmIP-HEATING as sensor
  • Make async_signal_new_hm_entity a function

Version 1.20.1 (2022-10-25)

  • Bump hahomematic to 2022.10.10
    • Refactor central_config
  • Allow update of min/max temp of climate device
  • Code cleanup

Version 1.20.0 (2022-10-23)

  • Bump hahomematic to 2022.10.9
    • Fix: don't hide unignored parameters
  • Refactor MASTER polling

Version 1.19.9 (2022-10-22)

  • Add generic option to modify icon based on state

Version 1.19.8 (2022-10-21)

  • Bump hahomematic to 2022.10.8
    • Add semaphore to fetch sysvar and programs from backend
  • Add service to fetch system variables on demand from backend independent from default 30s schedule.

Version 1.19.7 (2022-10-20)

  • Bump hahomematic to 2022.10.7
    • Accept some existing prefix for sysvars and programs to avoid additional prefixing
    • Read min/max temperature for climate devices
    • Min set temperature for thermostats is now 5.0 degree. 4.5. degree is only off

Version 1.19.6 (2022-10-15)

  • Bump hahomematic to 2022.10.6
    • Use HmHvacMode HEAT instead of AUTO for simple thermostats
    • Add HUMIDITY and ACTUAL_TEMPERATURE to heating groups

Version 1.19.5 (2022-10-11)

  • Bump hahomematic to 2022.10.5
    • Set HM Thermostat to manual mode before switching off

Version 1.19.4 (2022-10-10)

  • Bump hahomematic to 2022.10.4
    • Allow entity creation for some internal parameters

Version 1.19.3 (2022-10-10)

  • Bump hahomematic to 2022.10.3
    • Fix HM Blind/Cover custom entity types

Version 1.19.2 (2022-10-08)

  • Bump hahomematic to 2022.10.2
    • Make connection checker more resilient

Version 1.19.1 (2022-10-07)

  • Simplify manufacturer selection

Version 1.19.0 (2022-10-07)

  • Bump hahomematic to 2022.10.1
    • Ignore OPERATING_VOLTAGE for HmIP-PMFS
    • Add ALPHA-IP-RBG
  • Differentiate manufacturer in device_info
  • Use device_class speed

Version 1.18.1 (2022-10-04)

  • Update state translations
  • Add warning if hub sensor is disabled
  • Avoid hub sensor update before full initialized

Version 1.18.0 (2022-10-03)

  • Bump hahomematic to 2022.10.0
    • Rename hub event
    • Remove Servicemeldungen from sysvars. It's already included in the hub_entity (sensor.{instance_name}) (See README)
  • Split hub between scheduler and entity
  • Convert hub entity to sensor
  • Reorg device_info for ControlUnit
  • Deprecation warning: The entity homematicip_local.{instance_name} must be replaced by sensor.{instance_name} in service calls (set_variable_value) till HA 11.2022.

Version 1.17.0 (2022-09-20)

  • Bump hahomematic to 2022.9.1
    • Improve XmlServer shutdown
    • Add name to threads and executors
    • Improve ThreadPoolExecutor shutdown
  • Replace deprecated AutomationActionType

Version 1.16.5 (2022-09-02)

  • Add blueprint for HB-RC-12-EP-C by @djusHa
  • Fix sysvar binary_sensors

Version 1.16.4 (2022-09-02)

  • Bump hahomematic to 2022.9.0
    • Exclude value from event_data if None
  • Remove unneeded _attr

Version 1.16.3 (2022-08-27)

  • Bump hahomematic to 2022.8.15
    • Fix select entity detection

Version 1.16.2 (2022-08-24)

  • Fix targets for entity services

Version 1.16.1 (2022-08-24)

  • Bump hahomematic to 2022.8.14
    • Exclude STRING sysvar from extended check
  • Improve # Version check

Version 1.16.0 (2022-08-23)

  • Bump hahomematic to 2022.8.13
    • Allow three states for a forced availability of a device
  • Fix device availability wording
  • Fix wording in homematicip_local_persistent_notification.yaml
  • Added blueprints:
    • homematicip_local_reactivate_device_by_type.yaml - Reactivate a device by device type
    • homematicip_local_reactivate_device_full.yaml - Reactivate every device
    • homematicip_local_reactivate_single_device.yaml - Reactivate a single device

Version 1.15.2 (2022-08-23)

  • Bump hahomematic to 2022.8.12
  • Add device_type to device availability event

Version 1.15.1 (2022-08-21)

  • Bump hahomematic to 2022.8.11
  • Adjust logging (level and message)
  • Remove service homematicip_local.update_entity. Use service homeassistant.update_entity instead.

Version 1.15.0 (2022-08-16)

  • Bump hahomematic to 2022.8.10
  • Add click events to logbook

Version 1.14.3 (2022-08-16)

  • Bump hahomematic to 2022.8.9
    • Create all XmlRpc server by requested port(s)
  • Use a default callback port if not configured
  • Restructure hass storage of control units

Version 1.14.2 (2022-08-12)

  • Bump hahomematic to 2022.8.7
    • Fix hs_color for CeColorDimmer(HM-LC-RGBW-WM)

Version 1.14.1 (2022-08-12)

  • Bump hahomematic to 2022.8.6
    • Reduce api calls for light
    • Fix color for HM-LC-RGBW-WM

Version 1.14.0 (2022-08-11)

  • Bump hahomematic to 2022.8.5
    • Add cache for rega script files

Version 1.13.7 (2022-08-11)

  • Cleanup entity_helper

Version 1.13.6 (2022-08-11)

  • Fix entity_helper after #286

Version 1.13.5 (2022-08-11)

  • Refactor service set_device_valueXXX

Version 1.13.4 (2022-08-09)

  • Add entity_description for HB percentage and pressure
  • Add service set_device_value_raw

Version 1.13.3 (2022-08-08)

  • Bump hahomematic to 2022.8.4
    • Add platform as field and remove obsolete constructors

Version 1.13.2 (2022-08-07)

  • Bump hahomematic to 2022.8.3
    • Rename HM unique_id to unique_identifier
    • Remove domain from model
    • Remove should_poll from model
  • Refactor entity_description handling
  • Specify should_poll in CC

Version 1.13.1 (2022-08-02)

  • Bump hahomematic to 2022.8.2
    • Code cleanup
    • Add program buttons
  • Add Service to update a single entity's value (only required for edge cases). See README.
  • Add CCU programs as buttons

Version 1.13.0 (2022-08-01)

  • Bump hahomematic to 2022.8.0
    • Remove device_info from model
    • Remove attributes from model
    • Code Cleanup
  • Refactor DeviceInfo
  • Refactor Attributes

Version 1.12.5 (2022-07-28)

  • Bump hahomematic to 2022.7.14
    • Add HmIP-BS2 to custom entities
  • Add call_source to load_entity_value calls

Version 1.12.4 (2022-07-22)

  • Bump hahomematic to 2022.7.13
    • Cleanup API
  • Clean up accessing event helpers via hass
  • Remove empty device_class for binary_sensor STATE

Version 1.12.3 (2022-07-21)

  • Bump hahomematic to 2022.7.12
    • Add ELV-SH-BS2 to custom entities
  • Remove unneeded validity check for color_mode

Version 1.12.2 (2022-07-21)

  • Block start of custom component if HA # Version is too old.

Version 1.12.1 (2022-07-19)

  • Bump hahomematic to 2022.7.11
    • Fix _check_connection for Homegear/CCU
  • Add community blueprint for 4-button flush mount device by @andyboeh
  • Add HVACAction.IDLE to dict

Version 1.12.0 (2022-07-17)

  • Bump hahomematic to 2022.7.9
    • Remove state_uncertain from default attributes
  • Make entity state restorable after HA restart
  • Do not use CALLBACK_HOST for XmRPCServer

Version 1.11.1 (2022-07-13)

  • Bump hahomematic to 2022.7.8
    • Fix entity update

Version 1.11.0 (2022-07-12)

  • Bump hahomematic to 2022.7.7
    • Ignore further parameters by device (CURRENT_ILLUMINATION for HmIP-SMI, HmIP-SMO, HmIP-SPI)
    • Align entity naming to HA entity name
  • Use new HA entity name: The entity name now only represents the entity part, and no longer includes the device name. The entity_id is untouched, as long as you don't reinstall the integration. The displayed name of an entity might change, depending on the used HA card. See HA dev docs for further information
  • Fix hub creation
  • Use entity is_valid for state Entities are now shown as unknown, as long as HA has not received any events from the CCU, or was not able to fetch data initially. Old behaviour was to display a DEFAULT value. As soon as events have been received from the CCU the state will switch to the correct state. This should be relevant, if HA has been restarted shortly after the CCU has been restart. See Readme for further information.
  • Add attribute state_uncertain There is now an extra attribute at each entity, that shows is the state of the entity might be uncertain due to a CCU restart. This should be relevant, if the CCU has been restarted and HA is still running.

Version 1.10.1 (2022-07-08)

  • Bump hahomematic to 2022.7.1
    • Better distinguish between NO_CACHE_ENTRY and None

Version 1.10.0 (2022-07-07)

  • Bump hahomematic to 2022.7.0
  • Fix/Cleanup Device/Entity/Sysvar removal
  • Use new attributes for number entities

Version 1.9.5 (2022-07-06)

  • Revert: Make OPENING the default device_class for binary_sensor STATE (#249)

Version 1.9.4 (2022-07-03)

  • Bump hahomematic to 1.9.4
    • Load MASTER data on initial load
  • Make OPENING the default device_class for binary_sensor STATE

Version 1.9.3 (2022-07-02)

  • Bump hahomematic to 1.9.3
    • Fix export of device definitions

Version 1.9.2 (2022-07-01)

  • Bump hahomematic to 1.9.2
    • Use CHANNEL_OPERATION_MODE for devices with MULTI_MODE_INPUT_TRANSMITTER, KEY_TRANSCEIVER channels
    • Re-add HmIPW-FIO6 to custom device handling
  • Disable device trigger based on event usage

Version 1.9.0 (2022-06-29)

  • Bump hahomematic to 1.9.1
    • Add button to virtual remote
    • Remove HmIPW-FIO6 from custom device handling
  • Remove dummies for unit_of_measurement

Version 1.8.6 (2022-06-07)

  • Bump hahomematic to 1.8.6
    • Code cleanup
  • Fix sysvar creation for delayed platform setups on some environments

Version 1.8.5 (2022-06-05)

  • Bump hahomematic to 1.8.5
    • Remove sysvars if deleted from CCU
    • Add check for sysvar type in sensor
    • Remove unused sysvar attributes
  • Cleanup HA when deleting sysvars

Version 1.8.4 (2022-06-04)

  • Bump hahomematic to 1.8.4
    • Refactor all sysvar script

Version 1.8.3 (2022-06-03)

  • Bump hahomematic to 1.8.3
    • Refactor sysvar creation eventing
  • Adopt sysvar creation eventing

Version 1.8.2 (2022-06-03)

  • Bump hahomematic to 1.8.2
    • Fix build

Version 1.8.1 (2022-06-03)

  • Bump hahomematic to 1.8.1
    • Use Marker in sysvar description for extended sysvars

Version 1.8.0 (2022-06-02)

  • Bump hahomematic to 1.8.0
    • Enable additional sysvar entity types
  • Create sysvars with new types. See

Version 1.7.3 (2022-06-01)

  • Bump hahomematic to 1.7.3
  • Add more debug logging

Version 1.7.2 (2022-06-01)

  • Bump hahomematic to 1.7.2
    • Better differentiate between float and int for sysvars
    • Switch from # as unit placeholder for sysvars to ' '

Version 1.7.1 (2022-05-31)

  • Bump hahomematic to 1.7.1
    • Rename parameter channel_address to address for put/get_paramset
  • Make channel optional for homematicip_local.put_paramset

Version 1.7.0 (2022-05-31)

  • Bump hahomematic to 1.7.0
    • Refactor system variables
  • Align integration to match sysvar refactoring
  • Add more types for sysvar entities

Version 1.6.1 (2022-05-30)

  • Bump hahomematic to 1.6.2
    • Add more options for boolean conversions
  • Update readme. See new options for homematicip_local.set_variable_value.

Version 1.6.1 (2022-05-29)

  • Bump hahomematic to 1.6.1
    • Fix entity definition for HMIP-HEATING
  • Fix config flow: select/deselect interfaces

Version 1.6.0 (2022-05-29)

  • Bump hahomematic to 1.6.0
    • Add impulse event
    • Add LEVEL and STATE to HmIP-Heating group to display hvac_action
    • Add device_type as model to attributes
  • Adjust typing to match updated HA defaults
  • Exclude model from recorder

Version 1.5.4 (2022-05-25)

  • Bump hahomematic to 1.5.4
    • Add function attribute only if set

Version 1.5.3 (2022-05-24)

  • Bump hahomematic to 1.5.3
    • Rename subsection to function

Version 1.5.2 (2022-05-24)

  • Bump hahomematic to 1.5.2
    • Add subsection to attributes
  • Exclude subsection from recorder

Version 1.5.0 (2022-05-23)

  • Bump hahomematic to 1.5.0
    • Limit sysvar length to 255 chars due to HA limitations
  • Add name to HA event

Version 1.4.0 (2022-05-16)

  • Bump hahomematic to 1.4.0
    • Block parameters by device_type that should not create entities in HA
  • Fix: Strings and enums with custom device class must be lowercase to be translatable

Version 1.3.3 (2022-05-14)

  • Fix entity assignment for service clear_cache

Version 1.3.2 (2022-05-13)

  • Bump hahomematic to 1.3.1
    • Increase connection timeout(30s->60s) and reconnect interval(90s->120s) to better support slower hardware

Version 1.3.1 (2022-05-06)

  • Bump hahomematic to 1.3.0
    • Use unit for vars, if available
    • Remove special handling for pydevccu
    • Remove set boost mode to false, when preset is none for bidcos climate entities
  • Fix climate preset

Version 1.3.0 (2022-05-04)

  • Use enums provided by 2022.5
  • Add hassfest job for custom components
  • Fixes after adding hassfest action

Version 1.2.2 (2022-05-02)

  • Bump hahomematic to 1.2.2
    • Fix light channel for multi dimmer

Version 1.2.1 (2022-04-26)

  • Bump hahomematic to 1.2.1
    • Fix callback alive check
  • Add persistent notification for missing callback events
  • Add recorder platform to avoid writing static attributes

Version 1.2.0 (2022-04-26)

  • Bump hahomematic to 1.2.0
    • Reorg light attributes
    • Add on_time to light and switch
  • Add service homematicip_local.light_set_on_time
  • Add service homematicip_local.switch_set_on_time
  • Reload integration on configuration change
  • Fix triggers, if device has multiple config_entries from different domains

Version 1.1.4 (2022-04-21)

  • Bump hahomematic to 1.1.4
    • Use min as default if default is unset for parameter_data
  • This fixes Homegear support

Version 1.1.3 (2022-04-21)

  • Bump hahomematic to 1.1.3
    • Add CeColorDimmer
  • Fix hub_sensor, hub_binary_sensor dispatcher

Version 1.1.2 (2022-04-11)

  • Bump hahomematic to 1.1.2
    • Add set_system_variable with string value

Version 1.1.1 (2022-04-11)

  • Bump hahomematic to 1.1.1
    • Read # Version and serial in get_client

Version 1.1.0 (2022-04-09)

  • Bump hahomematic to 1.1.0
    • Add BATTERY_STATE to DEFAULT_ENTITIES
    • Migrate device_info to dataclass
    • Add rega script (provided by @baxxy13) to get serial from CCU
  • Add Entity_Description to BATTERY_STATE
  • Make device_info more independent from backend
  • Clean up cache dirs on instance removal

Version 1.0.5 (2022-04-07)

  • Bump hahomematic to 1.0.6

    • Revert to XmlRPC getValue and getParamset for CCU
  • Use Rf-Modul serial for unique_id in config_flow

  • Remove deprecated light const

Version 1.0.4 (2022-04-04)

  • Bump hahomematic to 1.0.5
    • Limit hub_state to ccu only
  • Remove deprecated light const
  • Remove defaults in OptionsFlow for not optional values (callback_ip, callback_port_xml_rpc, json_port)

Version 1.0.3 (2022-04-02)

  • Fix device_type list in diagnostics overview
  • Add blueprint for 4-button device (e.g. HmIP-KRCA)

Version 1.0.2 (2022-03-30)

  • Bump hahomematic to 1.0.4
    • Use max # Version of interfaces for backend version
    • API refactoring
  • Split control unit

Version 1.0.1 (2022-03-30)

  • Bump hahomematic to 1.0.3
    • Revert to XmlRPC get# Version for CCU

Version 1.0.0 (2022-03-29)

  • Bump hahomematic to 1.0.2
    • Cleanup json code
  • Use previously configured interfaces by default in config flow
  • Rename hahm to homematicip_local

Version 0.38.5 (2022-03-22)

  • Bump hahomematic to 0.38.5
    • Add support for color temp dimmer

Version 0.38.4 (2022-03-21)

  • Bump hahomematic to 0.38.4
    • Fix interface name for BidCos-Wired

Version 0.38.3 (2022-03-21)

  • Bump hahomematic to 0.38.3
    • Add check for available API method to identify BidCos Wired

Version 0.38.2 (2022-03-20)

  • Bump hahomematic to 0.38.2
    • Catch SysVar parsing exceptions

Version 0.38.1 (2022-03-20)

  • Bump hahomematic to 0.38.1
    • Fix initial config

Version 0.38.0 (2022-03-20)

  • Bump hahomematic to 0.38.0
    • Add central validation
  • Improve validation in config flow

Version 0.37.5 (2022-03-18)

  • Bump hahomematic to 0.37.7
    • Add additional system_listMethods to avoid errors on CCU

Version 0.37.4 (2022-03-18)

  • Bump hahomematic to 0.37.6
    • Add JsonRPC.Session.logout before central stop to avoid warn logs at CCU.

Version 0.37.3 (2022-03-18)

  • Bump hahomematic to 0.37.5
    • Send event if interface is not available
    • Don't block available interfaces, if another interface is no available

Version 0.37.2 (2022-03-17)

  • Bump hahomematic to 0.37.4
    • Fix reload paramset
    • Fix value converter

Version 0.37.1 (2022-03-17)

  • Bump hahomematic to 0.37.3
    • Cleanup caching code
    • Use Homematic script to fetch initial data for CCU/HM

Version 0.37.0 (2022-03-16)

  • Bump hahomematic to 0.37.1
    • Avoid unnecessary prefetches
    • Fix JsonRPC Session handling
    • Rename NamesCache to DeviceDetailsCache
    • Move RoomCache to DeviceDetailsCache
    • Move hm value converter to helpers
    • Use JSON RPC for get_value, get_paramset, get_paramset_description
    • Use default for binary_sensor
    • Add semaphore(1) to improve cache usage (less api calls)
  • Update unit for IEC sensor

Version 0.36.4 (2022-03-09)

  • Bump hahomematic to 0.36.3
  • Use callback when hub is created

Version 0.36.3 (2022-03-06)

  • Bump hahomematic to 0.36.2
    • Make more devices custom_entities

Version 0.36.2 (2022-02-27)

  • Fix LEVEL display

Version 0.36.0 (2022-02-24)

  • Bump hahomematic to 0.36.0
    • Remove HA constants
    • Use enums own constants
  • Use more HA constants based on hahomematic enums

Version 0.35.3 (2022-02-23)

  • Bump hahomematic to 0.35.3
    • Move xmlrpc credentials to header

Version 0.35.2 (2022-02-22)

  • Bump hahomematic to 0.35.2
    • Remove password from Exceptions

Version 0.35.1 (2022-02-21)

  • Bump hahomematic to 0.35.1
    • Fix IpBlind

Version 0.35.0 (2022-02-19)

  • Bump hahomematic to 0.35.0
  • Fix CF tests

Version 0.34.2 (2022-02-16)

  • Bump hahomematic to 0.34.2
  • Add is_locking/is_unlocking to lock

Version 0.34.1 (2022-02-16)

  • Bump hahomematic to 0.34.1
  • Add own service to turn_on a siren (acoustically/optically)

Version 0.34.0 (2022-02-15)

  • Bump hahomematic to 0.34.0
    • Add new platform siren

Version 0.33.0 (2022-02-14)

  • Bump hahomematic to 0.33.0
    • Add hvac_action to IP Thermostats
    • Add hvac_action to some HM Thermostats
  • Add hvac_action to climate

Version 0.32.1 (2022-02-12)

  • Bump hahomematic to 0.32.4
    • add opening/closing to IPGarage
  • Add translation for DOOR_STATE

Version 0.32.0 (2022-02-12)

  • Bump hahomematic to 0.32.3
    • Prioritize detection of device for custom entities
    • Add HmIPW-FIO6 as CE
    • Fix HmIP-MOD-HO
    • Add state(ch2) to HmIP-MOD-HO
  • Fix translations

Version 0.31.4 (2022-02-08)

  • Add diagnostics

Version 0.31.3 (2022-02-08)

  • Add multiplier to sensor and number entities. This fixes percentage related sensors
  • Add more EntityDefinitions (device_class, state_class, ...)

Version 0.31.2 (2022-02-07)

  • Bump hahomematic to 0.31.2
    • Add HmIP-HDM2 to cover
    • Fix unignore filename

Version 0.31.1 (2022-02-07)

  • Bump hahomematic to 0.31.1
    • Add multiplier to entity
    • Substitute device_type of HB devices for usage in custom_entities
  • Aggregate entity_helper

Version 0.31.0 (2022-02-06)

  • Bump hahomematic to 0.31.0
  • use should_poll from hahomematic

Version 0.30.3.beta (2022-02-06)

  • Bump hahomematic to 0.30.2
    • Remove INHIBIT from ignore parameter list
    • Add support for unignore file
    • Add DIRECTION & ACTIVITY_STATE to cover (is_opening, is_closing)
  • Update translations, device_classes form Win-Matic/Key-Matic

Version 0.30.2 (2022-02-04)

  • replace availability PN by blueprint

Version 0.30.1 (2022-02-04)

  • Bump hahomematic to 0.30.1
    • Start hub earlier
  • Add service to clear the caches
  • Add event about device availability

Version 0.30.0 (2022-02-03)

  • Bump hahomematic to 0.30.0
    • Add CHANNEL_OPERATION_MODE for HmIP(W)-DRBL4
    • Fix DLD lock_state
    • Add is_jammed to locks
  • Re-disable RSSI by default
  • React on channel_operation_mode for cover/blind on HmIP(W)-DRBL4

Version 0.29.3 (2022-02-02)

  • Bump hahomematic to 0.29.2
    • Add HmIP-STH to climate custom entities
  • Add more HM-Devices to EntityDescription
  • Switch device_class of HmIP-SCI from safety to opening
  • Enhance entity_helper with sets for entity_descriptions by_param and by_device

Version 0.29.2 (2022-02-02)

  • Add more HM-Devices to EntityDescription

Version 0.29.1 (2022-02-02)

  • Bump hahomematic to 0.29.1
    • Check if interface callback is alive
    • Add class for HomeamaticIP Blinds
  • Enhance entity_helper with sets for entity_descriptions
  • Fix missing device_id in keypress events

Version 0.29.0 (2022-02-01)

  • Bump hahomematic to 0.29.0
    • Make device availability dependent on the client
    • Fire event about interface availability
  • Display persistent notification, if interface is not available

Version 0.28.8 (2022-01-31)

  • Bump hahomematic to 0.28.7
    • Add additional check to reconnect

Version 0.28.7 (2022-01-30)

  • Listen on HA stop event to stop the central

Version 0.28.6 (2022-01-30)

  • Bump hahomematic to 0.28.6
    • Switch value caching from getParamset to getValue That should fix loading of VirtualDevices and HmRF

Version 0.28.4 (2022-01-30)

  • Bump hahomematic to 0.28.4
  • Limit read proxy workers to 1

Version 0.28.3 (2022-01-29)

  • Bump hahomematic to 0.28.2
    • Make names cache non-persistent.

Version 0.28.2 (2022-01-28)

  • Fix hub init

Version 0.28.1 (2022-01-28)

  • Bump hahomematic to 0.28.1
    • Cleanup central API
    • Use dedicated proxy for mass read operations, to avoid blocking of connection checker
  • Fix MyPy

Version 0.28.0 (2022-01-27)

  • Bump hahomematic to 0.28.0
    • Create client after init failure
    • Reduce CCU calls

Version 0.27.1 (2022-01-25)

  • Bump hahomematic to 0.27.2
    • optimize initial data load

Version 0.27.0 (2022-01-25)

  • Bump hahomematic to 0.27.0
    • Add hmcli.py as command line script

Version 0.26.3 (2022-01-24)

  • Add name/host to discovered config flow

Version 0.26.2 (2022-01-23)

  • Add upnp discovery to config flow

Version 0.26.1 (2022-01-23)

  • Fix initial setup: Integration will completely setup after initial config flow. A reload of the integration or a restart of HA is no longer necessary.
  • Cleanup integration init.

Version 0.26.0 (2022-01-22)

  • Bump hahomematic to 0.26.0
    • Add additional params for HM-SEC-Win and HM-SEC-Key
    • Assign secondary channels for HM dimmers
  • Fix spelling bidos -> bidcos in ConfigFlow
  • Add translation for new params
  • Enable wildcard search for device_type in entity_helper

Version 0.25.0 (2022-01-19)

  • Bump hahomematic to 0.25.0
    • Mark unreachable devices as unavailable on startup

Version 0.24.3 (2022-01-18)

  • Bump hahomematic to 0.24.4
    • Improve logging
    • Generic schema for entities is name(str):channel(int), everything else is custom.

Version 0.24.2 (2022-01-18)

  • Bump hahomematic to 0.24.3
    • improve exception handling
    • fix unique_id for system variables This is a breaking change. Solution: Activate the old sysvars, restart HA and delete the old sysvars.

Version 0.24.1 (2022-01-17)

  • Bump hahomematic to 0.24.2
    • improve exception handling

Version 0.24.0 (2022-01-17)

  • Bump hahomematic to 0.24.0
    • improve exception handling

Version 0.23.0 (2022-01-16)

  • Bump hahomematic to 0.23.3
    • Make ["DRY", "RAIN"] sensor a binary_sensor
    • Add converter to sensor value
      • HmIP-SCTH230 CONCENTRATION to int
      • Fix RSSI (experimental)
    • raise connection_checker interval to 60s
    • Add sleep interval(120s) to wait with reconnect after successful connection check
  • Fix unit of RSSI params
  • Add device class to HM-Sen-RD-O

Version 0.22.2 (2022-01-15)

  • Bump hahomematic to 0.22.2

Version 0.22.1 (2022-01-15)

  • Bump hahomematic to 0.22.1
    • Add VALVE_STATE for hm climate
    • Add entity_type to attributes
    • Accept LOWBAT only on channel 0

Version 0.22.0 (2022-01-14)

  • Bump hahomematic to 0.22.0
    • Add rooms to device
  • Add area to device_info. This works, if a Homematic device is assigned to a single room in CCU. Multiple channels can be assigned to the same room. If the device is assigned to multiple rooms, or nothing is set, then the area in HA will stay empty

Version 0.21.1 (2022-01-13)

  • Bump hahomematic to 0.21.1
    • Fix event identification and generation
  • Remove Alarm Events (not needed)

Version 0.21.0 (2022-01-13)

  • Bump hahomematic to 0.21.0
    • Don't exclude Servicemeldungen from sysvars
    • Use Servicemeldungen sysvar for hub state

Version 0.20.0 (2022-01-12)

  • Bump hahomematic to 0.20.0
  • Fix number entities so they can handle percentages

Version 0.19.1 (2022-01-11)

  • Fix set_variable_value

Version 0.19.0 (2022-01-11)

  • Bump hahomematic to 0.19.0
    • Mark secondary channels name with a V --> Vch
  • Remove option to enable virtual channels. Virtual channels are now created but disabled by default.

Version 0.18.1 (2022-01-11)

  • Bump hahomematic to 0.18.1
    • Fix callback to notify un_reach

Version 0.18.0 (2022-01-10)

  • Bump hahomematic to 0.18.0
  • Set entity enabled default by entity usage enum
  • Remove enable_sensors_for_system_variables from config flow
  • Bool SysVars are now binary sensors
  • All Sysvars are now disabled by default
  • Add instance name to system variable name

Version 0.17.1 (2022-01-09)

  • Bump hahomematic to 0.17.1
    • Fix naming for multi channel custom entities

Version 0.17.0 (2022-01-09)

  • Bump hahomematic to 0.17.0
  • Adopt change changes from hahomematic

Version 0.16.1 (2022-01-08)

  • Bump hahomematic to 0.16.1
    • Add logging to show usage of unique_id in name
    • Add HmIPW-WRC6 to custom entities
    • Add HmIP-SCTH230 to custom entities

Version 0.16.0 (2022-01-08)

  • Bump hahomematic to 0.16.0
    • Return unique_id if name is not in cache
    • Remove no longer needed press_virtual_remote_key

Version 0.15.1 (2022-01-07)

  • Bump hahomematic to 0.15.2
    • Identify virtual remote by device type
    • Fix Device Exporter / format output
    • Add devices to CustomEntity
      • HmIP-WGC
      • HmIP-WHS
  • Identify virtual remote by device type
  • Cleanup DeviceTrigger/Action
  • Add more EntityDescriptions

Version 0.15.0 (2022-01-07)

  • Bump hahomematic to 0.15.0
    • Remove Virtual Remotes from buttons (BREAKING CHANGE) Solution: obsolete entities (buttons) can be deleted in entities overview.
  • Update integration name in comments
  • Add device actions to call actions on virtual remotes
  • Add device(service) for virtual remote

Version 0.14.0 (2022-01-06)

  • Bump hahomematic to 0.14.0
    • Switch some HM-LC-Bl1 to cover
    • Don't exclude DutyCycle, needed for old rf-modules
    • Don't exclude Watchdog from SV sensor

Version 0.13.2 (2022-01-05)

  • Bump hahomematic to 0.13.3
    • HM cover fix: check level for None
    • Fix: max_temp issue for hm thermostats
    • Fix: hm const are str instead of int
  • Fix: duplicate remove exception after delete_device

Version 0.13.1 (2022-01-04)

  • Bump hahomematic to 0.13.2
    • Fix cover state
    • Add method to delete a single device to central
  • Add a service to delete a Homematic device from HM (No delete in CCU!)
  • Fix read of previous device options

Version 0.13.0 (2022-01-04)

  • Bump hahomematic to 0.13.1
    • Fix unique_id for heating_groups (Breaking Change) Solution: remove greyed-put climate entity, rename entity_id of new entity afterwards.
    • Remove dedicated json tls option
    • Use generic climate profiles list
  • Adopt changes from hahomematic
  • Redesign ConfigFlow and OptionsFlow
    • Username and Password are mandatory
    • OptionsFlow allows Reconfiguration of Setup (requires restart)

Version 0.12.0 (2022-01-03)

  • Bump hahomematic to 0.12.0
    • Split number to integer and float
  • Adopt changes from hahomematic
  • Rename integration

Version 0.11.1 (2022-01-02)

  • Bump hahomematic to 0.11.2
    • Precise entity definitions
    • Improve detection of multi channel devices

Version 0.11.0 (2022-01-02)

  • Bump hahomematic to 0.11.0
    • Add transition to dimmer
    • Remove channel no, if channel is the only_primary_channel
  • Adopt change from hahomematic
  • Update docstrings
  • Add transition to dimmer

Version 0.10.0 (2021-12-31)

  • Add Github Basics
  • Add button entity_description
  • Fix unload issue
  • Fix device description_strategy

Version 0.9.2 (2021-12-30)

  • Adopt async changes from hahomematic
  • Bump hahomematic to 0.9.1:
    • Extend naming strategy to use device name if channel name is not customized

Version 0.9.1 (2021-12-30)

  • Update blueprints

Version 0.9.0 (2021-12-30)

  • Make events translatable This is a breaking change for device triggers. Please check your automations and fix the device trigger.

Version 0.8.0 (2021-12-29)

  • Add service to export device definition

Version 0.7.1 (2021-12-28)

  • Fix service load

Version 0.7.0 (2021-12-28)

  • Use entity services for climate
  • Restart ConfigFlow on Error
  • Display error messages in config flow

Version 0.6.2 (2021-12-27)

  • Add selector to service disable_away_mode
  • Bump hahomematic to 0.6.1:
    • Display profiles only when hvac_mode auto is enabled
    • Fix binary sensor state update for hmip 2-state sensors

Version 0.6.1 (2021-12-27)

  • Remove away mode start date

Version 0.6.0 (2021-12-27)

  • Add climate services for away mode (experimental)
  • Bump hahomematic to 0.6.0:
    • Fix HVAC_MODE_OFF for climate

Version 0.5.1 (2021-12-26)

  • Bump hahomematic to 0.5.1:
    • Fix hm_light turn_off

Version 0.5.0 (2021-12-25)

  • Bump hahomematic to 0.5.0:
    • Separate device_address and channel_address

Version 0.4.0 (2021-12-24)

  • Bump hahomematic to 0.4.0:
    • Add ACTUAL_TEMPERATURE as separate entity by @towo
    • Add HEATING_COOLING to IPThermostat and Group
    • Add ()HUMIDITY and ()TEMPERATURE as separate entities for Bidcos thermostats
    • use ACTIVE_PROFILE in climate presets

Version 0.3.2 (2021-12-23)

  • Make HmIP-BSM a switch (only dimable devices should be lights). thanks to @itn3rd77

Version 0.3.0 (2021-12-23)

  • Add EntityDescription for Number: Level, Active Profile

Version 0.2.1 (2021-12-22)

  • Use device selector for services
  • Remove virtual_key service
  • Update dutch translation

Version 0.2.0 (2021-12-22)

  • Sort and use more enums for EntityCategory
  • Cleanup device_info
  • Add configuration_url to service device
  • Move parameters in internal config
  • Fix #80 broken config_flow

Version 0.1.2 (2021-12-21)

  • Refactor device_info and identifier handling

Version 0.1.1 (2021-12-21)

  • Rename async methods and @callback methods to async_*
  • Update device identifier with interface_id

Version 0.1.0 (2021-12-XX)

  • Bump # Version to 0.1.0
  • Update EntityDescriptions
  • Add initial tests for config_flow
  • Add Sensor Descriptions

Version 0.0.22.2 (2021-12-16)

  • Add DE translation
  • Update NL translation

Version 0.0.22.1 (2021-12-16)

  • Fix resolve names for all given ports incl. tls (update hahomematic)
  • Rename attributes to match eQ-3 naming
  • Don't use title() for instance_name
  • Fix Hub init

Version 0.0.21 (2021-12-15)

  • Add some blueprints for automation in GIT repo
  • Simplify light turn_on
  • Fix HmIP-BSL
  • Use attr for entities

Version 0.0.20 (2021-12-13)

  • Add device name to persistent notification
  • rearrange config flow

Version 0.0.19 (2021-12-12)

  • Fix EntityDescriptions
  • Fix OptionFlow
  • Rename helper to entity_helper
  • Add UNREACH to persistent notifications

Version 0.0.18 (2021-12-11)

  • Add type hints based on HA mypy config
  • Rename impulse to special event
  • Add persistent notification

Version 0.0.17 (2021-12-05)

  • Add translation for HmIP-SRH states

  • Code quality:

    • Use Enums from HaHomematic
    • Add more type hints (fix mypy errors)
    • Use assignment expressions
    • Move services to own file

Version 0.0.16 (2021-12-02)

  • Initial release