From c32afcd961587f2dd19cf13b0ddbc0c3cb36d06b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 20 Oct 2016 17:36:48 +0200 Subject: [PATCH] Bugfix sonos (#3926) * Bugfix Sonos * lint * Use player uid for looking of exists * fix lint * fix unittest * Change player_id to unique_id --- homeassistant/components/media_player/sonos.py | 10 ++++++++++ tests/components/media_player/test_sonos.py | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/homeassistant/components/media_player/sonos.py b/homeassistant/components/media_player/sonos.py index 5fc0166aefa..29ed4b9b90a 100644 --- a/homeassistant/components/media_player/sonos.py +++ b/homeassistant/components/media_player/sonos.py @@ -62,6 +62,11 @@ def setup_platform(hass, config, add_devices, discovery_info=None): if discovery_info: player = soco.SoCo(discovery_info) + + # if device allready exists by config + if player.uid in DEVICES: + return True + if player.is_visible: device = SonosDevice(hass, player) add_devices([device]) @@ -212,6 +217,11 @@ class SonosDevice(MediaPlayerDevice): """Update state, called by track_utc_time_change.""" self.update_ha_state(True) + @property + def unique_id(self): + """Return an unique ID.""" + return self._player.uid + @property def name(self): """Return the name of the device.""" diff --git a/tests/components/media_player/test_sonos.py b/tests/components/media_player/test_sonos.py index 33b5afcd1ae..add1f0c3ce5 100644 --- a/tests/components/media_player/test_sonos.py +++ b/tests/components/media_player/test_sonos.py @@ -67,6 +67,10 @@ class SoCoMock(): """Cause the speaker to separate itself from other speakers.""" return + def uid(self): + """Return a player uid.""" + return "RINCON_XXXXXXXXXXXXXXXXX" + class TestSonosMediaPlayer(unittest.TestCase): """Test the media_player module."""