Fix state and attribute fetching in vasttrafik (#19856)
* Fixing state and attribute fetching * Fixing state and attribute fetching * Setting None state * Need to brreak looppull/19868/head
parent
fb9aad8791
commit
c7a32e59b7
|
@ -84,6 +84,8 @@ class VasttrafikDepartureSensor(Entity):
|
||||||
self._lines = lines if lines else None
|
self._lines = lines if lines else None
|
||||||
self._delay = timedelta(minutes=delay)
|
self._delay = timedelta(minutes=delay)
|
||||||
self._departureboard = None
|
self._departureboard = None
|
||||||
|
self._state = None
|
||||||
|
self._attributes = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
|
@ -98,42 +100,12 @@ class VasttrafikDepartureSensor(Entity):
|
||||||
@property
|
@property
|
||||||
def device_state_attributes(self):
|
def device_state_attributes(self):
|
||||||
"""Return the state attributes."""
|
"""Return the state attributes."""
|
||||||
if not self._departureboard:
|
return self._attributes
|
||||||
return
|
|
||||||
|
|
||||||
for departure in self._departureboard:
|
|
||||||
line = departure.get('sname')
|
|
||||||
if not self._lines or line in self._lines:
|
|
||||||
params = {
|
|
||||||
ATTR_ACCESSIBILITY: departure.get('accessibility'),
|
|
||||||
ATTR_ATTRIBUTION: CONF_ATTRIBUTION,
|
|
||||||
ATTR_DIRECTION: departure.get('direction'),
|
|
||||||
ATTR_LINE: departure.get('sname'),
|
|
||||||
ATTR_TRACK: departure.get('track'),
|
|
||||||
}
|
|
||||||
return {k: v for k, v in params.items() if v}
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self):
|
||||||
"""Return the next departure time."""
|
"""Return the next departure time."""
|
||||||
if not self._departureboard:
|
return self._state
|
||||||
_LOGGER.debug(
|
|
||||||
"No departures from %s heading %s",
|
|
||||||
self._departure['name'],
|
|
||||||
self._heading['name'] if self._heading else 'ANY')
|
|
||||||
return
|
|
||||||
for departure in self._departureboard:
|
|
||||||
line = departure.get('sname')
|
|
||||||
if not self._lines or line in self._lines:
|
|
||||||
if 'rtTime' in self._departureboard[0]:
|
|
||||||
return self._departureboard[0]['rtTime']
|
|
||||||
return self._departureboard[0]['time']
|
|
||||||
# No departures of given lines found
|
|
||||||
_LOGGER.debug(
|
|
||||||
"No departures from %s heading %s on line(s) %s",
|
|
||||||
self._departure['name'],
|
|
||||||
self._heading['name'] if self._heading else 'ANY',
|
|
||||||
', '.join((str(line) for line in self._lines)))
|
|
||||||
|
|
||||||
@Throttle(MIN_TIME_BETWEEN_UPDATES)
|
@Throttle(MIN_TIME_BETWEEN_UPDATES)
|
||||||
def update(self):
|
def update(self):
|
||||||
|
@ -146,3 +118,31 @@ class VasttrafikDepartureSensor(Entity):
|
||||||
except self._vasttrafik.Error:
|
except self._vasttrafik.Error:
|
||||||
_LOGGER.debug("Unable to read departure board, updating token")
|
_LOGGER.debug("Unable to read departure board, updating token")
|
||||||
self._planner.update_token()
|
self._planner.update_token()
|
||||||
|
|
||||||
|
if not self._departureboard:
|
||||||
|
_LOGGER.debug(
|
||||||
|
"No departures from %s heading %s",
|
||||||
|
self._departure['name'],
|
||||||
|
self._heading['name'] if self._heading else 'ANY')
|
||||||
|
self._state = None
|
||||||
|
self._attributes = {}
|
||||||
|
else:
|
||||||
|
for departure in self._departureboard:
|
||||||
|
line = departure.get('sname')
|
||||||
|
if not self._lines or line in self._lines:
|
||||||
|
if 'rtTime' in self._departureboard[0]:
|
||||||
|
self._state = self._departureboard[0]['rtTime']
|
||||||
|
else:
|
||||||
|
self._state = self._departureboard[0]['time']
|
||||||
|
|
||||||
|
params = {
|
||||||
|
ATTR_ACCESSIBILITY: departure.get('accessibility'),
|
||||||
|
ATTR_ATTRIBUTION: CONF_ATTRIBUTION,
|
||||||
|
ATTR_DIRECTION: departure.get('direction'),
|
||||||
|
ATTR_LINE: departure.get('sname'),
|
||||||
|
ATTR_TRACK: departure.get('track'),
|
||||||
|
}
|
||||||
|
|
||||||
|
self._attributes = {
|
||||||
|
k: v for k, v in params.items() if v}
|
||||||
|
break
|
||||||
|
|
Loading…
Reference in New Issue