Sensor providing Public Transport information from OVapi in Home Assistant
This is a sensor for Home Assistant and it will retrieve departure information of a particular stop. The sensor returns the first upcomming departure.
- Create the following folder structure: /config/custom_components/ovapi and place these 3 files there.
- restart Home Assistant to make the platform 'ovapi' available for configuration
- Add the configuration to configuration.yaml, see the parameter descriptions below and refer to the examples.
- restart Home Assistant to create the entities as per your configuration
- entities are now active and ready to use and display
1. Using a stop_code: (Please refer to the instructions below)
- platform: ovapi (required) - The name of the sensor component.
- name: line_6 - The name of the sensor in HASS
- stop_code (int, e.g. 9505) - A code created by the transport to identify the stop.
- route_code (int, e.g. 32009505) - A stop always has two routes, a route forth and back. This code configures the right route that you want of a public line destination.
2. Using a Timing_Point_Code: (Please refer to the instructions below)
- platform: ovapi (required) - The name of the sensor component.
- name: line_6 - The name of the sensor in HASS
- timing_point_code: (int, e.g. 10155690) - A code created by the transport to identify the stop.
Either one of these are required for the sensor to function!
Optional parameters:
- show_future_departures: (int, max value is 50) - The sensor always creates one sensor in Hass, this property can be configured with a value of 2-5. If this is configured, the component creates the configured number of sensors in HASS. These sensors contain future departments together with theire delay if applicable.
- line_filter (int, comma seperated) - You might bump into the fact that there are multiple lines that use the same stop, with this property you can filter all passes with the line number that you want.
To find the stop_code (stopareacode) refer to the JSON response of: v0.ovapi.nl/stopareacode
I've used the building JSON parser from Firefox, the search input is on the top right.
- Search in the response with a keyword of the stop or the line you want, eg: kastelenring
- The result:
9505: <-- is the stop
TimingPointName "Kastelenring"
- Browse the following Url: http://v0.ovapi.nl/stopareacode/9505 (replace 9505 with the code you've found!)
- Minimize the child keys beneath your stop_code, two keys should be returned (these are the route fourth and back).
- Open one of the keys and browse to stop_code/route_code/Passes
- This key holds all the stops currently available (this updates frequently)
- Open one of the stops
- Look for the key 'DestinationName50', this should hold the destination that you want. If this is the wrong way, then you should close the JSON output and open the other route code key.
- Note the route_code and the stop_code and place these values in the sensor configuration.
- Optionally use the line filter argument to filter only the line(s) that you want to see.
To find the timing_point_code (TimingPointCode) refer to the JSON response of: v0.ovapi.nl/line
I've used the building JSON parser from Firefox, the search input is on the top right.
- Search in the response with a keyword of the destination of the line, eg: Leyenburg
- The result of this should be a list of line identifiers, expand them and look for the one that has the correct value in
DestinationName50
. Copy the line identifier, e.g. HTM_6_2. - Next, open the url: http://v0.ovapi.nl/line/HTM_6_2, this page lists all stops of the line. Search for your stop name, e.g. kastelenring.
- Find the TimingPointCode and use this as value in the sensor configuration.
- Optionally use the line filter argument to filter only the line(s) that you want to see.
Create 1 sensor to show the next upcomming departure of a particular line
sensor:
- platform: ovapi
name: Tram_6
stop_code: 9595
route_code: 32009505
Create a base sensor and 4 future sensors, this way you can display the time of 5 departures in total
sensor:
- platform: ovapi
name: Tram_6
stop_code: 9595
route_code: 32009505
show_future_departures: 4
Create a sensor using a timing_point_code and no extra's
sensor:
- platform: ovapi
name: Tram_6
timing_point_code: 31000226
Create 5 sensors using a timing_point_code and a line_filter, because there are multiple lines on that particular stop.
sensor:
- platform: ovapi
name: Tram_6
timing_point_code: 31000226
line_filter: 2, 6
show_future_departures: 4
type: picture-elements
elements:
- type: state-label
entity: sensor.tram_23
attribute: name
icon: mdi:tram
style:
top: 25%
left: 10%
'--paper-item-icon-color': white
- type: state-icon
entity: sensor.tram_23_future_4_templated
icon: mdi:tram
style:
top: 65%
left: 10%
'--paper-item-icon-color': white
- type: state-label
entity: sensor.tram_23_templated
style:
top: 85%
left: 10%
- type: state-label
entity: sensor.tram_23_future_1_templated
style:
top: 85%
left: 25%
- type: state-label
entity: sensor.tram_23_future_2_templated
style:
top: 85%
left: 40%
- type: state-label
entity: sensor.tram_23_future_3_templated
style:
top: 85%
left: 55%
- type: state-label
entity: sensor.tram_23_future_4_templated
style:
top: 85%
left: 70%
- Petro - For extensive help at coding the sensor templates.
- Robban - A lot of basic help with the Python code.
- Danito - I started with his script, learned a lot of it)
- pippyn - Huge contributions and a lot of bugfixes, thanks mate!
- rolfberkenbosch - For a start of the timing_point_code documentation.
- IIIdefconIII - Some minor contributions to add the custom updater and updating the readme.
custom_updater:
track:
- components
component_urls:
- https://raw.githubusercontent.com/Paul-dH/Home-Assisant-Sensor-OvApi/master/custom_components.json