Skip to content

Adaptive Cover Pro ⛅ v2.28.0-beta.1

Pre-release
Pre-release

Choose a tag to compare

@jrhubott jrhubott released this 10 Jun 05:47
· 174 commits to main since this release

ℹ Using release notes from: release_notes/v2.28.0-beta.1.md
This beta introduces a FOV-mode selector that lets you derive field-of-view from physical reveal measurements instead of manually entering angles, patches a low-sun edge-case that incorrectly left covers open at near-zero elevations, and ships several performance and robustness improvements under the hood.

🎯 Highlights

Beta — please test and report back.

  • Try the new FOV-mode selector: configure a window using MEASUREMENTS mode (reveal depth → fov_from_reveal()) and confirm the computed angles match your physical window.
  • Verify the low-sun behavior change: at very low sun elevations the cover now returns 0 (fully closed) rather than the previous h_win value (fully open). Confirm this is correct for your installation.
  • Geometry caching and write-gating are internal changes — normal operation should be unchanged. Flag any unexpected behavior.

✨ Features

FOV-mode selector (#565)

Adds a FovMode enum (ANGLES | MEASUREMENTS) and a new CONF_FOV_MODE option to the config flow. When MEASUREMENTS mode is selected, the integration derives the field of view from physical reveal depth via fov_from_reveal() rather than requiring manual angle entry. The fov_mode_schema() helper builds the relevant config-flow step, and supports_fov_mode on the cover-type policy gates the option to cover types where it applies. Translations updated for English, German, and French.

🐛 Bug Fixes

Low-sun edge case returns closed position (#559, #562)

At very low sun elevations a geometry edge case caused the cover calculation to return h_win (fully open) instead of 0 (fully closed). The fix corrects the return value so the cover closes rather than opens when the sun is near the horizon. Verified by test_low_elevation_calc_percentage_is_fully_closed.

🔧 Internal

Write-gating, geometry caching, and sun availability guard (#543)

Three robustness and performance improvements shipped together:

  • Write-gating: _acp_render_signature() detects when a calculated position is identical to the last written value and skips the HA state write, reducing redundant entity updates.
  • Geometry cache: Pure geometry helpers are decorated with @lru_cache(maxsize=512), eliminating repeated identical calculations across update cycles.
  • Sun availability guard: A guard on sun.sun suppresses solar tracking when the sun entity is unavailable, preventing stale or error-state data from driving cover commands.

🧪 Testing

Test suite grows from 4,214 to 4,271 (+57 net new tests). New modules:

  • test_config_flow_fov_mode.py / test_fov_mode.py — FOV-mode selector and fov_from_reveal() calculation
  • test_entity_write_gating.py — write-gating behavior
  • test_geometry_cache.py — cache correctness and hit behavior
  • test_sun_unavailable_guard.py — solar tracking suppression when sun entity unavailable

Compatibility

Requires Home Assistant 2026.3.0+. No new coupled-component requirements.

References