Repository navigation
Community Call for Real-World Gateway Traces: Help Us Eliminate Hardware Blind Spots! 📡 #466
Description
Hello everyone! 👋
First and foremost, a huge thank you to everyone across the OpenWebNet community who has tested the V2 releases, diagnosed edge cases, reported bugs, and contributed real-world bus captures. Your feedback has made the integration faster, cleaner, and rock-solid with 100% test coverage.
However, to ensure this integration remains maintainable and reliable across all installations, we need to address an honest reality: we cannot guarantee code for hardware we cannot test against.
The Problem: We Are Flying Blind on Several Gateways
In our CI pipeline, we use frozen, authentic on-wire bus frames captured from production plants (tests/test_trace_replay.py). When a real trace is in our test corpus, it guarantees that bugs can never regress.
To track our coverage transparently, we maintain a Hardware Trace Availability Matrix in our README:
| Gateway Model | WHO 0 Scenario |
WHO 1 Lights |
WHO 2 Autom. |
WHO 3 Load |
WHO 4 Climate |
WHO 5 Alarm |
WHO 9 Power |
WHO 13 Gateway |
WHO 14 Lock |
WHO 15 CEN |
WHO 16 Audio |
WHO 17 Scenario |
WHO 18 Energy |
WHO 22 Audio Diff. |
WHO 25 Diag |
WHO 1001 Diag |
WHO 1013 Diag |
WHO 1022 Diag |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| F453AV | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||||
| F454 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||||||
| F455 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||||
| F461 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||||||||
| H4684 / H/L4684 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||||||||
| H4890 / AM4890 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |||||||||
| MH200 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||
| MH200N | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| MH201 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||||
| MH202 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||||||
| MyHomeServer1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
(Checkmarks ✅ denote that at least one captured trace in our test corpus contains frames for that subsystem from that gateway model).
🚨 Critical Blind Spots: What We Are Still Missing
-
Gateways with ZERO Traces (Completely Unverified in CI):
- Legrand 3578 USB / Serial Interface (OpenZigBee): We built a full asynchronous serial transport (
pyserial-asyncio), serial port discovery, and zero-auth bypass ([Feature Request]: Support USB-based OpenZigBee gateway (Legrand 3578 / Serial Transport) #233). But we have zero real-world traces. We are flying completely blind on serial timing, line noise recovery, and OpenZigBee radio unit addressing (WHERE=<unit_id>#9). - F455 (Basic Gateway): 0 traces. Single SCS bus entry-level gateway; we need baseline captures validating lights, automation, temperature, and energy monitoring.
MH200N (2nd Gen Scenario Programmer): (Captured by @caiosweet! Verified in PR test(466): add MH200N bus sweep trace replay and golden fixtures (#466) #469 for WHO 1, 2, 4, 13, 18 🎉)4890 Family (H4890 / AM4890 / LN4890 3.5" Touch Screen Gateway): (Captured by @nicolacavallo84 with schematic from @xtimmy86x! Verified in PR feat(gateway): reinstate 4890 family with authentic H4890 traces (#466) #484 covering WHO 1, 2, 5, 9, 16, 18, 22, 25 🎉)- F452 / F453AV & HL4684: 0 traces.
- Legrand 3578 USB / Serial Interface (OpenZigBee): We built a full asynchronous serial transport (
-
Subsystem Gaps on Partially Covered Gateways:
MH200N: (Fully verified in PR test(466): add MH200N bus sweep trace replay and golden fixtures (#466) #469, feat(ci): auto-sync hardware trace matrix to issue #466 and normalize 4890 family naming #486, test(466): add MH200N burglar alarm, diagnostic and timed turn-on trace (#466) #488 covering WHO 0, 1, 2, 4, 5, 9, 13, 14, 15, 16, 17, 18, 22, 25, 1013, 1022 🎉)- F461: Missing covers (WHO 2), alarm (WHO 5), aux/power (WHO 9), audio (WHO 16), energy (WHO 18), and diagnostics (WHO 13/1013).
MH200: (Captured via updated bussweep & F414/F418U2 dimmer traces in PR test(golden): add BTicino F418U2 modern dimmer samples on F454 and MH200 (#466, #501) #502 🎉)- MH201: Missing alarm (WHO 5), aux/power (WHO 9),
lock (WHO 14), energy (WHO 18), diagnostic identity (WHO 1013). F454: (Lock/unlock WHO 14, energy WHO 18, and CEN+ WHO 25 captured by @anotherjulien & verified in PR fix(alarm): ignore phantom zone telemetry and purge orphaned partitions on MH200/MH200N (#466, #488) #490 & test(golden): add BTicino F418U2 modern dimmer samples on F454 and MH200 (#466, #501) #502 🎉)MH202: (Lock/unlock WHO 14, energy WHO 18, CEN+ WHO 25, and DIM4 captured by @anotherjulien & verified in PR fix(alarm): ignore phantom zone telemetry and purge orphaned partitions on MH200/MH200N (#466, #488) #490 & test(golden): add BTicino F418U2 modern dimmer samples on MH202 (#466, #501) #505 🎉)- MyHomeServer1: Missing alarm (WHO 5). (CEN+ WHO 25 and physical diagnostics WHO 1001 captured by @TheDarkWizard & verified in PR test(traces): ingest physical MyHomeServer1 CEN+, cover, and diagnostic golden samples (#466) #512 🎉)
-
Subsystems Missing Across ALL Models:
WHO 15 Classic CEN Pushbuttons(Captured by @caiosweet!) (distinct from CEN+ / WHO 25): Short press vs held#3vs release#2(Issue Bus traces wanted: CEN (WHO 15) button presses and WHO 1 dimension 4 from a dimmer #434).WHO 1 Dimension 4 (Physical Dimmer Reports): (Captured on F454, MH200 & MH202 by @anotherjulien! Verified in PR test(golden): add BTicino F418U2 modern dimmer samples on F454 and MH200 (#466, #501) #502 & test(golden): add BTicino F418U2 modern dimmer samples on MH202 (#466, #501) #505 proving DIM1/DIM4 translation and acceptance across F414 and F418U2 dimmers 🎉)WHO 5 Burglar Alarm (3485 / 3486): (Captured on H4890 by @nicolacavallo84! Verified in PR feat(gateway): reinstate 4890 family with authentic H4890 traces (#466) #484 for arm away, disarm, and partition/zone status 🎉)WHO 2 Cover Calibration Runs: (Captured on MyHomeServer1 by @Interstellar0verdrive! Verified in PR test(trace): add MyHomeServer1 cover calibration golden trace fixture (#466) #584 for eight timed runs, leading idle echoes, and clean stop transitions 🎉)
🎯 Direct Call-Outs: Can You Help Us With Your Hardware?
From past discussions, we know several community members have these exact devices. If you have a few minutes, capturing a trace from your system would permanently cement official CI verification for your hardware:
- @mvalla: You championed the Legrand 3578 USB / Serial interface in What fork to move to? #229 and [Feature Request]: Support USB-based OpenZigBee gateway (Legrand 3578 / Serial Transport) #233. We fully implemented the serial transport and Profile 3578, but we have had zero validation against physical hardware! Since you mentioned being an HA newcomer, you don't need any complex CLI tools—simply using the Lovelace Bus Monitor card or downloading diagnostics from the UI (instructions below) would give us the real on-wire bytes we need. If you have a 3578 dongle or serial plant active, your capture would be invaluable!
- @anotherjulien: Captured! 🎉 Massive thank you for submitting the comprehensive MH202 + F454 trace suites and physical F414/F418U2 dimmer captures! Verified in PR fix(alarm): ignore phantom zone telemetry and purge orphaned partitions on MH200/MH200N (#466, #488) #490, test(golden): add BTicino F418U2 modern dimmer samples on F454 and MH200 (#466, #501) #502, and test(golden): add BTicino F418U2 modern dimmer samples on MH202 (#466, #501) #505 covering WHO 1, 2, 14 (lock), 18 (energy totalizers), 25 (CEN+), and physical dimmer telemetry!
- @lionelser: In KeyError: 'entities' on setup, following deprecated device_registry.devices usage warning (v0.9.3) #224, you reported running an F455 Gateway. We currently have zero F455 captures in the repository. A quick trace sweep would allow us to guarantee verified CI coverage for the Basic Gateway.
- @caiosweet: Captured! 🎉 Contributed on #466 (comment 5834435606) & verified in PR test(466): add MH200N bus sweep trace replay and golden fixtures (#466) #469 covering WHO 1, 2, 4, 13, 18! Massive thank you!
- @wave68runner: You tested the audio switching branch with an MH200N and audio amplifiers (high latency #425, Two gateways in one installation? Help us support shared buses (MH200N + MH201, MHS1 + LN4890, …) #453). A capture of audio playback / volume commands through the MH200N would fill a major gap!
- @nicolacavallo84 & @xtimmy86x: Captured! 🎉 Provided the RJ45 hardware schematic and contributed authentic on-wire traces in #466 (comment 5846053726), verifying the 4890 Touch Screen family (WHO 1, 2, 5, 9, 16, 18, 22, 25) in PR feat(gateway): reinstate 4890 family with authentic H4890 traces (#466) #484!
- @lyubomirtraykov: You've helped immensely with the F461 Web Server and DALI DT8 ([FEATURE] DALI RGB / RGBW Color Support & Physical Bus Validation #288, [BUG] Standalone Climate Zones not exposing FAN #303, [BUG] Climat Zones do not support Fan OFF #410). If you have covers (WHO 2), auxiliary relays (WHO 9), or audio (WHO 16) on that F461, traces for those would complete the F461 matrix!
- @gimprota76: In Need help configuring Alarm feature (F454) #311, you configured an F454 with a Burglar Alarm System (WHO 5). Traces of arming, disarming, and zone status updates would allow us to build rock-solid alarm panel support.
- @f18m: In Question for new MyHome: detecting the press of the centralized cover/shutter control button #445, you offered testing for MyHomeServer1 and a centralized cover button (LN-4660M2). A trace of that centralized button press would settle whether MyHomeServer1 broadcasts it to HA!
- @xduss: In Pump actuator incorrectly interpreted as zone actuator #431, you analyzed F454 + F459 heating pump actuators (
*#4*0#2*20*1##). Any trace during active heating cycles would help us verify multi-zone pump coordination. - @fedem95 & @marcob79: For your MH201 setups (CEN / CEN+ buttons don't show up in the new automation UI #418, Mh201 and General cover button behaviour #433), captures covering auxiliary/power (WHO 9), alarm (WHO 5), or classic CEN (WHO 15) buttons would complete the MH201 profile.
- @xtimmy86x: Your multi-gateway lab (MH200, MH201, F454, MyHomeServer1) is incredible. Any traces for missing subsystems on the MH200 (climate, energy) or F454 (lock, energy) would fill huge blanks!
- @TheDarkWizard: Captured! 🎉 Contributed authentic MyHomeServer1 captures across 6 files in #466 (comment 5855690408)! Verified in PR test(traces): ingest physical MyHomeServer1 CEN+, cover, and diagnostic golden samples (#466) #512 covering WHO 25 (KW8011 CEN+ short/long press), bistable covers, and WHO 1001 physical layer diagnostics! Massive thank you!
- @Interstellar0verdrive: Captured! 🎉 Contributed authentic MyHomeServer1 cover calibration & interleaved energy telemetry captures in #466 (comment 5927373969)! Verified in PR test(trace): add MyHomeServer1 cover calibration golden trace fixture (#466) #584 covering WHO 2 (WHERE 91, 8 timed runs, leading idle echoes) and WHO 18 (meters 51, 52, 53 Dimension 113 & 1200)! Massive thank you!
🛠️ How to Capture and Submit a Trace (Under 2 Minutes!)
Contributing traces is fast, easy, and privacy-safe:
🏷️ Method 1: Via Home Assistant UI (Fastest & Easiest)
- Sweep the Bus: Go to Developer Tools → Actions (Services) and call
myhome.sweep_bus(this queries lights, covers, climate, and gateway diagnostics in ~3 seconds). - Interact (Optional): If testing buttons, covers, or dimmers, press a physical switch, adjust a dimmer, or arm/disarm your alarm.
- Export
- Either: On your Lovelace dashboard with
<myhome-bus-card>, click "Export Trace" (or "Copy Trace"). - Or: Go to Settings → Devices & Services → MyHOME → click the three dots (
⋮) on your gateway → Download diagnostics.
- Either: On your Lovelace dashboard with
- Post it here: Drag and drop the downloaded
.jsonfile into a reply on this issue!
💻 Method 2: Standalone Python Script (For Test Benches & Integrators)
If you are testing an isolated gateway on a test bench without Home Assistant running:
python scripts/record_gateway_trace.py --host 192.168.1.35 --password 12345 --model MH202 --listen 10.0This script sweeps the gateway, listens for 10 seconds of ambient traffic, and generates a sanitized fixture.
🔒 Privacy & Security Guarantee
- Home Assistant's diagnostic export and our trace sanitization pipeline (
scripts/anonymize_plant_fixture.py) automatically redact all sensitive data. - Passwords, PINs, tokens, LAN IP addresses, and private MAC addresses are completely stripped or replaced with synthetic test identifiers.
- OpenWebNet frames contain only standard numeric protocol codes (WHO, WHAT, WHERE).
Thank you again for helping us make this integration the most dependable, well-tested Home Assistant component possible. Let's fill every checkmark across that matrix! 🚀
Activity
caiosweet commentedon Sep 25, 2026
Here is the MH200N trace requested.
I started a trace on the MH200N and then ran
myhome.sweep_bus.After the sweep, I also performed two climate-related actions:
I have attached the resulting trace file.
If you need a more specific or targeted capture (for example only climate, only a specific zone/probe, startup polling, covers, or another subsystem), just let me know what sequence you want me to perform and I can capture it.
config_entry-myhome-80a1577fb7ae6f68f05e0cc5a1ead27d.json
myhome_sweep_MH200N_all_2026-09-25T14-40-10.json
I also added a second trace with a few CEN commands and some scenarios.
myhome_trace_MH200N_all_2026-09-25T18-12-34.json
WHO 14 - Special Commands
myhome_trace_MH200N_all_2026-09-25T18-53-55.json
myhome_trace_MH201_all_2026-09-25T19-05-42.json
test(466): add MH200N bus sweep trace replay and golden fixtures (#466)
Merge pull request #469 from GreenGrassBlueOcean/test/mh200n-trace-is…
anotherjulien commentedon Sep 25, 2026
@GreenGrassBlueOcean, are you sure about the F455 being dual bus? The documentation I can find just identifies it as a "Basic Gateway", and it certainly seems to only have one SCS connector.
GreenGrassBlueOcean commentedon Sep 25, 2026
no not sure at all actually... let's go with the docs here
GreenGrassBlueOcean commentedon Sep 25, 2026
Good catch @anotherjulien! You are completely right — the BTicino F455 is the entry-level "Basic Gateway" with a single SCS bus connector (managing lights, automation, temperature, and energy), not a dual-bus gateway or multi-bus router. We've corrected the description here and across the documentation / roadmap.
GreenGrassBlueOcean commentedon Sep 25, 2026
The documentation and roadmap across the repository have now been updated to reflect that the BTicino F455 is a single-bus Basic Gateway (updating
README.md,ROADMAP.md,docs/openwebnet-who-specifications.md,docs-v0.9/, and the bug report template).GreenGrassBlueOcean commentedon Sep 25, 2026
Opened PR #471 with the documentation, roadmap, and template updates.
docs(gateway): reclassify F455 as single-bus Basic Gateway (#466)
Merge pull request #471 from GreenGrassBlueOcean/docs/f455-basic-gateway
caiosweet commentedon Sep 25, 2026
I updated my previous comment with a few additional MH200N traces.
Here is a separate trace from the MH201 gateway as well.
myhome_sweep_MH201_all_2026-09-25T19-11-35.json
anotherjulien commentedon Sep 25, 2026
I'll try to capture lock on MH202 and F454 over the week-end, and re-install one of my disused F520 for energy data.
I think there was also some WHO25 CEN+ button presses in here.
I'll try to capture dry-contact traffic at the same time, is there any other CEN+ traffic you'd want?
GreenGrassBlueOcean commentedon Sep 25, 2026
Thanks @anotherjulien! That will be super helpful—lock (WHO 14), energy (WHO 18 / F520), and CEN+ dry contacts will fill some of our biggest remaining gaps!
On that note, I'm planning to release a new beta tonight (hopefully later this evening) that includes an improved bus sweep (in the service and the Bus Monitor card). Alarm (WHO 5) and sound/audio (WHO 16) were previously missing from the sweep routines, so the new version will capture those subsystems much better.
Thanks again for all the help testing and gathering traces!
143 remaining items
feat(cover): per-cover min_position_delta for advanced covers
test(trace): add authentic MH201 FW 3.6.43 sweep & WHO 1013 identity …
Merge pull request #827 from OpenWebNet-HA/test/trace-issue-466-mh201…
GreenGrassBlueOcean commentedon Oct 28, 2026
Hi @emil-d,
Huge thank you for capturing and sharing both
F414(WHERE = 42) traces! We have added both exports to our permanent CI regression suite in #827 — they also confirmed that with all 27 lighting endpoints online on your bus,*#2*0##answers cleanly without hitting the10 scommand-session timeout from the earlier partial sweep.Even better, comparing your two captures side-by-side uncovered a real brightness-mapping bug in
MyHOMELight, which we just fixed in PR #828 (targeted for the upcoming2.0.0b17beta release):WHERE = 42from the physical wall pushbutton onMH201, the bus only emits coarseWHO = 1preset frames (*1*7*42## → *1*6*42## → *1*5*42## → *1*4*42##) with no spontaneousDimension 1percentage frame.42ON from Home Assistant returned*1*7*42##followed192 mslater by*#1*42*1*148*5##— proving that coarse stepWHAT = 7on yourF414is physically48%(~50%), not70%.MyHOMELightmapped coarseWHAT 2..10frames linearly asWHAT × 10(20%..100%), whereas BTicino'sF414/F418U2hardware andlibqtdevicesfirmware follow the non-lineardimmerLevelTo100curve (1%, 10%, 20%, 30%, 40%, 50%, 60%, 75%, 100%).MH201will now report50% → 40% → 30% → 20%(and1%at minimumWHAT = 2) instead of reading+20%too high (70% → 60% → 50% → 40%).42ON in Home Assistant will no longer bounce the UI slider up to70%before snapping down to48%(50% → 48%instead), andlight.turn_onsoftware transitions started after wall dimming will no longer surge+20%brighter at the start of a fade.MH201sweep update skipping*#4*0##, avoiding the extra timeout/backoff window onWHO 4.)If you have a few minutes, would you mind testing PR #828 on your
MH201+F414(WHERE = 42)?1. Copy & paste these lines to install PR #828 right away
Open the Home Assistant Terminal & SSH add-on (or your HA container/host shell), paste this block, and press Enter:
2. After running the command:
OK: Installed MyHOME PR #828 ....WHERE 42light entity in Home Assistant and check:42ON at the wall button and hold to dim down and up — verify that Home Assistant now displays50% → 40% → 30% → 20%(down to1%at minimum dim) in sync with the actual lamp brightness rather than+20%higher.42OFF and back ON from Home Assistant — verify that the brightness slider settles cleanly (50% → 48%) without jumping to70%first, and that adjusting brightness / transitions from Home Assistant after wall dimming starts smoothly from the current level.Let us know how PR #828 works on your installation — and no rush at all on the
F422OUT-sideWHO 16test whenever you get the chance!andrea-mag commentedon Oct 28, 2026
Hi @GreenGrassBlueOcean,
Thanks,
Andrea
GreenGrassBlueOcean commentedon Oct 28, 2026
Thank you @andrea-mag — that hardware breakdown is hugely helpful! Two immediate pieces of good news for you, plus one quick 60-second read-only experiment we would love to capture before you power off the
F521:1. Your trace already caught which fan-coil actuator is missing!
You mentioned one zone with up to 3 fan coils has an actuator that randomly goes missing. Looking at the
Dimension 20telemetry in the diagnostics file you uploaded, we can pinpoint the exact unit:11#1,22#1,44#1,55#1,88#133#1+33#2(PTE - Soggiorno) and77#1+77#2(PS1 - Biliardo)66(PS1 - Camino)! Actuators66#2and66#3report*#4*66#2*20*5##and*#4*66#3*20*5##every 10 seconds, while66#1(ZA=6, ZB=6, N=1) never answered once during the capture — and Zone66is also the only zone where your3550central unit kept re-sending*4*303*66##every 20 seconds trying to sync it.F430/4configured withZA=6, ZB=6, N=1for PS1 - Camino (oxidizedN=1configurator pins or a loose SCS 2-wire terminal) should take you straight to the culprit!(Also: knowing that all 8 zones (
11..88) useF430/4actuators wired to fan coils is a major insight for us — it proves*#4*Z#N*20*5##is 100% genuine fan-coil telemetry across your whole plant rather than a valve quirk.)2. About the
F521bus chatter & what we meant by "plus"F521sends one*3*1*#P##frame every ~25.8 seconds (~2.3 frames/minute,<0.1%SCS bus load), so it won't harm bus reliability — though powering it down if unused makes complete sense.WHO=25(CEN+, whichH/L4684doesn't use), and in my last message I just meant two optional "bonus" diagnostic queries.3. Quick 60-second read-only experiment (before turning off the
F521!)We have never had a live
F521(WHO=3) measurement trace in the project, and BTicino's official OpenWebNetWHO=3specification actually omits the unit/scaling forDimension 4(Energy)! At the same time, testing 3 read-onlyWHO=4queries on yourF430/4zones will let us make sure all 8 of your fan-coil zones auto-discover cleanly onH/L4684FW 6.0.11.All frames below are strictly read-only (nothing switches or sheds any
F412NCload):⋮menu → Edit in YAML, paste this temporary script, Save, and click Run:⋮→ Download diagnostics and attach the.jsonfile here (you can delete the temporary script right after).H/L4684touch screen (Gestione Carichi / Load Control page) or meter shows any readings at that moment (VoltageV, CurrentA, PowerW/kW, or EnergyWh/kWh), let us know roughly what it reads so we can match the exact wire scaling factor!emil-d commentedon Oct 28, 2026
Hi @GreenGrassBlueOcean,
I installed PR #828 on my Home Assistant and tested the MH201 + F414 scenario switching the light on and off and dimming it, both from the wall pushbutton and through the MyHome integration in Home Assistant.
Wall pushbutton: I confirm the brightness range is 1% / 10% / 20% / 30% / 40% / 50% / 60% / 75% / 100%, and Home Assistant shows each value as the actual lamp brightness changes.
Home Assistant toggle and slider: from Home Assistant I can set brightness values with much finer precision than the wall button steps. When I switch the light on, it comes back at the intensity it had when it was last switched off.
I’m attaching the trace of my tests in case it is useful.
myhome_trace_MH201_all_2026-10-28T19-16-51.json
Thanks again,
fix(light): map coarse WHAT 2..10 presets via BTicino dimmerLevelTo10…
fix(light,expose): align expose coarse presets, guard coarse-dimmer f…
fix(light,expose): align expose coarse presets, guard coarse-dimmer f…
emil-d commentedon Oct 29, 2026
Hi @GreenGrassBlueOcean, following up on the F422 test you suggested.
I moved the MH201 off the automation bus: I disconnected it from the E46ADCN side and connected it to the audio bus, in parallel with the OUT terminals of the F422 (the bus fed by the 346000 and the F441M), keeping Ethernet connected. One oddity: the F422 front LED looks off (it may be a faulty LED, but I can’t confirm).
Result: The MH201 came back online, and the session works: #1315## answers *#1315200##. But:
#1605##, #16615## and #16335## get no reply (NACK after the OWNd retries).
A single ON command, 16361## is not accepted.
I listened to the event session for 180 s while pressing the physical audio controls (ON/OFF, volume, source, on different zones), this results in no events at all.
Hence, with the MH201 sitting directly on the audio bus, it still does not relay or handle WHO 16. This matches what you said about the firmware (3.6.43) filtering it.
Any suggestion on how to handle the audio?
I’m considering two options:
Adding a second gateway dedicated to sound on the audio bus (OUT side of the F422), next to the MH201 on the automation bus. Based on your trace matrix, the MH200N looks like the best candidate (WHO 16 and WHO 22 traces).
Adding a small ESP32-based SCS bridge on the audio bus, writing the code with Claude help. Do you know if there is any reliable documentation on the SCS frames used by the sound system (ON/OFF, volume, source)?
Some questions with respect to option 1:
Thanks again for all the help so far.
Merge pull request #828 from OpenWebNet-HA/fix/light-coarse-preset-br…
GreenGrassBlueOcean commentedon Oct 29, 2026
Hi @emil-d,
First, thank you for testing PR #828 on your
MH201+F414(WHERE = 42) and sharing the verification trace! PR #828 (along with yourmyhome_trace_MH201_all_2026-10-28T19-16-51.jsoncapture) is now merged onmasterand will ship inv2.0.0b17.And huge thanks for running the
MH201-on-F422 OUTisolation test — that gives us 100% hardware proof thatMH201firmware3.6.43dropsWHO = 16in both directions (both command-session queries/writes and bus-to-IP event translation), even when wired directly onto the346000+F441Msound bus. We will remove the false-positivetx-onlyWHO 16checkmark forMH201in the trace matrix and markWHO 16unsupported onMH2013.6.43inOWNd.🔍 Quick Note on the
F422Front LED Being OffPer BTicino's
F422technical sheet (MQ00280-f-EN, p. 1), theF422draws25 mAfromINand5 mAfromOUT(18–27 Vdc), and its front LED indicates:Two things worth checking:
E46ADCNjunction, you may have temporarily opened the27 Vdcfeed going toF422 IN(its25 mAlogic supply side).F422'sINandOUTscrew terminals with a multimeter (both should read~27 Vdc). If either side is missing27 Vdc(or theF422itself has failed rather than just its LED),INandOUTare currently isolated from each other — which makes wiring a dedicated audio gateway toOUTeven cleaner because it bypasses theF422completely.⚖️ Option 1 (Second Gateway) vs. Option 2 (ESP32 SCS Bridge)
Option 1 (
MH200NorF454) is strongly recommended over building an ESP32 transceiver for the audio bus, for two practical reasons:Modulated analog stereo audio on the
346000+F441Mbus (OUT): Unlike a pure automation SCS bus (IN), theF441Mmultichannel sound bus carries high-frequency modulated analog stereo audio superimposed on top of the27 Vdc+ baseband SCS data pair (that analog carrier is why BTicino puts anF422galvanic separator between automation and sound). Standard DIY Arduino/ESP32 SCS circuits are designed for baseband lighting buses and lack BTicino's high-impedance audio band-stop coupling — attaching an unfiltered DIY circuit directly toOUTrisks attenuating the audio carrier or coupling ESP32 Wi-Fi / buck-converter switching noise (audible hum/whine) into your room amplifiers.SCS wire-frame documentation for sound: BTicino only publishes the ASCII OpenWebNet protocol (
WHO 16/WHO 22), never the lower-layer SCS wire telegrams. If you are curious about what goes on the wire, two public repositories in our org document what has been recovered:OpenWebNet-HA/own-firmware-oracle(results/MH200N/010108/oracle/full/sound-who16-source.tsv,sound-who22.tsv,trace-corpus.tsv): records the exact PIC/SCS hex frames emitted by real gateway firmwares for each OpenWebNet command (e.g.,*#16*0*5##→$04B500808F\r, zone ON*16*3*21##→$0490018F23\r+$0490018223\r, tuner frequency/RDS$06D1...).OpenWebNet-HA/OpenWebNet-Encyclopedia: documentsF441Mmatrix routing (*16*3*1ES##) andWHO 16↔WHO 22dual-dialect behavior from liveMH200andMH200Ncaptures.Even with those tables, building an audio-safe analog front-end + CSMA/CA collision handling + stateful
WHO 16/22translation is a major hardware project compared to a second-handMH200NorF454that works out of the box withMyHOME(including zone discovery,F441Msource selection,F500RDS station text, and Music AssistantDecoderPoolrouting if you ever plug a streamer intoS2/S3).📋 Answers to Your Option 1 Questions
1. Is an
MH200Na good choice for anF441M-based system, and should it go onOUTorIN?MH200N(orF454) is ideal forF441M+F500.MyHOMEcontrolsF441Mamplifier zones, volume, and matrix source routing (*16*3*10S##+*16*3*1ES##) viaWHO 16, and also listens toWHO 22forF500tuner frequency and RDS metadata. BothMH200N(FW 1.1.8) andF454(FW 2.0.51, or olderF453AV) support bothWHO 16andWHO 22(MH200N+F441M+F500is actually one of the reference plants in our Encyclopedia). PlainMH200also supportsWHO 16(zones, volume, matrix source routing), just withoutWHO 22RDS text.F441M(WHO 16): Do not buyMH202,MyHomeServer1,F460, orF461for this (correcting my passing mention in an earlier comment!) — our QEMU Firmware Oracle confirms all fourNACK(*#*0##) and dropWHO 16, supporting only newerWHO 22multimedia systems.OUTvs.INplacement: Connect its SCS bus terminal toOUT(the audio side). That puts the gateway directly on the346000+F441M+F500bus with zero dependency onF422forwarding (especially helpful while theF422LED is off). (If you choose anF454, wire the audio bus to itsSCS AVterminal.)2. Is there any issue in having an automation-type gateway on the sound bus?
MH200N(003565) for both Automation and Multimedia risers (TiMH200Nincludes native Sound System actions/conditions), and its official transceiver is properly isolated for the 2-wire sound bus.Slavemode inTiMH200N/ web UI so two gateways don't compete over time broadcasts ifF422bridges frames.MH200Nfirmware always answersWHO 5queries with 8 virtual alarm partitions even with no alarm hardware installed — delegatingMH200Nsolely to audio inMyHOME(below) suppresses those automatically.3. Does
MyHOMEhandle two gateways (MH201for lights +MH200Nfor audio), or should I replaceMH201?MH201+MH200N)!MyHOMEv2 has built-in multi-gateway and per-WHOsubsystem delegation specifically for split/multi-gateway plants:MH201preserves all 27 existing light entities (and any scenarios insideMH201), keepsMH201's faster100 mscommand pacing (Tier 2vsMH200N's150 msTier 3), and works even if yourF422is completely unpowered/isolated.MH200Nin Settings → Devices & Services → MyHOME, Home Assistant will show the "Is this gateway on the same bus as another gateway?" step:Shared SCS bus (same bus as another gateway)MH201Secondary (discovers only its delegated subsystems)16 - Sound diffusionand22 - Sound diffusion (audio matrix)MyHOMEto keep all lighting/automation onMH201, skip non-audio discovery sweeps (includingMH200N's phantomWHO 5alarm zones) onMH200N, and route allmedia_playerdiscovery and commands exclusively throughMH200N.4. Power budget of an
MH200Non the346000bus — important wiring catch!MH201: YourMH201(1 DINmodule,30 mA) powers itself directly from the 2-wireSCSbus. By contrast,MH200N(6 DINmodules, sheetMQ00319-b-UKpp. 1–3) cannot run off itsSCSterminal alone — it has two separate power connections:SCSbus clamp (18–27 Vdc): bus transceiver signaling only (~5–10 mA, negligible load on your346000audio bus).27 Vdcsupply input (1–2terminals):200 mAmax (powers the CPU and Ethernet PHY; BTicino lists dedicated27 Vdc / 600 mA2-DIN supply346020as its companion accessory). (For comparison,F454is also6 DINwide and draws125 mAmax on its1–2supply input.)1–2in your cabinet:E46ADCNor346000(1.2 Arated supplies) has an unused1–2(27 Vdcauxiliary, non-SCS) output terminal and200 mAof spare budget after yourF441M+F500+ room amplifiers.SCSdata bus terminal intoMH200N's1–2auxiliary power input (that would short out the data/audio modulation). If neitherE46ADCNnor346000has a free1–2auxiliary output or spare current headroom, add a small27 Vdcauxiliary DIN supply such as BTicino346020(2 DIN,600 mA) to feedMH200N1–2while connectingMH200NSCStoF422 OUT.gimprota76 commentedon Oct 29, 2026
Hi,
I would like to report a possible regression with the alarm system and Apple HomeKit in the latest beta releases.
The alarm itself works correctly in Home Assistant.
When I arm the alarm in "Away" mode, Home Assistant correctly shows:
"Armed Away"
However, the same alarm exposed to Apple HomeKit through Home Assistant is displayed in the Apple Home app as:
"Off" / "Not Active"
So HomeKit does not seem to receive or display the current armed state correctly.
I have two separate integrations of the same BTicino alarm system in Apple Home, which makes the issue easy to compare:
Homebridge integration by Simone Tisa
OpenWebNet-HA / MyHOME through Home Assistant
The attached screenshots show the issue clearly.
In Home Assistant:
In Apple Home:
Additional information visible in Apple Home for the Home Assistant accessory:
For comparison, the working Homebridge accessory reports:
This behaviour appeared with the latest beta releases. Previously, the alarm state was correctly reflected in Apple Home.
It looks like the alarm state inside Home Assistant is correct, but the state exposed to HomeKit is no longer being updated or mapped correctly.
I have attached screenshots showing Home Assistant and both HomeKit accessories for comparison.
Thank you for your work on this integration.
Please let me know if gateway traces, OpenWebNet frames, Home Assistant diagnostics or additional logs would be useful.
GreenGrassBlueOcean commentedon Oct 31, 2026
Hi @gimprota76,
Thank you for the detailed report and comparison screenshots — and yes, a gateway trace and diagnostics export from your
F454+3486setup would be hugely helpful! While you shared a text log back in #311, we still don't have a native.jsontrace export of a liveF454+3486alarm system in our CI corpus.1. How to capture the trace (takes ~2 minutes)
We can see
<myhome-bus-card>is already on your dashboard right aboveAllarme Casa HA:myhome.sweep_busin Developer Tools → Actions) and wait ~10 seconds for it to finish.Allarmetile in Apple Home can also arm/disarm the3486, once from that Homebridge tile as well (seeing what frames Homebridge puts on the SCS bus will be very informative!).<myhome-bus-card>to download the.jsontrace file.⋮→ Download diagnostics (.json), and check Settings → System → Logs (search forhomekitorpyhapright after arming) if any warning/error lines appear..jsonfiles (and anyhomekit/pyhaplog lines) here — all passwords, IPs, and MACs are sanitized automatically.2. Why Apple Home shows
"Non attivo"(and immediate workaround)We also traced why this started in the recent betas:
2.0.0b15,alarm_control_panel.alarm_0became read-only (supported_features = 0) because3486central units reject directWHO = 5arm/disarm commands over the bus and instead arm/disarm via installer-programmedWHO = 9AUX frames (*9*1*1##/*9*0*1##on your plant in Need help configuring Alarm feature (F454) #311).supported_featuresto build the allowed HomeKitValidValueslist for bothSecuritySystemTargetStateandSecuritySystemCurrentState. BecauseARM_AWAYis not set on the read-only entity, HomeKit restrictsCurrentStateto[Disarmed, Triggered]andpyhapdrops updates toAway (1), leaving Apple Home stuck onNon attivo.Immediate workaround (also enables arm/disarm in Apple Home):
If you create the Template Alarm Control Panel reading its state from
alarm_control_panel.alarm_0and callingmyhome.send_messagewith your AUX frames (*9*1*1##/*9*0*1##), and expose that template alarm entity to HomeKit Bridge instead ofalarm_control_panel.alarm_0, Apple Home will receiveARM_AWAYinValidValuesand displayFuori casaproperly. We will also look into keepingAwayvalid in HomeKit when exposingalarm_control_panel.alarm_0directly as read-only!