What's Changed
Added
- DpActionNumber support: New
AioHomematicActionNumberentity 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 existingDpActionSelectpattern. Entities are filtered byDP_ACTION_NUMBER_WHITELIST(currently empty;DURATION_VALUEprepared but commented out). - CombinedDataPoint support: New
AioHomematicCombinedNumberentity forCombinedDataPointProtocoldata 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 asEntityCategory.CONFIGnumber entities with min/max/unit from the combined data point. Sensor platform filters outCombinedDataPointProtocolinstances to prevent duplicate read-only entities. - 15 new WebSocket commands for the Integration and OpenCCU panel tabs (
homematicip_local/integration/*andhomematicip_local/ccu/*)
Fixed
- Fix sensor entities not created for non-DpSensor data points: The
isinstance(data_point, DpSensor)filter added to excludeCombinedDataPointProtocolinstances also excludedCalculatedDataPointinstances (e.g.OperatingVoltageLevel/ Betriebsspannungspegel) and forced-sensorGenericDataPointinstances (e.g.LEVEL/ Ventilöffnungsgrad on HmIP-eTRV). The filter now excludes onlyCombinedDataPointProtocolinstead of requiring specific subclasses. - Fix CombinedDataPoint number entities not created on dynamic discovery: The
async_add_combined_numberdispatcher in the number platform listened onDataPointCategory.SENSORbutCombinedDpTimerAction(e.g. siren duration on HmIP-ASIR-2) has_category = DataPointCategory.ACTION_NUMBER. Changed the signal toACTION_NUMBERso 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-selectcompatibility with Home Assistant 2026.3.0+.
Dependencies
Bump aiohomematic to 2026.3.3
- DpActionNumber data points: New
DpActionFloatandDpActionIntegerfor write-only FLOAT/INTEGER parameters with MIN/MAX validation - DpActionBoolean and DpActionString data points: Complete the DpAction hierarchy for write-only BOOL/STRING parameters.
DpActionnow only handlesTYPE=ACTIONparameters - Type-correct custom data point fields: Replaced
DpActionwith specific types (DpActionFloat,DpActionInteger,DpActionBoolean,DpActionString) in custom data points based on pydevccu paramset TYPE - CombinedDataPoint for timer value+unit pairs: New
CombinedDpTimerActioncombines timer value + unit into a single writable entity with automatic unit conversion (seconds to S/M/H). ReplacesTimerField/TimerAccessorpattern. 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
- Performance: Pre-sorted EventBus handlers, parallel device finalization/client refresh/interface operations,
weakref.finalizefor subscription cleanup,slots=Truefor dataclasses, optimized multi-channel group check
Bump aiohomematic-config to 2026.3.2
- Add
device_active_profile_indexfield toClimateScheduleDatafor active profile index from device - Add
device_iconfield toFormSchemawith icon filename from CCU device database - Add
descriptionfield toFormParameterwith Markdown-formatted parameter help text - Python 3.14 minimum: Dropped Python 3.13 support