Repository navigation
test(#466): Legrand F455 1.0.76 live drive and direct requests (2026-11-06) - #872
Conversation
…quests (2026-11-06) Add two captures from one F455 on the F461 test plant's shared SCS bus, with the gateway address and MACs made synthetic: - F455_full_debug_log_2026-11-06T16-24-46.log: the Home Assistant core log of the F455 entry at DEBUG during a reload, myhome.sweep_bus and a drive of every configured light, dimmer, shutter and zone setpoint (MyHOME 2.0.0b17, OWNd 2.0.0b13). - F455_direct_requests_2026-11-06.jsonl: status requests sent directly to the F455 with OWNd (ACK, elapsed time, collected replies) plus the event-session frames. Pinned by tests/test_issue_466_f455_live_2026_11_06_trace.py (13 tests, green on OWNd 2.0.0b13 and dev): firmware 1.0.76 / WHO 1013 code 8, full parse coverage, the standby entry skipping every startup general request, zones that never ask for temperature, setpoint or status, single-dimension zone reads answered in ~0.1 s, *michnovka#4*Z## and *michnovka#4*0## acknowledged only after ~9 s, *michnovka#4*Z*20## and *michnovka#4*Z*60## NACKed while *michnovka#4*Z#1*20## answers, and *#2*05*10## / *OpenWebNet-HA#18*51*51## / *OpenWebNet-HA#18*51*113## without an ACK inside OWNd's 10 s window. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
@GreenGrassBlueOcean, could you give feedback on this corpus and on its companion fix #873? For context: this is a real, physical Legrand F455 (firmware 1.0.76), not an emulation. It sits on the same SCS bus as our F461 test gateway, so it drives the same physical devices as the F461 fixtures already in the corpus: lights 06/07/09 behind an F422, the F418 dimmer 0010, shutter 05, standalone zone 2, the 3550 central unit and zone 4. Every frame in these two files was sent or received by the F455 alone. The F461 was not used for any of it. Two points I'd especially value your view on:
|
b6c58b0
into
OpenWebNet-HA:v2-phase1-architecture
Requested by A
What is the problem
The corpus has one F455 capture from 2026-10-09 (issue_674) and one config-entry trace, but no capture of what the F455 firmware answers to each status request MyHOME uses, and none of MyHOME driving every device type through an F455. The F455 has no image in own-firmware-oracle, so live captures are the only evidence for it.
Part of #466
What is the solution
Add two verbatim captures from one Legrand F455 (firmware 1.0.76) on the F461 test plant's shared SCS bus (lights
06/07/09#4#01, F418 dimmer0010, shutter05, standalone zone2, 3550 central unit#0, zone4, 4611 IR detector344). The F455's address and MAC and the primary F461's MAC are synthetic (192.0.2.55,00:03:50:00:11:06,00:03:50:00:11:07); nothing else is changed. Both files carry only F455 traffic.tests/fixtures/traces/issue_466/F455_full_debug_log_2026-11-06T16-24-46.log: the Home Assistant 2026.11.0 core log of the F455 entry at DEBUG, covering a reload,myhome.sweep_bus, lights on/off, dimmer plain ON / 50 % / 100 % / off, shutter open / stop / close, and the zone 2 setpoint to 22.5 °C and back (MyHOME 2.0.0b17, OWNd 2.0.0b13). It is a.loglike the issue_674 F455 log, so the trace matrix script (which attributes every.txtto F454 on this base) leaves the matrix unchanged. The F455 row already exists.tests/fixtures/traces/issue_466/F455_direct_requests_2026-11-06.jsonl: status requests sent directly to the F455 with OWNd, one record per request (ACK, elapsed seconds, collected replies) and per event-session frame. Status requests only; WHO 4 dimension 22,*#16*0*5##and WHO 13 dimensions 10/11/12 were never sent.tests/fixtures/traces/issue_466/README_f455_live_2026-11-06.md(provenance and findings) andtests/test_issue_466_f455_live_2026_11_06_trace.py(13 tests).State Diagram
N/A — tests and fixtures only; no runtime behaviour changes.
Hardware Verification
Captured live on the physical F455; every write was restored (dimmer memory left at 100 %, shutter closed, zone 2 setpoint back to 22.0 °C). What the F455 1.0.76 firmware does:
*#4*Z*0##,*#4*Z*12##,*#4*Z*13##,*#4*Z*14##,*#4*Z*19##*#4*Z##*#4*0##*#4*#0##*#4*Z*20##,*#4*0*20##,*#4*Z*60##*#4*Z#1*20##*#4*2#1*20*7##,*#4*4#1*20*0##)*#1*0##/*#2*0##*#1*0010*1##on the OFF dimmer*#1*0010*4*100*2##(as on F454 and F459)*#2*05*10##,*#18*51*51##,*#18*51*113##*#5*0##/*#25*344##200, firmware1.0.76, uptime, object model8(F455)What MyHOME does on it (debug log):
standbyof the F461, whose entry was not loaded. MyHOME still skips every startup general request (Skipping WHO=1/2/4/5/16/18 discovery: follower gateway on shared bus) and prunes 9 entities "in favor of primary gateway".myhome.sweep_bussends only WHO 13/1013 reads.*#4*#0##,*#4*Z*11##and the refused*#4*Z*20##. No temperature, setpoint or zone-status request goes out, so the standalone zone 2 stays empty until something else puts its values on the bus.Unsupported message typeat DEBUG.The suggested fix for the climate polling goes in a separate PR built on these fixtures.
How is it tested
tests/test_issue_466_f455_live_2026_11_06_trace.py(13 tests): green against the pinned OWNd 2.0.0b13 and against dev OWNd.scripts/sync_documentation.py --checkandscripts/verify_ha_standards.pypass;ruff checkandruff format --checkclean.Where are the traces
tests/fixtures/traces/issue_466/F455_full_debug_log_2026-11-06T16-24-46.logandtests/fixtures/traces/issue_466/F455_direct_requests_2026-11-06.jsonl(SHA-256 pinned), described intests/fixtures/traces/issue_466/README_f455_live_2026-11-06.md.What does the Firmware Oracle / Encyclopedia say
WHO = 4,who-4-temperature-control/dimensions.md): dimensions 0, 12, 13, 14, 19 are per-zone reads; dimension 20 is published as*#4*Z#N*20##(Z#N,Z#0,0#0), which is the form the F455 answers.WHO = 1(who-1-lighting/dimensions.md) records an F454 answering a dimension-1 read of an OFF dimmer with dimension 4; the F455 does the same.findings/F455/emulation-strategy.mdonly), so these captures are the first request-by-request F455 evidence.Checklist
pytest(on OWNd b13 and dev) andruffpass.🤖 Generated with Claude Code