Skip to content

fix(climate): omit unsupported 'off' from fancoil fan modes (#410) - #412

Merged
GreenGrassBlueOcean merged 1 commit into
v2-phase1-architecturefrom
fix/issue-410-omit-fan-mode-off
Sep 19, 2026
Merged

GreenGrassBlueOcean merged 1 commit into
v2-phase1-architecturefrom
fix/issue-410-omit-fan-mode-off

Conversation

@GreenGrassBlueOcean

Copy link
Copy Markdown
Contributor

Resolves #410. Related to OpenWebNet-HA/openwebnet-mcp#1.

Root Cause

In OpenWebNet WHO=4 (Temperature Control) specifications, Dimension 11 (Fan coil Speed) status values are 0=Auto, 1=Speed 1, 2=Speed 2, 3=Speed 3, and 15=OFF (read-only status).
Speed code 4 was a legacy non-standard placeholder which does not exist in the BTicino OpenWebNet protocol and is silently dropped by physical gateways (e.g. F461). Furthermore, physical thermostats (such as LN4691, 3550) only cycle Auto -> Speed 1 -> Speed 2 -> Speed 3 -> Auto without an independent off fan mode while active; fancoils are stopped automatically by actuator idle state (Dimension 20, Val 5) when target temperature is reached or when setting the zone to HVACMode.OFF.

Changes

  1. custom_components/myhome/climate.py:
    • Omitted "off" from _attr_fan_modes. The list of supported fan modes is now ["auto", "low", "medium", "high"].
    • Removed "off": 4 from fan_mode_map in async_set_fan_mode().
    • Ensured incoming D11 frames with fan_on=False or 15 update actuator state attributes (running_fan_speed) rather than overwriting target preset _attr_fan_mode.
  2. Tests:
    • Updated tests/test_component_climate.py, tests/test_issue_303.py, and tests/test_trace_replay.py to match the 4 supported fan modes.
    • Added test assertion that attempting to set unsupported "off" fan mode raises ServiceValidationError.
    • 1732 passed, 100.0% coverage preserved across custom_components/myhome.

@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@GreenGrassBlueOcean
GreenGrassBlueOcean requested review from xtimmy86x and removed request for xtimmy86x September 18, 2026 21:52
@GreenGrassBlueOcean
GreenGrassBlueOcean merged commit 2bb6562 into v2-phase1-architecture Sep 19, 2026
19 checks passed
@GreenGrassBlueOcean
GreenGrassBlueOcean deleted the fix/issue-410-omit-fan-mode-off branch September 19, 2026 13:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants