From 9b3403943ccb57a6876526fb55d181f9e373dff8 Mon Sep 17 00:00:00 2001 From: happyleavesaoc Date: Tue, 26 Apr 2016 05:46:08 -0400 Subject: [PATCH] update snapcast with source select (#1908) * update snapcast * fix id --- .../components/media_player/snapcast.py | 36 +++++++++++++++---- requirements_all.txt | 2 +- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/media_player/snapcast.py b/homeassistant/components/media_player/snapcast.py index 6bdbe9c6183..44cdd414da4 100644 --- a/homeassistant/components/media_player/snapcast.py +++ b/homeassistant/components/media_player/snapcast.py @@ -9,12 +9,16 @@ import logging import socket from homeassistant.components.media_player import ( - SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, MediaPlayerDevice) -from homeassistant.const import STATE_OFF, STATE_ON + SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, SUPPORT_SELECT_SOURCE, + MediaPlayerDevice) +from homeassistant.const import ( + STATE_OFF, STATE_IDLE, STATE_PLAYING, STATE_UNKNOWN) + +SUPPORT_SNAPCAST = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ + SUPPORT_SELECT_SOURCE -SUPPORT_SNAPCAST = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE DOMAIN = 'snapcast' -REQUIREMENTS = ['snapcast==1.1.1'] +REQUIREMENTS = ['snapcast==1.2.1'] _LOGGER = logging.getLogger(__name__) @@ -67,9 +71,23 @@ class SnapcastDevice(MediaPlayerDevice): @property def state(self): """Return the state of the player.""" - if self._client.connected: - return STATE_ON - return STATE_OFF + if not self._client.connected: + return STATE_OFF + return { + 'idle': STATE_IDLE, + 'playing': STATE_PLAYING, + 'unkown': STATE_UNKNOWN, + }.get(self._client.stream.status, STATE_UNKNOWN) + + @property + def source(self): + """Return the current input source.""" + return self._client.stream.identifier + + @property + def source_list(self): + """List of available input sources.""" + return self._client.available_streams() def mute_volume(self, mute): """Send the mute command.""" @@ -78,3 +96,7 @@ class SnapcastDevice(MediaPlayerDevice): def set_volume_level(self, volume): """Set the volume level.""" self._client.volume = round(volume * 100) + + def select_source(self, source): + """Set input source.""" + self._client.stream = source diff --git a/requirements_all.txt b/requirements_all.txt index b51b8082290..e917e3d8e4b 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -294,7 +294,7 @@ slacker==0.9.10 sleekxmpp==1.3.1 # homeassistant.components.media_player.snapcast -snapcast==1.1.1 +snapcast==1.2.1 # homeassistant.components.thermostat.honeywell somecomfort==0.2.1