Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1092 commits
Select commit Hold shift + click to select a range
aeb00e8
feat(docs): implement documentation anti-drift routine and safeguards
GreenGrassBlueOcean Sep 27, 2026
91d131a
Merge pull request #495 from GreenGrassBlueOcean/feat/docs-anti-drift…
GreenGrassBlueOcean Sep 27, 2026
3d53ca6
ci(security): add explicit least-privilege workflow permissions
GreenGrassBlueOcean Sep 27, 2026
00d84df
Merge pull request #500 from GreenGrassBlueOcean/fix/ci-workflow-perm…
GreenGrassBlueOcean Sep 27, 2026
84c0834
test(golden): add BTicino F418U2 modern dimmer samples on F454 (#466,…
GreenGrassBlueOcean Sep 27, 2026
1a60fa1
feat(gateway): implement multiple gateway, shared bus, and HA failove…
GreenGrassBlueOcean Sep 27, 2026
d747136
test(traces): add BTicino F418U2 dimmer live capture on MH200 (#466, …
GreenGrassBlueOcean Sep 27, 2026
715811c
Merge pull request #502 from GreenGrassBlueOcean/test/f418u2-dimmer-g…
GreenGrassBlueOcean Sep 27, 2026
a5c39fa
docs(media_player): add Lovelace speaker cards and multi-room audio r…
GreenGrassBlueOcean Sep 27, 2026
14ddd80
test(golden): add BTicino F418U2 modern dimmer samples on MH202 (#466…
GreenGrassBlueOcean Sep 27, 2026
c844f70
Merge pull request #504 from GreenGrassBlueOcean/feat/docs-speaker-panel
GreenGrassBlueOcean Sep 27, 2026
7847080
feat(sensor): proactive bus sweep and discovery for F520 energy meter…
GreenGrassBlueOcean Sep 27, 2026
9cc6973
feat(docs): automate per-beta documentation parity, options sentinels…
GreenGrassBlueOcean Sep 27, 2026
39711e8
Merge pull request #505 from GreenGrassBlueOcean/test/f418u2-dimmer-g…
GreenGrassBlueOcean Sep 27, 2026
b35c7e6
fix(gateway): resolve multi-gateway audit findings (#453)
GreenGrassBlueOcean Sep 27, 2026
a36b183
test(golden): add F520 active power and totalizer golden samples (#494)
GreenGrassBlueOcean Sep 27, 2026
967841c
Merge pull request #506 from GreenGrassBlueOcean/feat/issue-494-f520-…
GreenGrassBlueOcean Sep 27, 2026
1b36f34
fix(gateway): achieve 100% statement coverage on gateway events (#453)
GreenGrassBlueOcean Sep 27, 2026
391e70a
docs: calibrate beta diff compare links and document unreleased miles…
GreenGrassBlueOcean Sep 27, 2026
99a793b
Merge branch 'openwebnet/v2-phase1-architecture' into feat/multiple-g…
GreenGrassBlueOcean Sep 27, 2026
f91f189
chore: sync golden corpus with who18 energy entries
GreenGrassBlueOcean Sep 27, 2026
e4f12c6
Merge pull request #507 from GreenGrassBlueOcean/docs/versioned-beta-…
GreenGrassBlueOcean Sep 27, 2026
240ce1e
docs: add multi-gateway architecture & failover state ASCII diagrams …
GreenGrassBlueOcean Sep 27, 2026
fcc35fe
Merge branch 'openwebnet/v2-phase1-architecture' into feat/multiple-g…
GreenGrassBlueOcean Sep 27, 2026
b41f9e3
docs(roadmap): update delivery status to v2.0.0 series, b14 milestone…
GreenGrassBlueOcean Sep 27, 2026
742e689
Merge pull request #511 from GreenGrassBlueOcean/docs/roadmap-v2-mile…
GreenGrassBlueOcean Sep 27, 2026
20b2fbc
test(traces): ingest physical MyHomeServer1 CEN+, cover, and diagnost…
GreenGrassBlueOcean Sep 27, 2026
411be91
feat(multi-gateway): automated shared bus topology & delegation infer…
GreenGrassBlueOcean Sep 27, 2026
adf1922
Merge pull request #512 from GreenGrassBlueOcean/test/issue-466-myhom…
GreenGrassBlueOcean Sep 27, 2026
56c9f31
docs(roadmap): tone down Core inclusion to potential and add distribu…
GreenGrassBlueOcean Sep 27, 2026
53b74ff
docs(gateways): add ASCII flow diagram for automated topology & deleg…
GreenGrassBlueOcean Sep 27, 2026
1ee1770
fix(repairs): resolve hassfest translations exclusion conflict for fi…
GreenGrassBlueOcean Sep 27, 2026
c04fe3e
fix(config_flow): migrate to OptionsFlowWithReload and eliminate entr…
GreenGrassBlueOcean Sep 27, 2026
2676a8f
Merge pull request #513 from GreenGrassBlueOcean/docs/roadmap-tone-do…
GreenGrassBlueOcean Sep 27, 2026
a906742
feat(topology): add structured logging and forensic diagnostics for s…
GreenGrassBlueOcean Sep 27, 2026
9d66b0b
feat(cenplus): support wire WHERE address resolution and KW8011 lifec…
GreenGrassBlueOcean Sep 27, 2026
6354562
test(config_flow): calibrate flow dispatch in reauth & simplify data-…
GreenGrassBlueOcean Sep 27, 2026
21cacb0
test(config_flow): seed CONF_BROADCAST_RESYNC to cover data-only relo…
GreenGrassBlueOcean Sep 27, 2026
899f11e
refactor(multi-gateway): tighten delegated routing, profile capabilit…
GreenGrassBlueOcean Sep 27, 2026
8da0595
Merge pull request #514 from GreenGrassBlueOcean/fix/issue-510-entry-…
GreenGrassBlueOcean Sep 27, 2026
41cb13b
Merge branch 'v2-phase1-architecture' into feat/multiple-gateways-453
GreenGrassBlueOcean Sep 27, 2026
cb24200
test(reauth,options): mock async_reload in reauth and options flows t…
GreenGrassBlueOcean Sep 27, 2026
d720692
fix(options_flow): mock async_reload in test_options_flow and fix dev…
GreenGrassBlueOcean Sep 27, 2026
68b5aaa
fix(tests): calibrate role change reload and restore 100% options flo…
GreenGrassBlueOcean Sep 27, 2026
57eeef5
test(reauth): mock async_reload in test_reauth_flow to eliminate sock…
GreenGrassBlueOcean Sep 27, 2026
d46f4b2
Merge pull request #516 from GreenGrassBlueOcean/fix/issue-510-entry-…
GreenGrassBlueOcean Sep 27, 2026
1e3fe79
fix(repairs): make 1-click shared bus repair atomic and align primary…
GreenGrassBlueOcean Sep 27, 2026
75e57b9
Merge branch 'openwebnet-ha/v2-phase1-architecture' into feat/multipl…
GreenGrassBlueOcean Sep 27, 2026
8c35fe8
docs: add multi-gateway logging, diagnostic traces and troubleshootin…
GreenGrassBlueOcean Sep 27, 2026
abcfc92
fix(ci): restore issue sync and write permission for hardware trace m…
GreenGrassBlueOcean Sep 27, 2026
cf4d8cc
Merge pull request #517 from GreenGrassBlueOcean/fix/ci-auto-sync-tra…
GreenGrassBlueOcean Sep 27, 2026
d3bb2ee
Merge pull request #459 from GreenGrassBlueOcean/feat/multiple-gatewa…
GreenGrassBlueOcean Sep 27, 2026
ef477fd
test(standards): enforce valid Python syntax and strict __future__ po…
GreenGrassBlueOcean Sep 27, 2026
3187ccf
Merge pull request #518 from GreenGrassBlueOcean/fix/enforce-future-a…
GreenGrassBlueOcean Sep 27, 2026
49d3720
test(466): add MyHomeServer1 CEN+ long press trace replay and golden …
GreenGrassBlueOcean Sep 27, 2026
680870a
feat(media_player): add cast platform and host/name companion resolution
GreenGrassBlueOcean Sep 27, 2026
ccf67a1
Merge pull request #515 from GreenGrassBlueOcean/feat/cenplus-wire-ad…
GreenGrassBlueOcean Sep 27, 2026
1c6646f
Merge pull request #519 from GreenGrassBlueOcean/feat/streaming-compa…
GreenGrassBlueOcean Sep 27, 2026
cd1cc4d
feat(media_player): add group handover, 100% pre-gain, and F441 multi…
GreenGrassBlueOcean Sep 28, 2026
4cc9cd5
fix(services): send DIMENSION 0 alongside DIMENSION 22 during sync_ti…
GreenGrassBlueOcean Sep 28, 2026
9b40f15
Merge pull request #522 from GreenGrassBlueOcean/fix/issue-520-mh200n…
GreenGrassBlueOcean Sep 28, 2026
600cac9
fix(coverage): achieve 100% test coverage on decoder pool and media p…
GreenGrassBlueOcean Sep 28, 2026
64a08bb
fix(topology): ask for bus topology when adding a gateway, prune whol…
GreenGrassBlueOcean Sep 28, 2026
692b096
feat(media_player): add decoder handover on group unselect and anti-h…
GreenGrassBlueOcean Sep 28, 2026
c514c79
test(466): add BTicino F461 gateway trace closing WHO 13/1013 diagnos…
GreenGrassBlueOcean Sep 28, 2026
c00dc9b
Merge pull request #521 from GreenGrassBlueOcean/feat/media-player-gr…
GreenGrassBlueOcean Sep 28, 2026
162d274
Merge pull request #526 from GreenGrassBlueOcean/test/issue-466-f461-…
GreenGrassBlueOcean Sep 28, 2026
d2e2fa3
fix(button): calibrate-all-covers unavailable with no covers of this …
GreenGrassBlueOcean Sep 28, 2026
a6d1c8d
test(466): confirm F461 WHO1013 identity 134 on physical hardware
GreenGrassBlueOcean Sep 28, 2026
b01bfb9
fix(media_player): grace period before a member's group-leave OFF
GreenGrassBlueOcean Sep 28, 2026
2b57593
Merge pull request #528 from GreenGrassBlueOcean/fix/ma-leadership-ha…
GreenGrassBlueOcean Sep 28, 2026
75a8aff
Merge pull request #527 from GreenGrassBlueOcean/test/issue-466-f461-…
GreenGrassBlueOcean Sep 28, 2026
4463e23
Merge pull request #525 from GreenGrassBlueOcean/fix/shared-bus-onboa…
GreenGrassBlueOcean Sep 28, 2026
455155a
fix(tests): eliminate dispatcher/event-bus race in CEN failover tests
GreenGrassBlueOcean Sep 28, 2026
00a8ade
Merge pull request #529 from GreenGrassBlueOcean/fix/multi-gateway-ce…
GreenGrassBlueOcean Sep 28, 2026
6e17484
feat(device_trigger): add centralized shutter controls to gateway dev…
GreenGrassBlueOcean Sep 27, 2026
254718a
test(device_trigger): achieve 100% coverage on gateway mac resolution…
GreenGrassBlueOcean Sep 27, 2026
b83216f
test(445): confirm stationary STOP and local-keypad syntax on real ha…
GreenGrassBlueOcean Sep 28, 2026
5185195
docs(media_player): add Pre-Gain calibration guidance for decoder opt…
GreenGrassBlueOcean Sep 28, 2026
8fc6cbd
fix(media_player): async_join_players is additive, not a snapshot
GreenGrassBlueOcean Sep 28, 2026
0299dad
Merge pull request #503 from GreenGrassBlueOcean/feat/who2-centralize…
GreenGrassBlueOcean Sep 28, 2026
08237a8
fix(gateway): align shared-bus evidence window docs with the 10-minut…
GreenGrassBlueOcean Sep 28, 2026
3e5f904
Merge pull request #531 from GreenGrassBlueOcean/fix/shared-bus-evide…
GreenGrassBlueOcean Sep 28, 2026
8985e31
fix(media_player): switch off rooms that hear a decoder they do not o…
GreenGrassBlueOcean Sep 28, 2026
14a2e3d
fix(media_player): audit follow-ups for the stray-room auto-off
GreenGrassBlueOcean Sep 28, 2026
2b4c3cd
Merge pull request #530 from GreenGrassBlueOcean/fix/join-players-add…
GreenGrassBlueOcean Sep 28, 2026
ece2d1c
test(media_player): cover the auto-off guards left uncovered by the a…
GreenGrassBlueOcean Sep 28, 2026
3f0c50b
Merge v2-phase1-architecture (#530 merged)
GreenGrassBlueOcean Sep 28, 2026
4240263
fix(media_player): harden the anti-hiss timer after the broad audit o…
GreenGrassBlueOcean Sep 28, 2026
68a97b5
fix(media_player): reset the auto-off key on cancel and cancel it whe…
GreenGrassBlueOcean Sep 29, 2026
7723f22
Merge pull request #532 from GreenGrassBlueOcean/fix/stray-zone-auto-off
GreenGrassBlueOcean Sep 29, 2026
1e1202d
fix(device_trigger): do not read connections off a child device entry
GreenGrassBlueOcean Sep 28, 2026
0a127e0
fix(audio): keep the decoder books across restarts, and close the aud…
GreenGrassBlueOcean Sep 28, 2026
176fbc9
fix(decoder_pool): drop a restored claim whose decoder was rewired, a…
GreenGrassBlueOcean Sep 29, 2026
f9e0f24
fix(decoder_pool): drop restored zones that are no longer in the enti…
GreenGrassBlueOcean Sep 29, 2026
13bd379
docs(media_player): document the pause lock, tuner groups and the sta…
GreenGrassBlueOcean Sep 29, 2026
faba23f
fix(tests): wait for the event bus in the delegated-WHO test
GreenGrassBlueOcean Sep 29, 2026
7cfec4b
fix(decoder_pool): a pause that began while our zone held the decoder…
GreenGrassBlueOcean Sep 29, 2026
a262fa0
docs: show the zone name in the Active Speakers dashboard recipe
GreenGrassBlueOcean Sep 29, 2026
73fab1b
Merge pull request #539 from GreenGrassBlueOcean/docs/active-speakers…
GreenGrassBlueOcean Sep 29, 2026
29177a6
ci: forbid update listeners and direct flow reloads (#510)
GreenGrassBlueOcean Sep 29, 2026
b35a6cf
Merge pull request #543 from GreenGrassBlueOcean/ci/no-update-listene…
GreenGrassBlueOcean Sep 29, 2026
a9f0346
Merge pull request #535 from GreenGrassBlueOcean/fix/audio-stack-foll…
GreenGrassBlueOcean Sep 29, 2026
59f7e64
feat(media_player): keep the group when the anti-hiss timer switches …
GreenGrassBlueOcean Sep 29, 2026
23b5c2f
fix(decoder_pool): a decoder that is powered on but not playing is fr…
GreenGrassBlueOcean Sep 29, 2026
6b40ad1
fix(media_player): a parked room reports paused/idle, not off, so Mus…
GreenGrassBlueOcean Sep 29, 2026
f3524a2
fix(media_player): show a parked group as on the moment play arrives,…
GreenGrassBlueOcean Sep 29, 2026
eef2d16
test(sound): replay the live MH200 group lifecycle (pause, park, resu…
GreenGrassBlueOcean Sep 29, 2026
745de29
test(media_player): cover turn-on of a parked group and the park/unpa…
GreenGrassBlueOcean Sep 29, 2026
a7c9ed3
Merge pull request #538 from GreenGrassBlueOcean/feat/keep-group-when…
GreenGrassBlueOcean Sep 29, 2026
af3aec6
fix(tests): wait for the event bus in the delegation filtering test
GreenGrassBlueOcean Sep 29, 2026
4152902
chore: use a neutral decoder name in the companion resolution comment…
GreenGrassBlueOcean Sep 29, 2026
613dcb6
Merge pull request #547 from GreenGrassBlueOcean/chore/redact-decoder…
GreenGrassBlueOcean Sep 29, 2026
bb4a9e7
Merge pull request #546 from GreenGrassBlueOcean/fix/flaky-delegation…
GreenGrassBlueOcean Sep 29, 2026
903bd97
perf(media_player): wake a group faster - each frame once, members wa…
GreenGrassBlueOcean Sep 29, 2026
101fa5e
fix(media_player): start the wake echo window at write time, clean up…
GreenGrassBlueOcean Sep 29, 2026
86a8678
fix(media_player): await the decoder's play_media so a failure releas…
GreenGrassBlueOcean Sep 29, 2026
b123958
test: add classic CEN (WHO 15) short-press traces from #541
GreenGrassBlueOcean Sep 29, 2026
68d6847
test(media_player): golden frames of a live group wake by play
GreenGrassBlueOcean Sep 29, 2026
fa7e130
Merge pull request #548 from GreenGrassBlueOcean/test/issue-541-cen-t…
GreenGrassBlueOcean Sep 29, 2026
949f02d
fix(media_player): send a group's shared routing frames once across j…
GreenGrassBlueOcean Sep 29, 2026
ffa5b23
fix(media_player): send a group's routing frames once across turn-on,…
GreenGrassBlueOcean Sep 29, 2026
0f8ffee
fix(media_player): keep the routing memory when a room merely leaves …
GreenGrassBlueOcean Sep 29, 2026
2c0e3e1
perf(media_player): skip the OFF frame for a room that leaves a group…
GreenGrassBlueOcean Sep 29, 2026
160a396
perf(media_player): resume a parked group with the leader first, memb…
GreenGrassBlueOcean Sep 29, 2026
a28e224
test: add MyHomeServer1 mixed bus capture from #466 (gdluck)
GreenGrassBlueOcean Sep 29, 2026
33c43fb
fix(climate): a temperature probe is not zone WHERE-100
GreenGrassBlueOcean Sep 29, 2026
092b6bd
Merge pull request #544 from GreenGrassBlueOcean/perf/faster-group-wake
GreenGrassBlueOcean Sep 29, 2026
6a9235b
test: add MyHomeServer1 sweep with a zone 55 setpoint experiment from…
GreenGrassBlueOcean Sep 29, 2026
7e4b3d4
test: a zero-padded probe WHERE (0105) is still a probe
GreenGrassBlueOcean Sep 29, 2026
7177c06
docs: a probe WHERE is PZZ, OWNd decodes it correctly
GreenGrassBlueOcean Sep 29, 2026
54894a7
fix(climate): a dimension 12 mode 3 of a running zone is its new setp…
GreenGrassBlueOcean Sep 29, 2026
9b6a824
test: add the MyHomeServer1 startup-poll diagnostics from #466 (gdluck)
GreenGrassBlueOcean Sep 29, 2026
f326075
test: read frames from the #466 diagnostics download in the trace par…
GreenGrassBlueOcean Sep 29, 2026
441e0eb
test: pin the #466 MyHomeServer1 captures and correct their write-up
GreenGrassBlueOcean Sep 29, 2026
ad5431c
fix(media_player): turning off a group leader hands the group on
GreenGrassBlueOcean Sep 29, 2026
897e6f3
fix(climate): one probe predicate, and a probe is not a route key either
GreenGrassBlueOcean Sep 29, 2026
0262da7
fix(media_player): review follow-ups for the leader hand-over
GreenGrassBlueOcean Sep 29, 2026
01a1338
test(climate): replay every WHO 4 fixture frame against the WHERE gra…
GreenGrassBlueOcean Sep 29, 2026
d4ab188
Merge pull request #551 from GreenGrassBlueOcean/test/issue-466-myhom…
GreenGrassBlueOcean Sep 29, 2026
5c29147
refactor: one WHO 4 WHERE grammar, and a CI guard against raw WHERE r…
GreenGrassBlueOcean Sep 29, 2026
b6318d2
docs(media_player): recommend a Music Assistant Sync Group for the house
GreenGrassBlueOcean Sep 29, 2026
e45de46
Merge pull request #556 from GreenGrassBlueOcean/chore/where-grammar-…
GreenGrassBlueOcean Sep 29, 2026
8e6ec0b
Merge pull request #552 from GreenGrassBlueOcean/fix/454-dim12-mode3-…
GreenGrassBlueOcean Sep 29, 2026
54694ff
perf(climate): stop polling heating zones that never answer
GreenGrassBlueOcean Sep 29, 2026
01bce0b
test(climate): cover the re-probe recovery and the entity-removal rep…
GreenGrassBlueOcean Sep 29, 2026
1803e6c
test(media_player): cover the overlapping-OFF guard and a failing mem…
GreenGrassBlueOcean Sep 29, 2026
caff399
Merge pull request #555 from GreenGrassBlueOcean/fix/skip-unresponsiv…
GreenGrassBlueOcean Sep 29, 2026
d13131b
Merge pull request #554 from GreenGrassBlueOcean/fix/leader-off-hands…
GreenGrassBlueOcean Sep 29, 2026
9ce991b
test: pin the #553 debug log where the gateway NACKs the dead climate…
GreenGrassBlueOcean Sep 29, 2026
8ba7691
chore(release): depend on OWNd 2.0.0b9
GreenGrassBlueOcean Sep 29, 2026
01f7629
Merge remote-tracking branch 'openwebnet-ha/v2-phase1-architecture' i…
GreenGrassBlueOcean Sep 29, 2026
dffeb81
Merge pull request #557 from GreenGrassBlueOcean/test/553-dead-zone-n…
GreenGrassBlueOcean Sep 29, 2026
4a8f8ed
docs: sync anti-drift-safeguards OWNd pin to 2.0.0b9
GreenGrassBlueOcean Sep 29, 2026
b9c30de
fix(media_player): a volume of 0 on the bus is not a mute
GreenGrassBlueOcean Sep 29, 2026
3fb7d00
feat(audio): diagnostics audio block, real platform counts, companion…
GreenGrassBlueOcean Sep 29, 2026
3379764
Merge pull request #558 from GreenGrassBlueOcean/fix/volume-zero-is-n…
GreenGrassBlueOcean Sep 29, 2026
15f3f7e
refactor(media_player): split the audio zone entity into layered modules
GreenGrassBlueOcean Sep 29, 2026
f2353d6
fix(typing): make the strict-typing gate fail, and clear the 11 error…
GreenGrassBlueOcean Sep 29, 2026
6dfd03a
refactor(media_player): address review of the layer split
GreenGrassBlueOcean Sep 29, 2026
3624806
test(media_player): cover the layer hooks so the 100% coverage gate h…
GreenGrassBlueOcean Sep 29, 2026
60867da
Merge pull request #559 from GreenGrassBlueOcean/refactor/audio-media…
GreenGrassBlueOcean Sep 29, 2026
cdeab63
test(companion): cover the child-device skip so the 100% coverage gat…
GreenGrassBlueOcean Sep 29, 2026
4b1eaa6
Merge pull request #560 from GreenGrassBlueOcean/fix/strict-typing-gate
GreenGrassBlueOcean Sep 29, 2026
eb269bf
Merge pull request #442 from GreenGrassBlueOcean/chore/release-2.0.0b14
GreenGrassBlueOcean Sep 29, 2026
613adcc
fix(docs): deploy beta docs without reusing "dev" and "2.0" as aliases
GreenGrassBlueOcean Sep 30, 2026
300e341
Merge pull request #562 from GreenGrassBlueOcean/fix/docs-beta-deploy…
GreenGrassBlueOcean Sep 30, 2026
c86b5a1
fix(alarm,heating): arm without a code, and read the sign of WHO 4 te…
GreenGrassBlueOcean Sep 30, 2026
819edc9
fix(light): brightness 1 stays on, wall dimmer presets set the level,…
GreenGrassBlueOcean Sep 30, 2026
7af4490
fix: eight more runtime defects from the outside review (#566)
GreenGrassBlueOcean Sep 30, 2026
d58f9a0
feat(audio): never guess a streaming companion, guard decoders at run…
GreenGrassBlueOcean Sep 30, 2026
347f0b5
Merge pull request #567 from OpenWebNet-HA/fix/review-defects-566
GreenGrassBlueOcean Sep 30, 2026
42789f6
fix(typing): clear the two strict-typing errors the ratchet reports o…
GreenGrassBlueOcean Sep 30, 2026
7247736
fix(typing): annotate gateway.firmware instead of casting it
GreenGrassBlueOcean Sep 30, 2026
2ac48a7
fix(heating): exactly-zero WHO 4 readings are 0.0, freezing/probe/zer…
GreenGrassBlueOcean Sep 30, 2026
ddbd8f6
Merge pull request #570 from GreenGrassBlueOcean/fix/typing-ratchet-g…
GreenGrassBlueOcean Sep 30, 2026
cdcd16a
fix(audio): address audit findings for companion validation and repai…
GreenGrassBlueOcean Sep 30, 2026
7ec70b9
Merge pull request #568 from GreenGrassBlueOcean/feat/audio-companion…
GreenGrassBlueOcean Sep 30, 2026
9ff8f66
test(topology): adapt H4890 shared-bus expectations when OWNd adverti…
GreenGrassBlueOcean Sep 30, 2026
504f27f
fix(config_flow): localize connection failure abort reasons and add t…
GreenGrassBlueOcean Sep 30, 2026
67f9c74
fix(config_flow): harden connection testing, catch exceptions, and lo…
GreenGrassBlueOcean Sep 30, 2026
86b1a66
feat(trace): add MH202 burglar alarm golden trace fixture and adapt p…
GreenGrassBlueOcean Sep 30, 2026
21cd474
test(alarm): guard is_zone_active in MH202 trace replay for backward …
GreenGrassBlueOcean Sep 30, 2026
1a480ae
fix(config_flow): address review feedback on retry scope, exceptions,…
GreenGrassBlueOcean Sep 30, 2026
91ecbbc
fix(button): remove startup availability gating on CalibrateAllCovers…
GreenGrassBlueOcean Sep 30, 2026
e02e518
fix(topology): keep gateway_tier to the measured 4890 names (#564)
GreenGrassBlueOcean Sep 30, 2026
05a4abb
fix(translations): placeholder mismatches in it/fr/nl and Italian CEN…
fedem95 Sep 30, 2026
a645e7e
Merge pull request #576 from GreenGrassBlueOcean/feat/issue-564-mh202…
GreenGrassBlueOcean Sep 30, 2026
08d7d13
Merge pull request #577 from fedem95/fix/translations-it-cen-placehol…
GreenGrassBlueOcean Oct 1, 2026
96aac64
Merge pull request #573 from GreenGrassBlueOcean/fix/issue-563-connec…
GreenGrassBlueOcean Oct 1, 2026
a102ae5
Merge remote-tracking branch 'openwebnet-ha/v2-phase1-architecture' i…
GreenGrassBlueOcean Oct 1, 2026
a2e6d0a
fix(button): reactive availability listeners for CalibrateAllCoversBu…
GreenGrassBlueOcean Oct 1, 2026
d51103f
test(alarm): accept armed_home or unchanged state on system active zo…
GreenGrassBlueOcean Oct 1, 2026
e55be5f
docs(audio): add a "How it fits together" start-here section (#585)
GreenGrassBlueOcean Oct 1, 2026
9c23de5
ci: install execnet for the --no-deps pytest-homeassistant-custom-com…
GreenGrassBlueOcean Oct 1, 2026
ae35417
fix(typing): pass mypy --strict on Home Assistant 2026.10
GreenGrassBlueOcean Oct 1, 2026
43bb5ee
Merge branch 'ci/add-execnet-to-smoke-workflows' into fix/strict-typi…
GreenGrassBlueOcean Oct 1, 2026
a48cb2b
Merge pull request #587 from GreenGrassBlueOcean/ci/add-execnet-to-sm…
GreenGrassBlueOcean Oct 1, 2026
2787d8f
Merge branch 'v2-phase1-architecture' into docs/audio-overview-585
GreenGrassBlueOcean Oct 1, 2026
9a912ee
test(connection): accept password_required or password_error for a no…
GreenGrassBlueOcean Oct 1, 2026
1ab9798
Merge pull request #586 from GreenGrassBlueOcean/docs/audio-overview-585
GreenGrassBlueOcean Oct 1, 2026
cee9b6c
feat(audio): auto-join active streaming group on physical wall button…
GreenGrassBlueOcean Oct 1, 2026
d7b8aeb
fix(media_player): sync source selection and group membership on bus …
GreenGrassBlueOcean Oct 1, 2026
0f0ce32
fix(typing): narrow runtime type in media_player_group for strict mypy
GreenGrassBlueOcean Oct 1, 2026
f5b23ff
fix(coverage): achieve 100% test coverage for auto-join streaming and…
GreenGrassBlueOcean Oct 1, 2026
9d3ec8a
Merge pull request #588 from GreenGrassBlueOcean/test/negotiate-nonce…
GreenGrassBlueOcean Oct 1, 2026
01ed632
Merge pull request #581 from GreenGrassBlueOcean/feat/issue-579-wall-…
GreenGrassBlueOcean Oct 1, 2026
a91d7ba
test(trace): add MyHomeServer1 cover calibration golden trace fixture…
GreenGrassBlueOcean Oct 1, 2026
ca1a3b5
Merge pull request #584 from GreenGrassBlueOcean/test/issue-466-myhom…
GreenGrassBlueOcean Oct 1, 2026
dc9d5b8
Merge pull request #575 from GreenGrassBlueOcean/fix/issue-565-target
GreenGrassBlueOcean Oct 1, 2026
c0b0ea6
docs(audio): clarify stereo wiring, audio source interface, and strea…
GreenGrassBlueOcean Oct 1, 2026
7756a09
Merge pull request #589 from GreenGrassBlueOcean/docs/audio-setup-and…
GreenGrassBlueOcean Oct 1, 2026
c7f16d3
fix(climate): exempt central units from Dimension 14 status queries a…
GreenGrassBlueOcean Oct 1, 2026
e1b7958
docs(climate): refine Dimension 14 status query wording and clean up …
GreenGrassBlueOcean Oct 1, 2026
392a609
Merge pull request #590 from GreenGrassBlueOcean/fix/issue-582-centra…
GreenGrassBlueOcean Oct 1, 2026
35bb2a3
test(climate): assert central unit broadcasts never discover phantom …
GreenGrassBlueOcean Oct 1, 2026
8a88198
docs(climate): formalize central unit event-driven model and ghost en…
GreenGrassBlueOcean Oct 1, 2026
cdb1f98
fix(climate): align central mode contract, add discovery positive con…
GreenGrassBlueOcean Oct 1, 2026
4b8f9b7
docs(audio): clarify 2-wire SCS audio multiplexing and add official w…
GreenGrassBlueOcean Oct 1, 2026
b54b72f
test(climate): assert yaml and bus central unit coalescing, strengthe…
GreenGrassBlueOcean Oct 1, 2026
1eb4bf4
Merge pull request #591 from GreenGrassBlueOcean/fix/issue-582-phanto…
GreenGrassBlueOcean Oct 1, 2026
e18e934
Merge pull request #592 from GreenGrassBlueOcean/docs/audio-scs-bus-w…
GreenGrassBlueOcean Oct 1, 2026
48bac50
test(climate): wrap central mode dispatcher listener in @callback to …
GreenGrassBlueOcean Oct 1, 2026
3f2b760
Merge pull request #595 from GreenGrassBlueOcean/fix/issue-582-centra…
GreenGrassBlueOcean Oct 1, 2026
da55e07
test(trace): add authentic Legrand F455 Basic Gateway trace and plant…
GreenGrassBlueOcean Oct 1, 2026
00b91c2
fix(triggers): unpack trigger_data and forward event context to suppo…
GreenGrassBlueOcean Oct 1, 2026
f25e99f
test(privacy): anonymize F455 plant timezone and trace setup_times UL…
GreenGrassBlueOcean Oct 1, 2026
2733f60
test(profiles): adapt F455 tests to support forward-compatibility (OW…
GreenGrassBlueOcean Oct 1, 2026
5a8e274
Merge pull request #596 from GreenGrassBlueOcean/test/issue-466-f455-…
GreenGrassBlueOcean Oct 1, 2026
f31d368
Merge pull request #598 from GreenGrassBlueOcean/fix/f455-profile-aud…
GreenGrassBlueOcean Oct 1, 2026
3ac21ff
Merge pull request #597 from GreenGrassBlueOcean/fix/issue-445-device…
GreenGrassBlueOcean Oct 1, 2026
a8ff506
test(triggers): strengthen event context assertions, CEN+ coverage, a…
GreenGrassBlueOcean Oct 1, 2026
bd4752d
test(triggers): lock trigger_data=None handling and CEN+ unmatched bu…
GreenGrassBlueOcean Oct 1, 2026
0daf457
Merge pull request #599 from GreenGrassBlueOcean/fix/issue-445-device…
GreenGrassBlueOcean Oct 1, 2026
c413079
fix(triggers): device triggers only fire on their own CEN/CEN+ family…
GreenGrassBlueOcean Oct 1, 2026
04973cf
fix(triggers): fail closed when the trigger's device is missing; test…
GreenGrassBlueOcean Oct 1, 2026
9b7bb01
test(triggers): assert missing-device warning, cover family+gateway f…
GreenGrassBlueOcean Oct 1, 2026
d4947b5
test(triggers): drop unused unsub assignment flagged by ruff F841 (#445)
GreenGrassBlueOcean Oct 1, 2026
f94b5cc
feat(config-flow): warn during setup that the gateway's connections a…
GreenGrassBlueOcean Oct 1, 2026
53748fa
feat(config-flow): start new gateways at the profile's default comman…
GreenGrassBlueOcean Oct 1, 2026
87bb28c
Merge pull request #603 from GreenGrassBlueOcean/fix/issue-601-trigge…
GreenGrassBlueOcean Oct 2, 2026
222e86a
test(config-flow): tolerate models the installed OWNd has no profile for
GreenGrassBlueOcean Oct 2, 2026
d3a760e
fix(sensor): ignore broadcast WHERE 0 frames and prune phantom illumi…
GreenGrassBlueOcean Oct 2, 2026
6804784
test(golden): add WHO 1 dimension 6 illuminance fixtures and ensure 1…
GreenGrassBlueOcean Oct 2, 2026
a4ba475
Merge pull request #605 from GreenGrassBlueOcean/feat/setup-shared-ga…
GreenGrassBlueOcean Oct 2, 2026
fa89704
fix(sensor): address review feedback on build_illuminance guard, WHO …
GreenGrassBlueOcean Oct 2, 2026
705596d
Merge pull request #606 from GreenGrassBlueOcean/feat/default-command…
GreenGrassBlueOcean Oct 2, 2026
e5521bf
Merge pull request #607 from GreenGrassBlueOcean/fix/issue-604-phanto…
GreenGrassBlueOcean Oct 2, 2026
71a3af7
test(alarm): arm with WHAT 8, not WHAT 1
GreenGrassBlueOcean Oct 2, 2026
fb3cce9
Merge pull request #608 from GreenGrassBlueOcean/fix/alarm-what8-is-a…
GreenGrassBlueOcean Oct 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
51 changes: 51 additions & 0 deletions .github/ISSUE_TEMPLATE/audio_field_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: "🔊 Audio field report (Music Assistant / F441)"
description: "Report how multi-room audio behaves on your plant. Passing runs count too."
title: "[Audio]: "
labels: ["audio", "field-report"]
body:
- type: markdown
attributes:
value: |
## Audio field report

Grouping is where Music Assistant and the analog matrix meet, and each plant behaves a little differently.
The four checks below are the ones we replay as tests. Please attach the **diagnostics file**
(*Settings → Devices & services → MyHOME → ⋮ → Download diagnostics*) and, for Music Assistant problems,
its log from around the time it happened.

- type: input
id: plant
attributes:
label: Plant
description: Gateway model, matrix (F441 / F441M), number of zones, decoder(s).
placeholder: "MH200 + F441M, 6 zones, Squeezelite + Cambridge CXN"
validations:
required: true

- type: input
id: versions
attributes:
label: Versions
description: MyHOME, Home Assistant and Music Assistant versions.
placeholder: "MyHOME 2.0.0b14, HA 2026.9.2, Music Assistant 2.x"
validations:
required: true

- type: checkboxes
id: checks
attributes:
label: Which checks passed?
description: Tick what worked. Leave unticked what did not, and describe it below.
options:
- label: "Played to the Music Assistant Sync Group, added a third room, dropped the leader: matrix and queue stayed in step"
- label: "Volume of one member set to 0 and raised again: the slider did not lock"
- label: "After the anti-hiss auto-off silenced the house, play brought the parked members back as a group"
- label: "Cambridge decoder only: diagnostics show the DLNA/UPnP renderer as companion, not a Music Assistant clone"

- type: textarea
id: what_happened
attributes:
label: What you did, and when
description: "For example: 21:48, pressed play on the Huis group, Bureau's slider would not move."
validations:
required: true
139 changes: 139 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
name: "🐛 Bug Report"
description: "File a bug report or defect with the MyHOME integration."
title: "[Bug]: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
## Thank you for helping improve MyHOME!

To help us diagnose and fix issues quickly, please provide diagnostics and logs using any of the following methods:

---

### ⚡ How to provide diagnostic logs & bundles:
1. **One-Click Bus Trace Bundle** *(Fastest)*:
If you use the Lovelace **MyHOME Bus Monitor Card** (`<myhome-bus-card>`), click **"📋 Report Issue / Copy Trace"**. It copies your gateway model, firmware, queue telemetry, and recent bus frames to your clipboard to paste below.
2. **Home Assistant Diagnostics File**:
Go to **Settings ➔ Devices & Services ➔ MyHOME ➔ ⋮ (3 dots) ➔ Download diagnostics**. You can drag & drop the downloaded JSON file directly into the attachment box below!
3. **Home Assistant Full Log or Zip**:
Go to **Settings ➔ System ➔ Logs ➔ Download full log**. You can drag & drop your `.log` or `.zip` file directly into the attachment box below.

---

- type: textarea
id: description
attributes:
label: Bug Description
description: A clear and concise description of what the bug is.
placeholder: What went wrong? What did you observe versus what did you expect?
validations:
required: true

- type: dropdown
id: gateway_model
attributes:
label: Gateway Model
description: Select your BTicino / Legrand OpenWebNet gateway hardware model.
options:
- "F454 (Audio/Video Gateway)"
- "F455 (Basic Gateway)"
- "MH200 (Scenario Programmer)"
- "MH200N (Scenario Programmer)"
- "MH202 (Scenario Programmer)"
- "AM4890 (Basic Gateway)"
- "MyHomeServer1 (MHS1)"
- "Legrand 3578 USB/Serial (Serial Interface)"
- "F452 / F453AV"
- "Other / Custom OpenWebNet Server"
validations:
required: true

- type: dropdown
id: connection_type
attributes:
label: Connection Type
description: How is Home Assistant communicating with your OpenWebNet gateway?
options:
- "Ethernet / IP (TCP port 20000, unencrypted OpenWebNet)"
- "Ethernet / IP (TCP port 20000, HMAC-SHA2 / SHA1 authenticated)"
- "USB / Serial (RS-232 / USB-to-serial adapter, e.g. Legrand 3578)"
- "Virtual / TCP Tunnel"
- "Other"
validations:
required: true

- type: input
id: ha_version
attributes:
label: Home Assistant Version
description: Find this under Settings -> About (e.g. 2024.9.0).
placeholder: "e.g. 2024.9.0"
validations:
required: true

- type: input
id: integration_version
attributes:
label: Integration Version
description: The version or commit of the MyHOME integration.
placeholder: "e.g. 1.0.0-beta (v2-phase1-architecture)"
validations:
required: true

- type: textarea
id: reproduction_steps
attributes:
label: Steps to Reproduce
description: Step-by-step instructions to reproduce the issue.
placeholder: |
1. Open Home Assistant dashboard
2. Toggle switch 'switch.living_room'
3. Observe that light physically switches on, but state flips back to off after 3 seconds...
validations:
required: true

- type: textarea
id: diagnostic_attachment
attributes:
label: "📎 Diagnostics File / Log File / Zip Attachment"
description: |
**Drag & drop files directly into this box** (GitHub supports `.log`, `.txt`, `.json`, `.zip`, `.tar.gz`):
- 📦 **Diagnostics JSON**: *Settings ➔ Devices & Services ➔ MyHOME ➔ ⋮ (3 dots) ➔ Download diagnostics*
- 📋 **Full Log File**: *Settings ➔ System ➔ Logs ➔ Download full log* (or zip of `/config/home-assistant.log`)
placeholder: "Drag and drop your home-assistant.log, .zip, or myhome_diagnostics.json file here..."
validations:
required: false

- type: textarea
id: diagnostic_payload
attributes:
label: Bus Monitor Diagnostic Payload / Bus Trace
description: |
Paste the clipboard content generated by clicking **"📋 Report Issue / Copy Trace"** in `<myhome-bus-card>` here.
Contains gateway parameters, buffer telemetry, and recent OpenWebNet frames.
render: markdown
placeholder: "Paste clipboard contents here (starts with ### MyHOME Diagnostic Bundle)..."
validations:
required: false

- type: textarea
id: logs
attributes:
label: Log Snippets / Python Tracebacks
description: Relevant log entries or traceback snippets from Settings -> System -> Logs.
render: text
placeholder: "Paste relevant traceback or error messages from custom_components.myhome here..."
validations:
required: false

- type: checkboxes
id: diagnostics_checklist
attributes:
label: Diagnostics Checklist
description: Attaching diagnostic bundles or logs significantly speeds up root-cause analysis and resolution.
options:
- label: "I have attached or pasted the MyHOME Bus Monitor diagnostic bundle or OpenWebNet frame trace."
- label: "I have attached the Home Assistant full log file (.log or .zip) or pasted the crash traceback."
- label: "I have attached the MyHOME integration diagnostics JSON (from Settings -> Devices & Services -> MyHOME)."
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: 💬 Community Discussions & Questions
url: https://github.com/OpenWebNet-HA/MyHOME/discussions
about: Ask questions, get help, or share your MyHOME automation setups with the community.
- name: 🧪 v2 Architecture Testing Thread (#229)
url: https://github.com/OpenWebNet-HA/MyHOME/issues/229
about: Join community testing feedback for the Phase 1 v2 architecture rewrite.
- name: 🔀 v2 Architecture Pull Request (#232)
url: https://github.com/OpenWebNet-HA/MyHOME/pull/232
about: Review code changes, architecture specs, and development progress in PR #232.
83 changes: 83 additions & 0 deletions .github/ISSUE_TEMPLATE/device_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: "💡 New Device Request"
description: "Request support for a new or currently unsupported BTicino / Legrand device."
title: "[Device Request]: "
labels: ["enhancement", "device-support"]
body:
- type: markdown
attributes:
value: |
## Request Support for BTicino / Legrand Hardware

Thank you for requesting support for a new BTicino / Legrand device!
Please fill out the technical details below so maintainers can verify the OpenWebNet protocol messages and implement native support.

- type: input
id: device_model
attributes:
label: Device Model / Commercial Catalog Code
description: The exact BTicino or Legrand catalog reference (e.g. F411/4, LN4652, 3456, F420, MH201).
placeholder: "e.g. F411/4"
validations:
required: true

- type: dropdown
id: who_system
attributes:
label: OpenWebNet WHO System Domain
description: Which OpenWebNet subsystem (WHO) does this device belong to?
options:
- "WHO=1 (Lighting / Relays / Actuators / Switches)"
- "WHO=2 (Automation / Shutters / Blinds / Motorized actuators)"
- "WHO=4 (Heating / Thermoregulation / Thermostats / Zones)"
- "WHO=15 (CEN Pushbuttons / Scenario Control)"
- "WHO=16 (Sound System / Audio Distribution)"
- "WHO=18 (Energy Management / Power Meters / Actuators)"
- "WHO=25 (CEN+ / Advanced Scenario Pushbuttons)"
- "WHO=13 (Gateway & System Diagnostics)"
- "Other / Unknown WHO"
validations:
required: true

- type: textarea
id: configuration
attributes:
label: Physical Configurators or Virtual Configuration
description: Describe the configuration plugs inserted in the physical sockets (e.g. A=1, PL=2, M=MOD) or virtual parameters set via MyHOME_Suite.
placeholder: "e.g. Configured with A=2, PL=3, M=0 (or virtual ID 12345 in MyHOME_Suite)"
validations:
required: true

- type: textarea
id: sample_bus_frames
attributes:
label: Sample OpenWebNet Bus Frames
description: |
Bus frames captured from this device via the Lovelace Bus Monitor Card or integration logs.
Please include frames for status queries, state transitions, button presses, etc.
render: markdown
placeholder: |
```
*1*1*23##
*#1*23*1*0##
*1*0*23##
```
validations:
required: true

- type: textarea
id: expected_behavior
attributes:
label: Expected Home Assistant Behavior
description: What Home Assistant entity type and controls should this device map to (e.g. Light, Switch, Cover, Climate, Sensor, Event)?
placeholder: "e.g. Should be exposed as a 4-channel cover entity with open/close/stop commands..."
validations:
required: false

- type: textarea
id: documentation_links
attributes:
label: Documentation / Technical Datasheets
description: Links to BTicino / Legrand product manuals, datasheets, or OpenWebNet protocol specifications.
placeholder: "https://..."
validations:
required: false
1 change: 1 addition & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- [ ] **V2 Architecture:** New entities implement `handle_event()` and do not manually subscribe via `async_dispatcher_connect`.
71 changes: 71 additions & 0 deletions .github/workflows/crowdin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Crowdin Translation Sync

on:
push:
branches: ["v2-phase1-architecture"]
paths:
- "custom_components/myhome/translations/en.json"
- "custom_components/myhome/strings.json"
schedule:
- cron: "0 2 * * 0" # Weekly on Sunday at 02:00 UTC
workflow_dispatch:
inputs:
upload_sources:
description: "Upload English source strings (en.json) to Crowdin"
required: true
type: boolean
default: true
upload_translations:
description: "Upload existing translations (nl, fr, it) to seed Crowdin (run once)"
required: false
type: boolean
default: false
download_translations:
description: "Download approved translated strings from Crowdin"
required: true
type: boolean
default: true

permissions:
contents: write
pull-requests: write

jobs:
crowdin:
name: Synchronize with Crowdin
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Check Crowdin credentials
id: check_creds
run: |
if [ -z "${{ secrets.CROWDIN_PROJECT_ID }}" ] || [ -z "${{ secrets.CROWDIN_PERSONAL_TOKEN }}" ]; then
echo "configured=false" >> "$GITHUB_OUTPUT"
echo "Crowdin credentials (CROWDIN_PROJECT_ID, CROWDIN_PERSONAL_TOKEN) are not set. Skipping Crowdin sync."
else
echo "configured=true" >> "$GITHUB_OUTPUT"
fi

- name: Crowdin Action
if: steps.check_creds.outputs.configured == 'true'
uses: crowdin/github-action@e4a6c1338b4063c77d46a81875265f9e8bd76f95 # v3.0.0
with:
upload_sources: ${{ github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.upload_sources) }}
upload_translations: ${{ github.event_name == 'workflow_dispatch' && inputs.upload_translations }}
download_translations: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.download_translations) }}
skip_untranslated_strings: true
export_only_approved: true
create_pull_request: ${{ github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.download_translations) }}
pull_request_title: "chore(translations): update community translations from Crowdin"
pull_request_body: "Automated pull request generated by Crowdin GitHub Action with approved community translations."
pull_request_base_branch_name: "v2-phase1-architecture"
localization_branch_name: "l10n_crowdin_v2"
commit_message: "chore(translations): sync community translations from Crowdin"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
Loading
Loading