☕ Support This Project
If you find this integration useful, consider supporting its development:
Your support helps maintain and improve this integration. Thank you! 🙏
What's Changed
Integration
- Fix calculated data points on internal / heating-group channels (Taupunkt/dew point, Dampfkonzentration/vapor concentration, Enthalpie/enthalpy, Taupunkt-Spreizung/dew-point spread) being orphan-deleted and re-created disabled under a new, name-doubled
entity_idafter the central-id realign migration (#3272). Their unique_ids carry acalculated_marker between the central-id slot and the channel infix (<central-id>_calculated_int000…), whichrealign_hub_unique_iddid not recognise, so — unlike every other hub/internal key — they were left on the stale anchor, no longer matched the live central id, and were swept away by the orphan cleanup (losing manual enablement and history). The realign now handles thecalculated_variant; device-anchored calculated DPs (calculated_<serial>_…, no central-id slot) stay untouched - Relax the aiohomematic version gate in
async_setup_entryfrom an exact-match check to a minimum-version check. Setup is now only blocked when the installed aiohomematic is older than the version this release was built against; a newer (patch) aiohomematic no longer aborts setup. This fixes spurious "requires aiohomematic version X, but found version Y / setup blocked" failures (#3275) that occurred when HA/pip resolved a newer aiohomematic than the manifest pin via transitive, upper-bound-less dependencies
Dependencies
Bump aiohomematic to 2026.7.2
- Fix CUxD/CCU-Jack devices going unavailable after init (#3228): the per-parameter
getValuefallback is now disabled for these JSON-RPC interfaces (added toINTERFACES_SKIPPING_INIT_GETVALUE_FALLBACK), which previously flooded the CCU session pool during initialization and marked the devices unavailable. Values now arrive via the bulkget_all_device_datafetch and MQTT events instead, and a contract test guards the behaviour - Fix a JSON-RPC session login race on cold start: concurrent login attempts previously created multiple CCU sessions simultaneously, risking "too many sessions" errors.
_login_or_renewnow serializes login/renew with anasyncio.Lock(with a lock-free fast path for recently refreshed sessions), so only one session is created at startup