Add HEOS Player provider (#2986)
authorTom Matheussen <13683094+Tommatheussen@users.noreply.github.com>
Mon, 26 Jan 2026 06:51:09 +0000 (07:51 +0100)
committerGitHub <noreply@github.com>
Mon, 26 Jan 2026 06:51:09 +0000 (07:51 +0100)
commitb06b694c8b7ee9f6746f598dcedaf8949d29cb70
treec76417f69b6d90cbfe2c139017ca8a9e84e0af75
parentaafda01beb46f32a9cd190c661408a721e935bd4
Add HEOS Player provider (#2986)

* Initial commit, ability to connect to a HEOS system and play URL

* Added more function handling

* Some code improvements, fix disconnection done too late

* Map music sources to inputs

* Make sure players are registered, even when they are marked as unavailable

* Build proper source list

* Keep internal heos reference in player

* Set dynamic attributes after player setup

* Implement grouping

* Grab group information when players are set up

* Handle group change events

* Build source list in provider

* Minor rearrangement

* Make sure player update event is cleaned up

* Some cleanup

* Remove some leftover logging

* Handle controller event in provider

* Split player updating into dedicated events

* Populate current_media when we're not playing

* Set sample rate configs

* Handle connection errors

* Temp troubleshooting commit

* Clean up some code and comments, adjusted some minor things

* Use fallbacks on mappings

* Disable player re-enabling for now

* Handle AUX inputs

* Handle player change event from HEOS

* address PR review comments

* Reduce safe max sample rate and bit depth for older devices

* Don't need to set credentials, unused right now
music_assistant/providers/heos/__init__.py [new file with mode: 0644]
music_assistant/providers/heos/constants.py [new file with mode: 0644]
music_assistant/providers/heos/helpers.py [new file with mode: 0644]
music_assistant/providers/heos/icon.svg [new file with mode: 0644]
music_assistant/providers/heos/manifest.json [new file with mode: 0644]
music_assistant/providers/heos/player.py [new file with mode: 0644]
music_assistant/providers/heos/provider.py [new file with mode: 0644]
requirements_all.txt