Skip to content
Snippets Groups Projects
Commit 97f81ad7 authored by Fabian Affolter's avatar Fabian Affolter
Browse files

Add more details

parent 3406b41b
No related branches found
No related tags found
No related merge requests found
......@@ -18,6 +18,12 @@ from homeassistant.helpers.entity import Entity
_LOGGER = logging.getLogger(__name__)
_RESOURCE = 'http://transport.opendata.ch/v1/'
ATTR_DEPARTURE_TIME1 = 'Next departure'
ATTR_DEPARTURE_TIME2 = 'Next on departure'
ATTR_START = 'Start'
ATTR_TARGET = 'Destination'
ATTR_REMAINING_TIME = 'Remaining time'
# Return cached results if last scan was less then this time ago
MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60)
......@@ -52,7 +58,9 @@ class SwissPublicTransportSensor(Entity):
def __init__(self, data, journey):
self.data = data
self._name = '{}-{}'.format(journey[2], journey[3])
self._name = 'Next Departure'
self._from = journey[2]
self._to = journey[3]
self.update()
@property
......@@ -65,12 +73,26 @@ class SwissPublicTransportSensor(Entity):
""" Returns the state of the device. """
return self._state
@property
def state_attributes(self):
""" Returns the state attributes. """
if self._times is not None:
return {
ATTR_DEPARTURE_TIME1: self._times[0],
ATTR_DEPARTURE_TIME2: self._times[1],
ATTR_START: self._from,
ATTR_TARGET: self._to,
ATTR_REMAINING_TIME: '{}'.format(
':'.join(str(self._times[2]).split(':')[:2]))
}
# pylint: disable=too-many-branches
def update(self):
""" Gets the latest data from opendata.ch and updates the states. """
times = self.data.update()
self.data.update()
self._times = self.data.times
try:
self._state = ', '.join(times)
self._state = self._times[0]
except TypeError:
pass
......@@ -82,6 +104,7 @@ class PublicTransportData(object):
def __init__(self, journey):
self.start = journey[0]
self.destination = journey[1]
self.times = {}
@Throttle(MIN_TIME_BETWEEN_UPDATES)
def update(self):
......@@ -94,16 +117,21 @@ class PublicTransportData(object):
'to=' + self.destination + '&' +
'fields[]=connections/from/departureTimestamp/&' +
'fields[]=connections/',
timeout=10)
timeout=30)
connections = response.json()['connections'][:2]
try:
return [
self.times = [
dt_util.datetime_to_time_str(
dt_util.as_local(dt_util.utc_from_timestamp(
item['from']['departureTimestamp']))
)
for item in connections
]
self.times.append(
dt_util.as_local(
dt_util.utc_from_timestamp(
connections[0]['from']['departureTimestamp'])) -
dt_util.as_local(dt_util.utcnow()))
except KeyError:
return ['n/a']
self.times = ['n/a']
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment