RFC: Deferring USB / Serial Gateway (Legrand 3578 / OpenZigBee) out of v2.0.0 stable #879
GreenGrassBlueOcean
started this conversation in
Ideas
Replies: 2 comments
|
Agree with removing. |
0 replies
|
Agree to move this to 2.1+. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
@anotherjulien @fedem95 @Interstellar0verdrive @gdluck @xtimmy86x @mvalla
Context: Why USB / Serial was added in early v2
Back in September, when we started shaping the v2 architecture in #229, @mvalla (creator of
openwebnet4jand the OpenHAB OpenWebNet binding) asked whether the new layered design could accommodate USB-based serial interfaces—specifically the Legrand 3578 OpenZigBee USB gateway (<8-digit id>#9unit addressing).Because the early v2 prototype still owned its own
core/transport/stream abstraction insideMyHOME, we opened #233 and laid down initial scaffolding:AsyncSerialTransport, a3578gateway profile, a serial port picker inconfig_flow.py, and serial entries in the gateway compatibility tables.Where things stand nearing
v2.0.0GAOver the past nine beta releases (
v2.0.0b9→v2.0.0b17), our release bar has become strict and evidence-driven: every supported gateway model and subsystem is backed by real plant bus traces replayed in CI (#466) and/or emulated firmware verdicts (own-firmware-oracle).Auditing the Legrand 3578 / OpenZigBee path ahead of the
v2.0.0stable cutover turned up two hard realities:3578(or088328) gateway during the entire v2 beta cycle, we have not a single serial/OpenZigBee trace in #466, and we have no firmware image for the 3578 inown-firmware-oracle.v2-phase1-architectureis broken at runtime: As the protocol engine was extracted into standaloneOWNd(OWNGateway) and our entity/address routing hardened around real SCS captures, the untested serial scaffolding drifted out of sync in four concrete places:gateway.py→OWNGateway):config_flow.py(async_step_serial) savesCONF_HOST = "/dev/ttyUSB0",CONF_PORT = 19200, and"transport_type": "serial"without probing the port.MyHOMEGateway.__init__then passesbuild_infostraight intoOWNGateway(build_info), which only opens TCP sockets (*99*0##/*99*1##).AsyncSerialTransportis never instantiated at runtime—selectingUSB / Serial Gateway (Legrand 3578)in the UI today actually attempts a TCP connection to hostname"/dev/ttyUSB0"on TCP port19200.manifest.json):manifest.jsonpins"OWNd==2.0.0b13"rather than"OWNd[serial]", whereaspyserial-asyncio>=0.6is an optional extra inOWNd/pyproject.toml.#9OpenZigBee suffix stripped during discovery (discovery.py):Address.from_message()only preserves F422 bus-routing suffixes (#4#<bus>viamessage.interface) and dropswhere_param = ["9"]on<8-digit id>#9frames. Discovered entities would lose the mandatory#9ZigBee selector on outbound commands.gateway_sessions.py,validate.py):is_apl_address()strictly enforces 2- or 4-digit SCSA/PLaddresses and rejects 8/9-digit OpenZigBee unit IDs, while single-pipe serial frame demultiplexing (no*99*session split) and ZigBeeWHO 25/ discovery behaviour remain completely unverified.Shipping a Config Flow option and documentation table claiming Legrand 3578 USB / OpenZigBee support in
v2.0.0when it fails immediately on setup goes against everything we built inb14–b17and against our Home Assistant Quality Scale standards.Proposal for
v2.0.0Rather than trying to blind-patch serial session wiring and
<id>#9addressing right beforev2.0.0GA without a physical device or a single trace to verify against, I propose we cleanly defer USB / OpenZigBee out ofv2.0.0:v2.0.0Config Flow UI (config_flow.py,strings.json, andtranslations/*.json) so users are not presented with a non-functional setup path.Legrand 3578fromv2.0.0"Supported Hardware" claims acrossREADME.md,docs/, andcustom_components/myhome/quality_scale.yaml(moving it to thev2.1+roadmap / known limitations as unsupported pending hardware verification).MyHOME: remove the unreferencedcustom_components/myhome/core/transport/copy inMyHOMEso transport abstractions live in one place (OWNd), ready to be wired intoOWNGatewaywhen real hardware is available.v2.1+: re-introduce USB / OpenZigBee support once we have:3578/088328stick + ZigBee actuator/control) to validate setup end-to-end;<8-digit id>#9lighting/cover commands & echoes, discovery) committed to the CI trace corpus (#466);OWNGatewaysingle-pipe serial session handling and#9address preservation tested against those captures.Questions for Maintainers & Community
v2.0.0: Do we agree on removingLegrand 3578 / OpenZigBeefrom the Config Flow UI and supported-hardware docs before cutting stablev2.0.0?core/transport/cleanup: Any objection to removing the unusedcustom_components/myhome/core/transport/package fromMyHOMEand keeping serial transport work strictly insideOWNduntil it is wired end-to-end?v2.1+branch oncev2.0.0lands?All reactions