Skip to content

test: align with OWNd#83 (WHO 25 command test, golden corrections) - #643

Merged
GreenGrassBlueOcean merged 3 commits into
v2-phase1-architecturefrom
test/who25-dry-contact-command-frame
Oct 6, 2026
Merged

GreenGrassBlueOcean merged 3 commits into
v2-phase1-architecturefrom
test/who25-dry-contact-command-frame

Conversation

@GreenGrassBlueOcean

@GreenGrassBlueOcean GreenGrassBlueOcean commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

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_contact parsed *25*0*31## and expected an OWNDryContactCommand. 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 to OWNDryContactCommand. 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 builds OWNDryContactCommand.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:

Fixture Was Now Why
thermo.cmd.mode.antifreeze.zone1 *4*110*1## *4*102*#1## 110 is manual heating; the firmware forwards nothing for it. The Encyclopedia zone-setup table gives *4*102*#WHERE##.
thermo.cmd.mode.protection.zone1 *4*111*1## *4*302*#1## 111 is automatic heating. The Encyclopedia gives *4*302*#WHERE##; libqtdevices sends 302 to #zone.
cover.cmd.up.bus.21, cover.cmd.stop.bus.21 21#4#1 21#4#01 The firmware refuses a one-digit interface (au2); Encyclopedia WHO 2: INTERFACE = [0-1][1-9].
dry_contact.event.on.15 → dry_contact.event.on.339 *25*31#1*15## *25*31#1*339## H4890 capture. Every captured dry contact has a WHERE that starts with 3.
cen.event.extended_press.btn1.0001 unchanged notes added The spec allows WHERE 0001, but bt_luci refuses it; no capture either way.
cen.event.extended_press.btn3.0512 (new) — *15*03#3*0512## MH200N + MyHomeServer1 capture from #624, with OWNCenCommand.start_long_press builder parity.

SOURCE.yaml lists the three captures (#466 H4890, #629 F454, #624). The README and corpus.json follow (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. The thermo.cmd.central.status.cu99.dim14_legacy entry keeps the frame as a record, without its builder block. MyHOME polls the central unit with status("#0") and never called central_status(). The set_central_mode builder 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

Verification

tests/test_golden_conformance.py, tests/test_firmware_oracle_conformance.py and tests/test_gateway_messages.py:

tools/golden/validate_corpus.py: 256 frames valid. git merge-tree against #630's branch: no conflicts.

🤖 Generated with Claude Code

@GreenGrassBlueOcean GreenGrassBlueOcean changed the title test(who25): use a real dry-contact frame in the command parse test test: align with OWNd#83 (WHO 25 command test, golden corrections) Oct 6, 2026
@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 and others added 3 commits October 6, 2026 23:12
*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
GreenGrassBlueOcean force-pushed the test/who25-dry-contact-command-frame branch from 564d736 to 1563ff9 Compare October 6, 2026 21:21
@GreenGrassBlueOcean
GreenGrassBlueOcean merged commit 394c028 into v2-phase1-architecture Oct 6, 2026
16 checks passed
@GreenGrassBlueOcean
GreenGrassBlueOcean deleted the test/who25-dry-contact-command-frame branch October 21, 2026 19:35
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