Skip to content

OpenWebNet Protocol Conformance & Capability Matrix

Authoritative Specification & Verification Baseline
Last Updated: September 11, 2026
Corpus Version: 1.0.0 (58 Fixtures, 11 Subsystems, 137 Automated Conformance Assertions)

This document serves as the verifiable truth for OpenWebNet protocol conformance across the Home Assistant (OpenWebNet-HA/MyHOME) and Python protocol driver (OpenWebNet-HA/OWNd) ecosystem.


1. The Three-Authority Triad

To prevent divergence and eliminate guesswork, every protocol frame and capability is evaluated against three distinct authorities:

Authority Reference Implementation Role & Authority
1. The Judge Legrand OpenWebNet Official Specification Manuals (interrogated via openwebnet-mcp) Legal Grammar: Defines whether a frame syntax, dimension boundary, or parameter structure is strictly valid per Legrand standards.
2. The Oracle openwebnet4j & openHAB OpenWebNet Binding (by Massimo Valla) Wire Baseline: Provides empirical on-wire factory strings, real-world edge cases, and 10+ years of mature production testing.
3. The SUT OWNd protocol engine & custom_components/myhome runtime System Under Test: Must parse, validate, roundtrip serialize, and build frames with 100% fidelity.

2. Subsystem Conformance & Capability Matrix

WHO Subsystem Verified Operations Canonical Frame Examples Judge (Legrand PDF) Oracle (openwebnet4j) Runtime Status
- Signaling Gateway ACK / NACK *#*1##, *#*0## Valid Matched VERIFIED (100%)
0 Scenarios Execute, Stop, Start *0*1*1##, *0*2*1## Valid Matched VERIFIED (100%)
1 Lighting ON/OFF, Status, Speed Dimming, Private Bus (#4#01), Dimension writes *1*1*0311#4#01##, *1*1#5*12##, *#1*1*#1*20## Valid Matched VERIFIED (100%)
2 Automation Shutter UP/DOWN/STOP, Bus Routing (#4#1), Slat Tilt, Position % *2*1*21#4#1##, *#2*1*#1*50##, *2*2*12## Valid Matched VERIFIED (100%)
4 Thermoregulation Probe queries (21.5°C), Setpoints, Antifreeze, Negative Temp (-4.8°C) *#4*1*0*0215##, *#4*6*12*1048*3##, *#4*1*#14*0200*1## Valid Matched VERIFIED (100%)
5 Burglar Alarm Zone status, CU status, Silent alarms, System arm/disarm *5*1*1##, *#5*1##, *5*2*2## Valid Matched VERIFIED (100%)
9 Auxiliary Relay ON/OFF commands across auxiliary channels *9*1*1##, *9*0*1## Valid Matched VERIFIED (100%)
13 Gateway Mgmt Firmware version, Gateway internal datetime requests *#13*0*0##, *#13*0*22## Valid Matched VERIFIED (100%)
15 CEN Scenarios Short press, start long press, release, extended hold *15*1*01##, *15*2*01##, *15*3*01## Valid Matched VERIFIED (100%)
18 Energy Mgmt Instantaneous active power (W), Cumulative energy (kWh) *#18*51*113##, *#18*51*51##, *#18*51*52## Valid Matched VERIFIED (100%)
25 CEN+ / Dry Contacts Short/Long press, release, 5-digit module addresses *25*21*0001##, *25*23*0001##, *25*22*0001## Valid Matched VERIFIED (100%)

3. Key Architectural Truths & Design Decisions

3.1 String Preservation for Hardware Addresses

  • Observation: Addresses such as 0311 (Lighting PTP) and 0001 (CEN+ module) begin with leading zeros.
  • Verifiable Truth: Addresses must never be converted to integers (311 or 1). In OpenWebNet, leading zeros denote specific address spaces and module wiring. OWNd strictly enforces string types for where across all subsystems.

3.2 Private Bus Routing (#4#bus)

  • Observation: Installations with multiple physical SCS buses behind an F454 or 3486 gateway use interface routing (e.g. *1*1*0311#4#01##).
  • Verifiable Truth: The interface routing suffix #4#<interface> is an addressing qualifier, not a dimension parameter. OWNd extracts this cleanly into parsed.interface = '01' and parsed.where = '0311', preserving 100% roundtrip wire string equality.

3.3 Strict Standards vs. Tolerant Synthesis (The Alarm WHERE Omission)

  • Observation: In openwebnet4j, frame *5*7*## (Alarm) synthesizes WHERE = '0' when the address is omitted.
  • Verifiable Truth: Official Legrand specification PDFs require a target address for WHERE in WHO=5 command frames. openwebnet-mcp rejects *5*7*## as malformed syntax. OWNd conforms strictly to the standard by returning None for omitted mandatory fields.

3.4 Extended Thermoregulation (Dimension 12 Negative Temperatures)

  • Observation: Physical temperature probes in outdoor zones report negative temperatures via Dimension 12: *#4*6*12*1048*3##.
  • Verifiable Truth: The value parameter 1048 represents -4.8°C (the initial 1 indicates negative sign; 048 is tenths of a degree). OWNd decodes this mathematically into _measured_temperature = -4.8.

4. Independent Local Verification

Any contributor or user can independently verify this entire conformance suite with zero third-party dependencies directly against the Python standard library:

# Run 137 automated assertions against the golden corpus
python -m pytest tests/test_golden_conformance.py

# Run standalone schema & frame uniqueness validation
python tools/golden/validate_corpus.py