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."""