From 5df985a510131278330d6ad9d875fda781c2c03c Mon Sep 17 00:00:00 2001 From: Gerardo Castillo <32140109+altersis@users.noreply.github.com> Date: Sat, 21 Oct 2017 14:56:37 -0400 Subject: [PATCH] Update the Russound RNET component to use enhanced Russound.py (#9739) * Updated RussoundRNETDevice.update() to call and enhanced function that reduces network traffic Refer to issue #6 on the Russound project * Updated RussoundRNETDevice.update() to invoke an enhanced function to reduce network traffic PLease see issue #6 on the russound project * Updated REQUIREMENTS to use version 0.1.9 of the Russound component Please refer to issue #6 on the Russound rnet project * Corrected some minor style details to satisfy Houndbot * Update requirements_all.txt --- .../components/media_player/russound_rnet.py | 33 +++++++++++-------- requirements_all.txt | 2 +- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/media_player/russound_rnet.py b/homeassistant/components/media_player/russound_rnet.py index 77a9939c36c..932872467bd 100644 --- a/homeassistant/components/media_player/russound_rnet.py +++ b/homeassistant/components/media_player/russound_rnet.py @@ -15,7 +15,7 @@ from homeassistant.const import ( CONF_HOST, CONF_PORT, STATE_OFF, STATE_ON, CONF_NAME) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['russound==0.1.7'] +REQUIREMENTS = ['russound==0.1.9'] _LOGGER = logging.getLogger(__name__) @@ -85,23 +85,30 @@ class RussoundRNETDevice(MediaPlayerDevice): def update(self): """Retrieve latest state.""" - if self._russ.get_power('1', self._zone_id) == 0: - self._state = STATE_OFF - else: - self._state = STATE_ON - - self._volume = self._russ.get_volume('1', self._zone_id) / 100.0 - + # Updated this function to make a single call to get_zone_info, so that + # with a single call we can get On/Off, Volume and Source, reducing the + # amount of traffic and speeding up the update process. + ret = self._russ.get_zone_info('1', self._zone_id, 4) + _LOGGER.debug("ret= %s", ret) + if ret is not None: + _LOGGER.debug("Updating status for zone %s", self._zone_id) + if ret[0] == 0: + self._state = STATE_OFF + else: + self._state = STATE_ON + self._volume = ret[2] * 2 / 100.0 # Returns 0 based index for source. - index = self._russ.get_source('1', self._zone_id) + index = ret[1] # Possibility exists that user has defined list of all sources. # If a source is set externally that is beyond the defined list then # an exception will be thrown. # In this case return and unknown source (None) - try: - self._source = self._sources[index] - except IndexError: - self._source = None + try: + self._source = self._sources[index] + except IndexError: + self._source = None + else: + _LOGGER.error("Could not update status for zone %s", self._zone_id) @property def name(self): diff --git a/requirements_all.txt b/requirements_all.txt index f0cb207f451..e3dbfa34ab1 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -912,7 +912,7 @@ roombapy==1.3.1 # rpi-rf==0.9.6 # homeassistant.components.media_player.russound_rnet -russound==0.1.7 +russound==0.1.9 # homeassistant.components.media_player.russound_rio russound_rio==0.1.4