From 241a0793bb804dc00bb9a92ceec02a783dde7059 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Wed, 25 Apr 2018 20:31:42 +0200 Subject: [PATCH] Add Sonos device attribute with grouping information (#13553) --- homeassistant/components/media_player/sonos.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/sonos.py b/homeassistant/components/media_player/sonos.py index b10c761d532..cc10355abe8 100644 --- a/homeassistant/components/media_player/sonos.py +++ b/homeassistant/components/media_player/sonos.py @@ -67,7 +67,7 @@ ATTR_WITH_GROUP = 'with_group' ATTR_NIGHT_SOUND = 'night_sound' ATTR_SPEECH_ENHANCE = 'speech_enhance' -ATTR_IS_COORDINATOR = 'is_coordinator' +ATTR_SONOS_GROUP = 'sonos_group' UPNP_ERRORS_TO_IGNORE = ['701', '711'] @@ -340,6 +340,7 @@ class SonosDevice(MediaPlayerDevice): self._play_mode = None self._name = None self._coordinator = None + self._sonos_group = None self._status = None self._media_duration = None self._media_position = None @@ -688,7 +689,14 @@ class SonosDevice(MediaPlayerDevice): if p.uid != coordinator_uid] if self.unique_id == coordinator_uid: + sonos_group = [] + for uid in (coordinator_uid, *slave_uids): + entity = _get_entity_from_soco_uid(self.hass, uid) + if entity: + sonos_group.append(entity.entity_id) + self._coordinator = None + self._sonos_group = sonos_group self.schedule_update_ha_state() for slave_uid in slave_uids: @@ -696,6 +704,7 @@ class SonosDevice(MediaPlayerDevice): if slave: # pylint: disable=protected-access slave._coordinator = self + slave._sonos_group = sonos_group slave.schedule_update_ha_state() @property @@ -1038,7 +1047,7 @@ class SonosDevice(MediaPlayerDevice): @property def device_state_attributes(self): """Return device specific state attributes.""" - attributes = {ATTR_IS_COORDINATOR: self.is_coordinator} + attributes = {ATTR_SONOS_GROUP: self._sonos_group} if self._night_sound is not None: attributes[ATTR_NIGHT_SOUND] = self._night_sound