Skip to content

feat(heating,profiles): add WHO 4 .actuator, #4#IF disambiguation, and profile capability flags - #168

Merged
GreenGrassBlueOcean merged 3 commits into
OpenWebNet-HA:masterfrom
gdluck:feat/who4-actuator-interface-and-profile-flags-r2
Nov 12, 2026
Merged

GreenGrassBlueOcean merged 3 commits into
OpenWebNet-HA:masterfrom
gdluck:feat/who4-actuator-interface-and-profile-flags-r2

Conversation

@gdluck

@gdluck gdluck commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Requested by A · project thread

Supersedes #164 (asked for in #164 (comment)). The three commits are the maintainer's own (@GreenGrassBlueOcean: cc7a97b, e377470, 124c32e), cherry-picked unchanged onto master 5cb9f2d (#157, #159, #160, #161 landed since the PR was opened) with their authorship kept; the only change is the resolution of the OWNd/message/heating.py conflict described below. Nothing else was edited.

What changed in the rebase

Only OWNd/message/heating.py conflicted (OWNHeatingEvent.__init__, the zone line): master carries the #156 guard (self._zone = _ascii_int(zone_digits) or 0, wildcard / non-ASCII WHERE gives zone 0 instead of ValueError), the PR replaced the same lines with _, where_params = self._interface_and_where_params() plus int(where). Resolution: keep master's guard and add the PR's where_params line before it, so #0#4#IF is still read as #0 behind interface IF and the #156 cases still parse. CHANGELOG.md and base.py merged automatically. Everything else is the PR as reviewed on 2026-11-08 (supports_heating_zone_status left None on F453 / F453AV / F455 / MH200N).

Checks on the rebased head

  • ruff check, mypy OWNd tests/typing, verify_library_standards.py, sync_documentation.py --check, update_readme_profiles.py --check, tools/golden/validate_corpus.py: all pass.
  • pytest --cov: 3388 passed, verify_coverage.py 100.0 % (7137 / 7137 statements, 28 modules). The two tests/test_sync_documentation.py live-README tests fail on master too once a fresh coverage.xml exists (README row for OWNd/exceptions.py, added by fix(connection): reopen an idle-closed command session before writing; name dropped 513 samples #167) — unrelated to this branch.
  • MyHOME v2-phase1-architecture test suite with this OWNd on PYTHONPATH: 5606 passed (the same run the myhome-conformance.yml job does).

Probes

The 13 WHO 4 frames of the earlier review (actuator Z#N, Z#4#IF, Z#N#4#IF, #0#4#IF, #0#C, Dimension 22 3#Z#N, fullwidth zone digits) decode identically to the proof merge posted on #164: *#4*1#4#01*20*1## gives zone 0 (guard), interface 01, actuator 1, no raise.

🤖 Generated with Claude Code
https://claude.ai/code/session_01TwNCwMGK7zfvvGh4ctGaKW

…ation, and profile flags

(cherry picked from commit cc7a97b)
…ed models

Oracle rows in trace-corpus.tsv show F453, F453AV, and MH200N emit the 4 SCS telegrams for *michnovka#4*1## identically to F454 rather than remaining silent, while F455 has no WHO 4 oracle rows. Leave supports_heating_zone_status as None (unverified) on F453, F453AV, F455, and MH200N so caller pacing policy continues to decide until live traces exist.

(cherry picked from commit 124c32e)
@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 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the clean rebase of #164 onto current master.The heating.py conflict resolution is correct: master’s #156 ASCII/wildcard zone guard is preserved, and the new where_params extraction is applied before it so #0#4#IF still reads as #0 on interface IF. The _interface_and_where_params() logic properly disambiguates actuator #4 from F422 #4#IF (and leaves Dimension 22 split addresses unrouted). Public .actuator on events and commands is a welcome addition.Profile flags are conservatively set from oracle + live traces; unverified models stay None so caller policy continues to decide. Tests cover the capability matrix. CI is fully green across the board (including the MyHOME suite).Ready to merge.

@GreenGrassBlueOcean
GreenGrassBlueOcean merged commit 2ab27fa into OpenWebNet-HA:master Nov 12, 2026
8 checks passed
@gdluck

gdluck commented Nov 12, 2026

Copy link
Copy Markdown
Contributor Author

I have few more findings to commit from the test plant and I think i'm done with PR's 😅

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.

3 participants