Skip to content

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
OpenWebNet-HA:v2-phase1-architecturefrom
gdluck:test/trace-f461-who13-clock-tz-live-2026-10-26
Open

gdluck wants to merge 1 commit into
OpenWebNet-HA:v2-phase1-architecturefrom
gdluck:test/trace-f461-who13-clock-tz-live-2026-10-26

Conversation

@gdluck

@gdluck gdluck commented Oct 26, 2026

Copy link
Copy Markdown

Requested by A

Before: the WHO 13 clock writes with the non-standard time zones 0530 and 124 that 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 the 999 restore.

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 master and 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 the 999 restore, each with the current local time, as a MyHOME trace archive in the layout of f461_actuators_live_2026-10-25, decoded with OWNd master (fail before) and the PR head (pass after). This PR is that archive.

Fixes nothing in the integration; evidence only.


What is the solution

  1. 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), one probe_segments entry per probe invocation, every row with both decodes (ownd_* = OWNd#144 head da77a53, ownd_master_* / ownd_master_error = OWNd master 050dc1d); synthetic MAC 00:03:50:00:10:26, IP 192.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).
  2. 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-backs 999 on both sessions per run; dimension 22 not stored; the broadcast's empty time-zone field; the restore; replay of the 16 event frames through GatewayEventDispatcher.process_message (each 999 read-back deletes the unconfigured-time-zone repair issue, the broadcast and the WHO 4 reports leave it alone).
  3. tests/test_trace_oracle_validation.py: the five written frames join CLOCK_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

  • F461 2.0.11 (test plant), 2026-10-26 20:46-20:59 UTC, event-only listener for the whole run plus a probe command session, both on the OWNd#144 head (the probe refuses to send what its OWNd cannot parse, so master could 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 answered 999; the 10-minute broadcast at 20:50:00 UTC, with 124 the 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 with 0530 is live only on the emulated F450, and master's ValueError cannot escape the event session on a physical F461 echo because the gateway never emits one; master raises on the written command string itself.
  • MyHomeServer1 3.87.13 (the user's home, writes allowed for this test), 21:01-21:03 UTC: dimension 0 writes (0530, 124, even the 999 restore) 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-backs 999; clock unchanged, as the oracle's 028206 emulation says.

How is it tested

  • tests/test_f461_who13_clock_tz_live_2026_10_26_trace.py: 22 tests, passing on OWNd master 050dc1d, on the OWNd#144 head da77a53 and on the 2.0.0b11 pin.
  • pytest tests -n 4 --cov=custom_components/myhome with OWNd master: 5043 passed, 1 skipped, TOTAL 17455 0 100.0%; ruff check . clean; scripts/typing_ratchet.py mypy --strict: 0 error(s); scripts/verify_ha_standards.py SUCCESS; scripts/sync_documentation.py --check SUCCESS; scripts/manage_translations.py check no drift; scripts/update_trace_matrix.py regenerated with no diff.
  • Kimi (independent check of the README facts against the raw rows): one timing range corrected before the commit, the clock deduction narrowed to what the rows show.

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

  1. OpenWebNet Encyclopedia (WHO = 13): the time zone field of dimensions 0 and 22 is SHH; 999 means unconfigured.
  2. Firmware Oracle (who13-clock): the emulated F450 stores and echoes 0530 / 124; the emulated F461 020011 ACKs the writes and echoes the 999 restore; the emulated MyHomeServer1 028206 drops #0 without a reply and ACKs #22 without 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

…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-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!

This branch has not been deployed

No deployments
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