Repository navigation
test(traces): live F461 WHO 13 clock writes with 0530 / 124 time zones (OWNd#144 evidence) - #823
Open
gdluck wants to merge 1 commit into
Conversation
…s (OWNd#144) Derived trace archive tests/fixtures/traces/f461_who13_clock_tz_live_2026-10-26/ from a 2026-10-26 capture on the physical F461 2.0.11, asked for in OpenWebNet-HA/OWNd#144 (comment 6426869553): an event-only listener for the whole run and a probe command session that wrote the gateway clock with the time-zone field 0530 and 124 in the dimension 0 and dimension 22 forms, read the clock back after each write, waited through the gateway's 10-minute clock broadcast and restored 999. Listener and probe ran the OpenWebNet-HA#144 head (da77a53); every row that carries a frame stores both that decode (ownd_class / ownd_log / ownd_timezone / ownd_raw_timezone) and OWNd master's (ownd_master_class / ownd_master_log, or ownd_master_error where master raised). What the F461 did: every write ACKed in 9 - 18 ms with no reply, no echo on the event session (not within 3 s, not anywhere in the 13-minute window), every read-back 999, the broadcast with an empty time-zone field, the restore ACKed and not echoed either. On the 16 frames the gateway emitted both OWNd decodes are identical; master's ValueError is raised only on the four written command strings (the OpenWebNet-HA#144 head parses them with timezone None, raw_timezone kept). The README also records the MyHomeServer1 3.87.13 run of the same sequence (dimension 0 writes dropped without a reply, dimension 22 ACKed without an echo, read-backs 999; its frames are not in the repository). Tests pin the ACK timing of each write, the absence of an echo, the 999 read-backs on both sessions, the broadcast, the restore, the clock deduction, the master-vs-head decode difference on the written strings (fail before / pass after), and replay the event-session frames through GatewayEventDispatcher.process_message (the 999 read-backs clear the unconfigured-time-zone repair issue of an F461 entry). The five written frames are listed in CLOCK_DEPENDENT_TX_FRAMES (their time field is the capture's wall clock, the oracle writes 14:30:00). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This branch has not been deployed
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.
Requested by A
Before: the WHO 13 clock writes with the non-standard time zones
0530and124that OpenWebNet-HA/OWNd#144 handles had no physical trace; the only evidence was the firmware oracle, whose emulated F450 stores and echoes them and whose emulated F461 echoes the999restore.After: a derived trace archive of the exact sequence GreenGrassBlueOcean asked for on OWNd#144, captured live on the F461 2.0.11 on 2026-10-26, with every frame decoded by both OWNd
masterand the OWNd#144 head, and 22 tests that pin what the gateway did.What is the problem
GreenGrassBlueOcean asked on OpenWebNet-HA/OWNd#144 (comment 6426869553) for a live F461 capture of
*#13**#0*HH*MM*SS*0530##,*#13**#0*HH*MM*SS*124##, the dimension 22 variants, a spontaneous 10-minute clock broadcast while a non-standard value was written, and the999restore, each with the current local time, as a MyHOME trace archive in the layout off461_actuators_live_2026-10-25, decoded with OWNdmaster(fail before) and the PR head (pass after). This PR is that archive.Fixes nothing in the integration; evidence only.
What is the solution
tests/fixtures/traces/f461_who13_clock_tz_live_2026-10-26/(e0426cc):myhome_trace_F461_who13_clock_tz_live_2026-10-26.json: 16 event frames / 79 rows in seven runs (baseline reads, the four writes, the broadcast listen, the restore), oneprobe_segmentsentry per probe invocation, every row with both decodes (ownd_*= OWNd#144 headda77a53,ownd_master_*/ownd_master_error= OWNdmaster050dc1d); synthetic MAC00:03:50:00:10:26, IP192.0.2.92.README.md: plant, file format, per-step table, the broadcast and restore findings, the clock deduction (1 s resolution, stated as "no written time was in effect at the read-back"), and a MyHomeServer1 comparison paragraph (its frames are not in the repository: the listener holds the house's own traffic).tests/test_f461_who13_clock_tz_live_2026_10_26_trace.py(22 tests): schema and privacy; both decodes on every row and their agreement on everything the F461 emitted; fail-before / pass-after on the written command strings (whichever OWNd is on the path must give one of the two recorded outcomes); one parametrised test per write (ACK 9-18 ms, no reply, no echo anywhere in the window); read-backs999on both sessions per run; dimension 22 not stored; the broadcast's empty time-zone field; the restore; replay of the 16 event frames throughGatewayEventDispatcher.process_message(each999read-back deletes the unconfigured-time-zone repair issue, the broadcast and the WHO 4 reports leave it alone).tests/test_trace_oracle_validation.py: the five written frames joinCLOCK_DEPENDENT_TX_FRAMES(their time field is the capture's wall clock; the oracle writes 14:30:00).State Diagram
N/A — trace fixture and tests only.
Hardware Verification
mastercould not have sent these writes). Every write with the current local time and today's date: the two dimension 0 writes and the two dimension 22 writes were each ACKed in 9-18 ms with no reply and nothing was echoed on the event session, not within 3 s and not anywhere in the 13-minute window; every*#13**0##/*#13**22##read-back answered999; the 10-minute broadcast at 20:50:00 UTC, with124the last value written, was*#13**#1*01*26*10*2026##+*#13**#0*22*50*00*##with an empty time-zone field; the restore*#13**#0*HH*MM*SS*999##was ACKed in 12 ms and not echoed (the oracle's emulated F461 echoes it; the physical one does not). So the real F461 neither stores nor echoes a non-standard offset: the read-back path with0530is live only on the emulated F450, andmaster'sValueErrorcannot escape the event session on a physical F461 echo because the gateway never emits one;masterraises on the written command string itself.0530,124, even the999restore) got no reply at all (10 s timeout, no ACK / NACK, no echo) and the next command was answered only after ~7 s; dimension 22 writes ACKed in 0.01 s without an echo; read-backs999; clock unchanged, as the oracle's028206emulation says.How is it tested
tests/test_f461_who13_clock_tz_live_2026_10_26_trace.py: 22 tests, passing on OWNdmaster050dc1d, on the OWNd#144 head da77a53 and on the 2.0.0b11 pin.pytest tests -n 4 --cov=custom_components/myhomewith OWNdmaster:5043 passed, 1 skipped,TOTAL 17455 0 100.0%;ruff check .clean;scripts/typing_ratchet.pymypy --strict: 0 error(s);scripts/verify_ha_standards.pySUCCESS;scripts/sync_documentation.py --checkSUCCESS;scripts/manage_translations.py checkno drift;scripts/update_trace_matrix.pyregenerated with no diff.Where are the traces
tests/fixtures/traces/f461_who13_clock_tz_live_2026-10-26/(this PR). Raw capture on file, not committed (the MyHomeServer1 part holds the house's own traffic).What does the Firmware Oracle / Encyclopedia say
WHO = 13): the time zone field of dimensions 0 and 22 isSHH;999means unconfigured.who13-clock): the emulated F450 stores and echoes0530/124; the emulated F461020011ACKs the writes and echoes the999restore; the emulated MyHomeServer1028206drops#0without a reply and ACKs#22without an echo. The physical F461 differs from its emulation on the echo (none) and matches the F454 / F459 "ACK, keep the old value" behaviour; the physical MyHomeServer1 matches its emulation.🤖 Generated with Claude Code