Set unavailable when unreachable (#19012)

* Turn GPMDP Off When Unavailable

* Update requirements_all.txt

* Specified Exception Type

* Update gpmdp.py
This commit is contained in:
MaxG88 2018-12-14 07:14:32 -05:00 committed by Paulus Schoutsen
parent b97f0c0261
commit f95bd9c78f
2 changed files with 28 additions and 18 deletions

View File

@ -20,7 +20,7 @@ from homeassistant.const import (
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.util.json import load_json, save_json from homeassistant.util.json import load_json, save_json
REQUIREMENTS = ['websocket-client==0.37.0'] REQUIREMENTS = ['websocket-client==0.54.0']
_CONFIGURING = {} _CONFIGURING = {}
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -155,6 +155,7 @@ class GPMDP(MediaPlayerDevice):
self._duration = None self._duration = None
self._volume = None self._volume = None
self._request_id = 0 self._request_id = 0
self._available = True
def get_ws(self): def get_ws(self):
"""Check if the websocket is setup and connected.""" """Check if the websocket is setup and connected."""
@ -200,22 +201,31 @@ class GPMDP(MediaPlayerDevice):
def update(self): def update(self):
"""Get the latest details from the player.""" """Get the latest details from the player."""
time.sleep(1) time.sleep(1)
playstate = self.send_gpmdp_msg('playback', 'getPlaybackState') try:
if playstate is None: self._available = True
return playstate = self.send_gpmdp_msg('playback', 'getPlaybackState')
self._status = PLAYBACK_DICT[str(playstate['value'])] if playstate is None:
time_data = self.send_gpmdp_msg('playback', 'getCurrentTime') return
if time_data is not None: self._status = PLAYBACK_DICT[str(playstate['value'])]
self._seek_position = int(time_data['value'] / 1000) time_data = self.send_gpmdp_msg('playback', 'getCurrentTime')
track_data = self.send_gpmdp_msg('playback', 'getCurrentTrack') if time_data is not None:
if track_data is not None: self._seek_position = int(time_data['value'] / 1000)
self._title = track_data['value']['title'] track_data = self.send_gpmdp_msg('playback', 'getCurrentTrack')
self._artist = track_data['value']['artist'] if track_data is not None:
self._albumart = track_data['value']['albumArt'] self._title = track_data['value']['title']
self._duration = int(track_data['value']['duration'] / 1000) self._artist = track_data['value']['artist']
volume_data = self.send_gpmdp_msg('volume', 'getVolume') self._albumart = track_data['value']['albumArt']
if volume_data is not None: self._duration = int(track_data['value']['duration'] / 1000)
self._volume = volume_data['value'] / 100 volume_data = self.send_gpmdp_msg('volume', 'getVolume')
if volume_data is not None:
self._volume = volume_data['value'] / 100
except OSError:
self._available = False
@property
def available(self):
"""Return if media player is available."""
return self._available
@property @property
def media_content_type(self): def media_content_type(self):

View File

@ -1627,7 +1627,7 @@ watchdog==0.8.3
waterfurnace==1.0.0 waterfurnace==1.0.0
# homeassistant.components.media_player.gpmdp # homeassistant.components.media_player.gpmdp
websocket-client==0.37.0 websocket-client==0.54.0
# homeassistant.components.media_player.webostv # homeassistant.components.media_player.webostv
websockets==6.0 websockets==6.0