Skip to content

Commit f2c6500

Browse files
committed
Dynamically update poll interval for sonos s1 speakers
1 parent 720e13e commit f2c6500

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

music_assistant/server/providers/sonos_s1/__init__.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
from music_assistant.common.models.enums import (
3333
ConfigEntryType,
3434
PlayerFeature,
35+
PlayerState,
3536
PlayerType,
3637
ProviderFeature,
3738
)
@@ -215,6 +216,7 @@ async def cmd_play(self, player_id: str) -> None:
215216
)
216217
return
217218
await asyncio.to_thread(sonos_player.soco.play)
219+
sonos_player.mass_player.poll_interval = 5
218220
self.mass.call_later(2, sonos_player.poll_speaker)
219221

220222
async def cmd_pause(self, player_id: str) -> None:
@@ -296,6 +298,7 @@ async def play_media(
296298
didl_metadata = create_didl_metadata(media)
297299
await asyncio.to_thread(sonos_player.soco.play_uri, media.uri, meta=didl_metadata)
298300
self.mass.call_later(2, sonos_player.poll_speaker)
301+
sonos_player.mass_player.poll_interval = 5
299302

300303
async def enqueue_next_media(self, player_id: str, media: PlayerMedia) -> None:
301304
"""Handle enqueuing of the next queue item on the player."""
@@ -340,6 +343,13 @@ async def poll_player(self, player_id: str) -> None:
340343
if player_id not in self.sonosplayers:
341344
return
342345
sonos_player = self.sonosplayers[player_id]
346+
# dynamically change the poll interval
347+
if sonos_player.mass_player.state == PlayerState.PLAYING:
348+
sonos_player.mass_player.poll_interval = 5
349+
elif sonos_player.mass_player.powered:
350+
sonos_player.mass_player.poll_interval = 20
351+
else:
352+
sonos_player.mass_player.poll_interval = 60
343353
try:
344354
# the check_poll logic will work out what endpoints need polling now
345355
# based on when we last received info from the device

0 commit comments

Comments
 (0)