Repository navigation
feat(sound): modernize sound source commands and intercept physical wall transport steps (blocked on OWNd 2.0.0b11) - #651
Merged
GreenGrassBlueOcean merged 6 commits intoOct 9, 2026
Conversation
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This was referenced Oct 8, 2026
…all transport steps - Refactor MyHOMESoundSource transport actions to use OWNSoundCommand factory methods (next_track, previous_track, seek_up, seek_down, select_track, set_frequency) - Intercept physical wall control stepping telegrams (track_step_forward, track_step_backward from WHAT 6001..6015 / 6101..6115) to maintain real-time station synchronization - Synchronize tests/golden/firmware_oracle.json fixture with 380 unique inputs across 12 gateways - Update tests/test_firmware_oracle_conformance.py for empirical F454 sound source verdicts - 100% passing tests across sound component and oracle conformance suites (34 passed), 54/54 HA Platinum rules verified
…561N Stereo Control
- Pin OWNd requirement to 2.0.0b11 in manifest.json and anti-drift safeguards - Migrate sound source actions to OWNSoundCommand factory methods (next_track, previous_track, seek_up, seek_down, select_track, set_frequency, start_rds, request_frequency, request_track, request_rds) - Drop legacy WHAT 6001..6015 manual fallback in handle_event in favor of native OWNd b11 track_step properties
GreenGrassBlueOcean
force-pushed
the
feat/l4561n-sound-source-transport
branch
from
October 9, 2026 15:45
a705806 to
a39f47a
Compare
GreenGrassBlueOcean
merged commit Oct 9, 2026
5c75f0d
into
OpenWebNet-HA:v2-phase1-architecture
17 checks passed
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Important
Blocked on Upstream Release:
OWNd 2.0.0b11This PR depends directly on
OWNd 2.0.0b11(specifically OpenWebNet-HA/OWNd#95, which implements WHO 16 sound source factory builders and wall transport stepping event decoders).manifest.jsonpinsOWNd==2.0.0b11. Because2.0.0b11has not yet been published to PyPI, runner environments fail at dependency installation withERROR: No matching distribution found for OWNd==2.0.0b11.OWNd(at PR Classe EOS300 #95 / b11), the entire test suite and trace replay suite pass with 100.0% coverage and 0 lint violations.v2.0.0b11, re-running the failed GitHub Actions workflows will turn all 16 matrix checks green.Summary
Modernizes the
MyHOMESoundSourceentity transport and tuning commands by utilizingOWNSoundCommandfactory methods and introduces real-time state tracking for physical wall control stepping telegrams, backed by ground-truth verdicts fromown-firmware-oraclePR #25 andOWNdPR #95.1. Upstream Dependency & Rollout Order
graph TD A["1. Merge OWNd PR #95 (WHO 16 builders & stepping decoders)"] --> B["2. Merge OWNd PR #98 (Bump version to 2.0.0-b11)"] B --> C["3. Publish GitHub Release v2.0.0b11 to PyPI"] C --> D["4. Re-run MyHOME PR #651 CI (all 16 checks turn green)"] D --> E["5. Merge MyHOME PR #651"]OWNdOWNSoundCommandfactory builders (turn_on,turn_off,next_track,previous_track,seek_up,seek_down,select_track,set_frequency,start_rds, etc.) andOWNSoundEventstepping properties (track_step_forward,track_step_backward).OWNd2.0.0b11.MyHOMEMyHOMESoundSourceand pinsOWNd==2.0.0b11inmanifest.json.2. Protocol & Empirical Grounding
bt_luci/own-firmware-oracle)*16*6001*where##,*16*6101*where##)WHO_16.pdf(Sound System), WHAT6001..6015/6101..6115F454(020051) andMyHomeServer1(028206) ACK and translate to SCS telegramstests/fixtures/traces/l4561n_stereo_control/myhome_trace_MH200_l4561n_sound_source.json*16*5000*where##,*16*5100*where##)WHO_16.pdf, WHAT5000/5100*#16*where*#7*N##)WHO_16.pdf, Dimension 7*#16*where*#6*0*F##)WHO_16.pdf, Dimension 6 (kHz, 6 digits)*16*101*where##,*#16*where*8##)WHO_16.pdf, WHAT101, Dimension 832..126) broadcast on busRADIO 1)libqtdevices:sound_device.cpp, TS10_1_0_23)3. Key Additions & Features
MyHOMESoundSourceModernization (custom_components/myhome/sound_source.py):OWNSoundCommandfactory builders:async_turn_on()->OWNSoundCommand.turn_on(self._where)async_turn_off()->OWNSoundCommand.turn_off(self._where)async_media_next_track()->OWNSoundCommand.next_track(self._where)async_media_previous_track()->OWNSoundCommand.previous_track(self._where)async_seek_up()->OWNSoundCommand.seek_up(self._where)async_seek_down()->OWNSoundCommand.seek_down(self._where)async_select_station(station)->OWNSoundCommand.select_track(self._where, station)async_set_frequency(megahertz)->OWNSoundCommand.set_frequency(self._where, kilohertz)async_added_to_hass()->OWNSoundCommand.start_rds(self._where)async_update()->OWNSoundCommand.request_frequency(),request_track(),request_rds()track_step_forward(WHAT 6001..6015) andtrack_step_backward(WHAT 6101..6115) telegrams emitted when users press physical wall switches (e.g., L4561N / 3488 / LN4653).[1, station_count]), updating entity state immediately without waiting for a full status poll.Authentic Physical Gateway Bus Trace & Replay Suite:
tests/fixtures/traces/l4561n_stereo_control/myhome_trace_MH200_l4561n_sound_source.json: 44 authentic on-wire OpenWebNet frames captured from a physical MH200 gateway communicating with the BTicino L4561N Stereo Control (Source 2 / address102) and Zone 21 amplifier.tests/test_sound_source_trace_replay.py: Full trace replay and multi-step physical pulse tracking tests (+1..+5, -1..-4, boundary clamping, direct preset jumps).Empirical Firmware Oracle Fixtures & Conformance:
tests/golden/firmware_oracle.json: synchronized withown-firmware-oracle(380 unique inputs across 12 gateways).tests/test_firmware_oracle_conformance.py: incorporates empirical F454 sound source verdicts (sound.cmd.source.on.1,sound.cmd.source.on.2) asserting on-wire forwarding semantics.4. Verification & Testing
test_component_sound_source.py,test_sound_source_trace_replay.py) with 100.0% statement and branch coverage.test_firmware_oracle_conformance.py).scripts/verify_ha_standards.py).scripts/sync_documentation.py --check).ruff check custom_components tests scripts).