v0.3.9
Changelog
[0.3.9] - 2025-10-16
Fixed
- number/select: correct DeviceInfo usage (return dict / assign
connectionsproperly) to prevent runtime TypeError.
Changed
- Bump from 0.3.9a11 to 0.3.9 (stable).
[0.3.9a11] - 2025-10-16
Changed
- Device Registry metadata unified across all platforms:
manufacturerfrom constantMANUFACTURER.modelfrom devicebrand(fallback"Airzone DKN").sw_versionfrom devicefirmware(fallback"").namefrom devicename(fallback"Airzone Device").- Added
connectionswith MAC when available to ensure entities group under the same Device.
Affected files:climate.py,sensor.py,switch.py,number.py,select.py,binary_sensor.py.
No runtime changes.
[0.3.9a10] - 2025-10-14
Changed
- Binary sensor: use
const.MANUFACTURERfor Device Registry consistency (metadata only).
[0.3.9a9] - 2025-10-14
Changed
- types: Parameterized
CoordinatorEntitywithAirzoneCoordinatoracross all platforms to improve IDE/linters hints (coordinator.api, typedcoordinator.data). Applies to:climate.pyswitch.pysensor.pyselect.pynumber.py(including the_BaseDKNNumberbase class)binary_sensor.py
No runtime changes.
Developer Notes
- Added local type annotations for
coordinatorinasync_setup_entrywhere applicable to strengthen typing without altering behavior.
[0.3.9a8] - 2025-10-14
Changed
- Device registry: unified manufacturer label to
Daikin / Airzoneacross switch/number/select. - Numbers:
sleep_timenow usesUnitOfTime.MINUTESfor UI consistency (sensor already used minutes).
Security/Privacy
- Sensors: stricter PII cleanup — remove entities only by exact
unique_idmatch; legacy suffix fallback removed to prevent overmatching.
[0.3.9a7] - 2025-10-14
Changed
- Switch: use
hass.loop.time()directly for optimistic TTLs (removed local_now()wrapper) to stay consistent with climate/select/number. No behavior change.
[0.3.9a6] - 2025-10-14
Fixed
- API: 401 re-login no longer retries with the stale token. After refreshing the token we rebuild auth params, so the retry uses the new token.
- Setup: wrap
login()withConfigEntryNotReadyfor network/server errors (clean recovery on startup).
Changed
- Logging: mask HTTP paths in debug logs (no query string and only the first path segment).
- Binary sensor: defensive guards when iterating the coordinator snapshot and reading the device.
- Sensors:
sleep_timenow usesdevice_class=durationwith unitminfor better UI consistency (thenumberentity remains unchanged).
[0.3.9a5] - 2025-10-13
-
Changed
- Centralized optimistic timings in
const.py:OPTIMISTIC_TTL_SEC = 2.5POST_WRITE_REFRESH_DELAY_SEC = 1.0
climateandswitchnow use these shared constants for optimistic TTL and post-write delayed refresh.numberandselectnow use the sharedOPTIMISTIC_TTL_SECwhile keeping their immediate refresh flow (only TTL changed).
Added
climate: exposescurrent_temperature(°C) from coordinatorlocal_tempfor better UI parity (read-only, no optimistic cache).
[0.3.9a4] - 2025-10-12
Changed
- Kept the
select.scenaryentity to avoid breaking changes. The entity is now categorized under Configuration so it appears next tonumber.*settings (e.g.,sleep_time, unoccupied min/max limits). - Scene control remains available both via
climate.preset_modes(home,away,sleep) andselect.scenary(occupied,vacant,sleep).
Notes
- For new automations, we recommend using
climate.set_preset_modefor consistency with Home Assistant's climate presets. The legacy select remains available for convenience.
[0.3.9a3] - 2025-10-12
Changed
climate: when the user triggers an active command (turn_on, set_hvac_mode!=OFF, set_temperature, set_fan_mode) whilepreset_modeisaway, the entity now automatically switches scenary tooccupied(preset_mode→home) before sending the command. This avoids backend auto-shutdowns that can occur invacant.
Fixed
climate: continue to reflect backend scenary changes promptly by expiring the optimistic cache on coordinator updates and when TTL elapses.
[0.3.9a2] - 2025-10-12
Fixed
climate: reflect backend scenary changes promptly by expiring the optimistic cache on coordinator updates and when TTL elapses. Prevents stalepreset_modewhen the state is changed from the web/app or when the backend transitions (e.g., vacant→occupied).
[0.3.9a1] - 2025-10-12
Added
climate: support for Home Assistantpreset_modes(home,away,sleep) mapped to backendscenary(occupied, vacant, sleep). Idempotent writes with optimistic TTL.
Changed
climate: always includePRESET_MODEinsupported_features. No auto-forcing scenary after other writes (reflect backend truth on refresh).
Notes
- Configuration values like
sleep_timeand unoccupied min/max limits remain exposed vianumber.*entities for now.
What's Changed
- v0.3.9 by @eXPerience83 in #7
Full Changelog: v0.3.8...v0.3.9