Repository navigation
test: align with OWNd#83 (WHO 25 command test, golden corrections) - #643
Merged
GreenGrassBlueOcean merged 3 commits intoOct 6, 2026
Merged
GreenGrassBlueOcean merged 3 commits into
GreenGrassBlueOcean merged 3 commits into
Conversation
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
*25*0*31## (WHAT 0) only parsed as OWNDryContactCommand because OWNd's WHO 25 command parser sent every WHAT outside 21..28 there. The OWNd#82 follow-up makes it follow fix 9's event rule (only WHAT 31/32 are dry contacts), so the test now uses *25*31#1*339##, a frame captured on the MyHOME#466 plants. It passes with OWNd 2.0.0b9, the OWNd#82 head and the follow-up. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Same corrections as OpenWebNet-HA/OWNd#83 in MyHOME's copy of the corpus: antifreeze and protection zone commands (*4*102*#1##, *4*302*#1## instead of 110/111), the two-digit local-bus interface for cover 21, the H4890 dry-contact capture *25*31#1*339## instead of *25*31#1*15##, a note on the disputed CEN WHERE 0001 and the MH200N + MyHomeServer1 capture *15*03#3*0512## (MyHOME#624). SOURCE.yaml lists the new captures; README and corpus.json follow (184 fixtures). Passes with OWNd 2.0.0b9. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
OWNd#83 deprecates OWNHeatingCommand.central_status(): it builds *#4*#0*14##, which an F454 (#629) and a real MyHomeServer1 refuse. The dim14_legacy entry keeps the frame as a record, without a builder block; MyHOME polls with status('#0'). Passes with OWNd 2.0.0b9. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GreenGrassBlueOcean
force-pushed
the
test/who25-dry-contact-command-frame
branch
from
October 6, 2026 21:21
564d736 to
1563ff9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
MyHOME-side companion to OpenWebNet-HA/OWNd#83, the review follow-up to OWNd#82. Test and fixture changes only; everything passes with the pinned OWNd 2.0.0b9, so this can merge before or after the OWNd release.
1. WHO 25 command parse test (
a53ea808)TestCommandParseRouter::test_who25_dry_contactparsed*25*0*31##and expected anOWNDryContactCommand. WHAT 0 is not a dry contact: dry contacts are WHAT 31 and 32. The test only passed because OWNd's WHO 25 command parser sent every WHAT outside 21–28 toOWNDryContactCommand. OWNd#83 makes the command parser follow the event rule from OWNd#77 fix 9 (only 31/32 are dry contacts), which breaks the test. It now parses*25*31#1*339##, a dry-contact frame captured on the MyHOME#466 plants. MyHOME's own code only buildsOWNDryContactCommand.status()(*#25*…##), which does not change.2. Golden corpus: the same corrections as OWNd#83 (
9a07ccf4)MyHOME keeps its own copy of the golden corpus. These blocks are copied from OWNd#83, and only where MyHOME's block was identical to OWNd's old one:
thermo.cmd.mode.antifreeze.zone1*4*110*1##*4*102*#1##*4*102*#WHERE##.thermo.cmd.mode.protection.zone1*4*111*1##*4*302*#1##*4*302*#WHERE##; libqtdevices sends 302 to#zone.cover.cmd.up.bus.21,cover.cmd.stop.bus.2121#4#121#4#01INTERFACE = [0-1][1-9].dry_contact.event.on.15→dry_contact.event.on.339*25*31#1*15##*25*31#1*339##3.cen.event.extended_press.btn1.00010001, but bt_luci refuses it; no capture either way.cen.event.extended_press.btn3.0512(new)*15*03#3*0512##OWNCenCommand.start_long_pressbuilder parity.SOURCE.yamllists the three captures (#466 H4890, #629 F454, #624). The README andcorpus.jsonfollow (184 fixtures). MyHOME's copy already had the #629 central-unit status fix, which OWNd#83 now mirrors.3. Deprecated
central_status()(564d736a)OWNd#83 deprecates
central_status(), which builds*#4*#0*14##, a frame gateways refuse. Thethermo.cmd.central.status.cu99.dim14_legacyentry keeps the frame as a record, without its builder block. MyHOME polls the central unit withstatus("#0")and never calledcentral_status(). Theset_central_modebuilder blocks OWNd#83 adds to the two zone fixtures are not mirrored yet: with 2.0.0b9 they would build 110/111. They belong with the 2.0.0b10 bump.Not changed here
("cover.cmd.up.bus.21", "MH200N"): "nack"entry inKNOWN_GATEWAY_DISCREPANCIES(tests/test_firmware_oracle_conformance.py) no longer matches anything: the corrected frame is not in the oracle index. The test ignores it. Removing it would conflict with fix(climate): align central unit mode commands and fan mode with OWNd canonical protocol (OWNd#77) #630, which edits the neighbouring lines.docs/protocol_conformance_matrix.mdstill lists*2*1*21#4#1##; OWNd#82 fix 10 already replaced it in OWNd's copy.Verification
tests/test_golden_conformance.py,tests/test_firmware_oracle_conformance.pyandtests/test_gateway_messages.py:29040c9): 650 passed, 5 failed, with OWNd deprecation warnings turned into errors. All five are the old-frame tests fix(climate): align central unit mode commands and fan mode with OWNd canonical protocol (OWNd#77) #630 updates (four central-mode builder-parity cases,test_dry_contact_off), none from this PR.tools/golden/validate_corpus.py: 256 frames valid.git merge-treeagainst #630's branch: no conflicts.🤖 Generated with Claude Code