|
32 | 32 | from music_assistant.common.models.enums import (
|
33 | 33 | ConfigEntryType,
|
34 | 34 | PlayerFeature,
|
| 35 | + PlayerState, |
35 | 36 | PlayerType,
|
36 | 37 | ProviderFeature,
|
37 | 38 | )
|
@@ -215,6 +216,7 @@ async def cmd_play(self, player_id: str) -> None:
|
215 | 216 | )
|
216 | 217 | return
|
217 | 218 | await asyncio.to_thread(sonos_player.soco.play)
|
| 219 | + sonos_player.mass_player.poll_interval = 5 |
218 | 220 | self.mass.call_later(2, sonos_player.poll_speaker)
|
219 | 221 |
|
220 | 222 | async def cmd_pause(self, player_id: str) -> None:
|
@@ -296,6 +298,7 @@ async def play_media(
|
296 | 298 | didl_metadata = create_didl_metadata(media)
|
297 | 299 | await asyncio.to_thread(sonos_player.soco.play_uri, media.uri, meta=didl_metadata)
|
298 | 300 | self.mass.call_later(2, sonos_player.poll_speaker)
|
| 301 | + sonos_player.mass_player.poll_interval = 5 |
299 | 302 |
|
300 | 303 | async def enqueue_next_media(self, player_id: str, media: PlayerMedia) -> None:
|
301 | 304 | """Handle enqueuing of the next queue item on the player."""
|
@@ -340,6 +343,13 @@ async def poll_player(self, player_id: str) -> None:
|
340 | 343 | if player_id not in self.sonosplayers:
|
341 | 344 | return
|
342 | 345 | 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 |
343 | 353 | try:
|
344 | 354 | # the check_poll logic will work out what endpoints need polling now
|
345 | 355 | # based on when we last received info from the device
|
|
0 commit comments