Fix for Sonos players invisible if member of multichannel group (e.g. stereo pair)
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 25 Mar 2023 23:47:55 +0000 (00:47 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 25 Mar 2023 23:47:55 +0000 (00:47 +0100)
music_assistant/server/providers/sonos/__init__.py

index 1f8a15f4d2a7a04d502f6bacf8d319a72216e700..bcb31effa4e4381995925cd699423af707716b2d 100644 (file)
@@ -174,8 +174,10 @@ class SonosPlayer:
             # this player is the sync leader
             self.player.synced_to = None
             self.player.group_childs = {
-                x.uid for x in self.group_info.members if x.uid != self.player_id
+                x.uid for x in self.group_info.members if x.uid != self.player_id and x.is_visible
             }
+            if not self.player.group_childs:
+                self.player.type = PlayerType.STEREO_PAIR
         elif self.group_info and self.group_info.coordinator:
             # player is synced to
             self.player.synced_to = self.group_info.coordinator.uid
@@ -429,6 +431,9 @@ class SonosPlayerProvider(PlayerProvider):
         speaker_info = await asyncio.to_thread(soco_device.get_speaker_info, True)
         assert player_id not in self.sonosplayers
 
+        if soco_device not in soco_device.visible_zones:
+            return
+
         sonos_player = SonosPlayer(
             player_id=player_id,
             soco=soco_device,