You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
test(trace): add WHO 18 Dimension 1200 energy stream lifecycle trace and replay test (#466) - #660
Trace Provenance & Architecture: This PR provides the end-to-end replay test and fixture for the WHO 18 Dimension 1200 energy streaming lifecycle. The active power telemetry frames and gateway profile are sourced verbatim from authentic customer on-wire captures (issue_466), while the Dimension 1200 handshake sequence is modeled from Legrand specification WHO_18.pdf and gateway binary execution (bt_supervisione).
test(trace): add WHO 18 Dimension 1200 energy stream lifecycle trace and replay test (#466)
Summary
Adds an end-to-end trace fixture and deterministic replay test suite for the complete WHO 18 Dimension 1200 automatic instant power stream lifecycle (*#18*WHERE*#1200#Type*Time## start/stop command write and *#18*WHERE*1200#Type*Time## status reply).
Companion to:
OWNd PR OpenWebNet-HA/OWNd#92 (fix(energy): parse the WHO 18 dimension 1200 automatic-update reply)
Downstream companion PR OpenWebNet-HA/MyHOME#661 (fix(energy): align active power queries and dimension 1200 stream lifecycle)
Detailed Provenance & Sources
The fixture myhome_trace_energy_dimension1200_stream.json is constructed from the following specific sources:
1. Authentic On-Wire Customer Bus Telemetry (issue_466)
Hardware Profile: Physical BTicino MyHomeServer1 (firmware 2.87.13, MAC prefix 00:03:50) on a live installation with F520 energy meters at addresses 51, 52, and 53.
Frames extracted verbatim:
*#18*51*113*377## (377 W instantaneous active power, timestamp 1790841036.878588)
*#18*51*113*424## (424 W instantaneous active power, timestamp 1790841038.883864)
*#18*51*113*500## (500 W instantaneous active power, timestamp 1790841040.873745)
2. Specification Grounding (Legrand Public Protocol)
Official Document: Open Web Net Language, WHO = 18 ENERGY MANAGEMENT (WHO_18.pdf), Section 3.2.1:
Start auto-update: *#18*WHERE*#1200#Type*Time## (Type 1 = active power, Time = 1..255 minutes).
*#18*51*1200##$\rightarrow$NACK (*#*0##, dropped at gateway router boundary; never reaches SCS bus).
4. Corpus Context from Existing Issues
issue_629 (tests/fixtures/traces/issue_629/): Captures authentic production failures where Home Assistant sent the invalid read request *#18*WHERE*1200## and physical F454 gateways dropped it with NACK (Could not send message *#18*74#0*1200##. No more retries.).
issue_649 (tests/fixtures/traces/issue_649/README.md): Live plant test table confirming *#18*51*#1200#1*255## ACKs while *#18*51*1200## NACKs on physical MyHomeServer1.
Documents hardware profile, detailed provenance, frame-by-frame protocol semantics, and the architectural distinction between Dimension 1200 (stream lease control) and Dimension 113 (active power telemetry).
GreenGrassBlueOcean
changed the title
test(trace): add authentic WHO 18 Dimension 1200 energy stream trace and replay test (#466)
test(trace): add WHO 18 Dimension 1200 energy stream lifecycle trace and replay test (#466)
Oct 8, 2026
In accordance with the repository's strict trace integrity standard ("They are facts: never edit a frame"), fixtures in tests/fixtures/traces/ must exclusively contain authentic, untouched customer on-wire bus captures.
Because the Dimension 1200 handshake frames in myhome_trace_energy_dimension1200_stream.json were synthesized from specification and firmware models rather than captured verbatim from a physical installation emitting *#18*WHERE*1200#Type*Time##, this fixture cannot be accepted into the trace corpus.
Closing and withdrawing this PR. OWNd PR #92 remains blocked until an authentic bus capture is contributed from a physical plant.
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
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.
Note
Trace Provenance & Architecture: This PR provides the end-to-end replay test and fixture for the WHO 18 Dimension 1200 energy streaming lifecycle. The active power telemetry frames and gateway profile are sourced verbatim from authentic customer on-wire captures (
issue_466), while the Dimension 1200 handshake sequence is modeled from Legrand specificationWHO_18.pdfand gateway binary execution (bt_supervisione).test(trace): add WHO 18 Dimension 1200 energy stream lifecycle trace and replay test (#466)
Summary
Adds an end-to-end trace fixture and deterministic replay test suite for the complete WHO 18 Dimension 1200 automatic instant power stream lifecycle (
*#18*WHERE*#1200#Type*Time##start/stop command write and*#18*WHERE*1200#Type*Time##status reply).Companion to:
fix(energy): parse the WHO 18 dimension 1200 automatic-update reply)fix(energy): align active power queries and dimension 1200 stream lifecycle)Detailed Provenance & Sources
The fixture
myhome_trace_energy_dimension1200_stream.jsonis constructed from the following specific sources:1. Authentic On-Wire Customer Bus Telemetry (
issue_466)tests/fixtures/traces/issue_466/myhome_trace_MyHomeServer1_all_2026-10-01T07-59-11.json2.87.13, MAC prefix00:03:50) on a live installation with F520 energy meters at addresses 51, 52, and 53.*#18*51*113*377##(377 W instantaneous active power, timestamp1790841036.878588)*#18*51*113*424##(424 W instantaneous active power, timestamp1790841038.883864)*#18*51*113*500##(500 W instantaneous active power, timestamp1790841040.873745)2. Specification Grounding (Legrand Public Protocol)
Open Web Net Language, WHO = 18 ENERGY MANAGEMENT(WHO_18.pdf), Section 3.2.1:*#18*WHERE*#1200#Type*Time##(Type 1= active power,Time = 1..255minutes).*#18*WHERE*#1200#Type*0##(Time = 0stops streaming).*#18*WHERE*1200#Type*Time##(Time > 0confirms active lease,Time = 0confirms stream halted).*#18*WHERE*113##.functional/who-18-energy-management/dimensions.md(ownkb:chunk:r000421).3. Firmware Binary Translation & Oracle Evidence (
bt_supervisione)Replay across the gateway supervisor daemon
bt_supervisione(identical binaries onMyHomeServer1,F454,F459,F461):*#18*51*#1200#1*125##ACK(*#*1##)D1 A1 02 32 00 02 1D 7D(1D= active power,7D= 125 min).*#18*51*#1200#1*0##ACK(*#*1##)D1 A1 02 32 00 02 1D 00(Stream stop).*#18*51*1200##NACK(*#*0##, dropped at gateway router boundary; never reaches SCS bus).4. Corpus Context from Existing Issues
issue_629(tests/fixtures/traces/issue_629/): Captures authentic production failures where Home Assistant sent the invalid read request*#18*WHERE*1200##and physical F454 gateways dropped it with NACK (Could not send message *#18*74#0*1200##. No more retries.).issue_649(tests/fixtures/traces/issue_649/README.md): Live plant test table confirming*#18*51*#1200#1*255##ACKs while*#18*51*1200##NACKs on physical MyHomeServer1.Changes
tests/fixtures/traces/issue_466/myhome_trace_energy_dimension1200_stream.json:tests/fixtures/traces/issue_466/README.md:tests/golden/frames/who18_energy.yaml&tests/golden/corpus.json:#1200#1*255), confirmation (1200#1*125), stop (#1200#1*0), and stop confirmation (1200#1*0).tests/test_golden_conformance.py:OWNEnergyCommandin builder parity map for golden testing.tests/test_energy_dimension1200_trace.py:Downstream Consumer (
MyHOME)Provides the verification baseline for downstream PR #661, ensuring that:
*#18*{where}*1200##is permanently eliminated.MESSAGE_TYPE_AUTO_UPDATE_INTERVALis parsed to maintain stream lease timers.Verification
pytest tests/test_energy_dimension1200_trace.py: Passed (11/11 frames verified).pytest tests/test_golden_conformance.pypassed with 0 regressions.