Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions music_assistant/providers/heos/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ async def _setup_controllers(self, controller_ip: str, connect_preferred: bool =

try:
self._heos.add_on_controller_event(self._handle_controller_event)
self._heos.add_on_disconnected(self._on_heos_disconnected)
await self._populate_sources()
except HeosError as err:
self.logger.error("Unexpected error setting up HEOS controller: %s", err)
Expand Down Expand Up @@ -226,6 +227,14 @@ async def _disconnect_controllers(self) -> None:
await self._heos_queue.disconnect()
self._heos_queue = None

async def _on_heos_disconnected(self) -> None:
"""Mark all HEOS players unavailable when the controller loses connection."""
self.logger.warning("HEOS controller disconnected, marking players unavailable")
for player in self.mass.players.all_players(provider_filter=self.instance_id):
assert isinstance(player, HeosPlayer)
player.set_device_info()
player.update_state()

async def discover_players(self) -> None:
"""Discover players for this provider."""
if self._controller_discovery_running or self._player_discovery_running or not self._heos:
Expand Down