mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 18:27:09 +00:00
Add last_online and level attribute to steam online (#30321)
* Steam Online: Add last_online and Level attributes * Steam Online: Add last_online and Level attributes * Fixes from comments on initial pull request * Push attributes only if they are not None
This commit is contained in:
parent
d048233776
commit
9e885112ec
@ -1,6 +1,7 @@
|
|||||||
"""Sensor for Steam account status."""
|
"""Sensor for Steam account status."""
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
import logging
|
import logging
|
||||||
|
from time import mktime
|
||||||
|
|
||||||
import steam
|
import steam
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
@ -11,6 +12,7 @@ from homeassistant.core import callback
|
|||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
from homeassistant.helpers.event import async_track_time_interval
|
from homeassistant.helpers.event import async_track_time_interval
|
||||||
|
from homeassistant.util.dt import utc_from_timestamp
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -70,7 +72,12 @@ class SteamSensor(Entity):
|
|||||||
self._steamod = steamod
|
self._steamod = steamod
|
||||||
self._account = account
|
self._account = account
|
||||||
self._profile = None
|
self._profile = None
|
||||||
self._game = self._state = self._name = self._avatar = None
|
self._game = None
|
||||||
|
self._state = None
|
||||||
|
self._name = None
|
||||||
|
self._avatar = None
|
||||||
|
self._last_online = None
|
||||||
|
self._level = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
@ -107,11 +114,19 @@ class SteamSensor(Entity):
|
|||||||
}.get(self._profile.status, STATE_OFFLINE)
|
}.get(self._profile.status, STATE_OFFLINE)
|
||||||
self._name = self._profile.persona
|
self._name = self._profile.persona
|
||||||
self._avatar = self._profile.avatar_medium
|
self._avatar = self._profile.avatar_medium
|
||||||
|
self._last_online = self._get_last_online()
|
||||||
|
self._level = self._profile.level
|
||||||
except self._steamod.api.HTTPTimeoutError as error:
|
except self._steamod.api.HTTPTimeoutError as error:
|
||||||
_LOGGER.warning(error)
|
_LOGGER.warning(error)
|
||||||
self._game = self._state = self._name = self._avatar = None
|
self._game = None
|
||||||
|
self._state = None
|
||||||
|
self._name = None
|
||||||
|
self._avatar = None
|
||||||
|
self._last_online = None
|
||||||
|
self._level = None
|
||||||
|
|
||||||
def _get_current_game(self):
|
def _get_current_game(self):
|
||||||
|
"""Gather current game name from APP ID."""
|
||||||
game_id = self._profile.current_game[0]
|
game_id = self._profile.current_game[0]
|
||||||
game_extra_info = self._profile.current_game[2]
|
game_extra_info = self._profile.current_game[2]
|
||||||
|
|
||||||
@ -140,10 +155,26 @@ class SteamSensor(Entity):
|
|||||||
_LOGGER.error("Unable to find name of app with ID=%s", game_id)
|
_LOGGER.error("Unable to find name of app with ID=%s", game_id)
|
||||||
return repr(game_id)
|
return repr(game_id)
|
||||||
|
|
||||||
|
def _get_last_online(self):
|
||||||
|
"""Convert last_online from the steam module into timestamp UTC."""
|
||||||
|
last_online = utc_from_timestamp(mktime(self._profile.last_online))
|
||||||
|
|
||||||
|
if last_online:
|
||||||
|
return last_online
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def device_state_attributes(self):
|
def device_state_attributes(self):
|
||||||
"""Return the state attributes."""
|
"""Return the state attributes."""
|
||||||
return {"game": self._game} if self._game else None
|
attr = {}
|
||||||
|
if self._game is not None:
|
||||||
|
attr["game"] = self._game
|
||||||
|
if self._last_online is not None:
|
||||||
|
attr["last_online"] = self._last_online
|
||||||
|
if self._level is not None:
|
||||||
|
attr["level"] = self._level
|
||||||
|
return attr
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def entity_picture(self):
|
def entity_picture(self):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user