diff --git a/homeassistant/components/sensor/steam_online.py b/homeassistant/components/sensor/steam_online.py index c5427e7b8ba..679b798a24b 100644 --- a/homeassistant/components/sensor/steam_online.py +++ b/homeassistant/components/sensor/steam_online.py @@ -4,6 +4,8 @@ Sensor for Steam account status. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/sensor.steam_online/ """ +import logging + import voluptuous as vol from homeassistant.components.sensor import PLATFORM_SCHEMA @@ -13,6 +15,8 @@ import homeassistant.helpers.config_validation as cv REQUIREMENTS = ['steamodd==4.21'] +_LOGGER = logging.getLogger(__name__) + CONF_ACCOUNTS = 'accounts' ICON = 'mdi:steam' @@ -23,6 +27,13 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.All(cv.ensure_list, [cv.string]), }) +STATE_ONLINE = 'Online' +STATE_BUSY = 'Busy' +STATE_AWAY = 'Away' +STATE_SNOOZE = 'Snooze' +STATE_TRADE = 'Trade' +STATE_PLAY = 'Play' + # pylint: disable=unused-argument def setup_platform(hass, config, add_devices, discovery_info=None): @@ -46,7 +57,7 @@ class SteamSensor(Entity): @property def name(self): """Return the name of the sensor.""" - return self._profile.persona + return self._name @property def entity_id(self): @@ -61,19 +72,28 @@ class SteamSensor(Entity): # pylint: disable=no-member def update(self): """Update device state.""" - self._profile = self._steamod.user.profile(self._account) - if self._profile.current_game[2] is None: - self._game = 'None' - else: - self._game = self._profile.current_game[2] - self._state = { - 1: 'Online', - 2: 'Busy', - 3: 'Away', - 4: 'Snooze', - 5: 'Trade', - 6: 'Play', - }.get(self._profile.status, 'Offline') + try: + self._profile = self._steamod.user.profile(self._account) + if self._profile.current_game[2] is None: + self._game = 'None' + else: + self._game = self._profile.current_game[2] + self._state = { + 1: STATE_ONLINE, + 2: STATE_BUSY, + 3: STATE_AWAY, + 4: STATE_SNOOZE, + 5: STATE_TRADE, + 6: STATE_PLAY, + }.get(self._profile.status, 'Offline') + self._name = self._profile.persona + self._avatar = self._profile.avatar_medium + except self._steamod.api.HTTPTimeoutError as error: + _LOGGER.warning(error) + self._game = 'Unknown' + self._state = 'Unknown' + self._name = 'Unknown' + self._avatar = None @property def device_state_attributes(self): @@ -83,7 +103,7 @@ class SteamSensor(Entity): @property def entity_picture(self): """Avatar of the account.""" - return self._profile.avatar_medium + return self._avatar @property def icon(self):