This page is part of archived documentation for openHAB 4.1. Go to the current stable version
# EnturNo Binding
This binding gets Norwegian public transport real-time (estimated) data from the Entur.org API (opens new window).
# Supported Things
As for now, binding supports only one thing linestop
.
It can change in the future as entur.org (opens new window) exposes API for access of different type public transport data, for example: journey planing, stop information etc.
# Entur Timetable
Entur timetable provides information about departures for chosen line/service of public transport in Norway and chosen stop place. It contains informationabout stop place (id, name, transport mode) and real-time departures from that place. It is worth noting that binding is thought to be primarily used for busdepartures (can work for other supported by entur.org (opens new window) transport types). Two Direction channel groups are consequence of that assumption. That will say that usually for stop place of a given name there are two bus stops for same line going in opposite directions. Each Direction channel group contains information about direction,line code, 5 coming departures, and whether given departure time is real-time (estimated) or not.
# Discovery
Since thing needs to be explicitly configured for stop id and line, no auto discovery is available.
# Thing Configuration
# Entur Timetable
Parameter | Description |
---|---|
stopPlaceId (Stop code) | Unique id of stop place that can be get from en-tur.no (opens new window) after selecting bus stop. Information will be displayed in link. Example: https://en-tur.no/nearby-stop-place-detail?id=NSR:StopPlace:30848 (opens new window) stopPlaceId is NSR:StopPlace:30848 in this case |
lineCode (Line code) | Code (name or numeber) of line used by public transport provider. Examples: 3, 3E, 4, 21 |
# Channels
# Stop Place
Channel Group ID | Channel ID | Item Type | Description |
---|---|---|---|
stopPlace | id | String | Id of the stop place. |
stopPlace | name | String | Name of the stop place. |
stopPlace | transportMode | String | Type of transport served from bus stop bus/train/plane etc. |
# Line Direction
Channel Group ID | Channel ID | Item Type | Description |
---|---|---|---|
direction | lineCode | String | Code (usually number) of the public transport line. |
direction | frontDisplayText | String | Text of front display of the public transport line (usually direction) |
direction | departure01, departure02, departure03, departure04, departure05 | DateTime | Times of next five departures. |
direction | estimatedFlag01, estimatedFlag02, estimatedFlag03, estimatedFlag04, estimatedFlag05 | String | Values (true/false) saying that corresponding departure is real-time (estimated - true) or departure from timetable. Values (true/false) can be parsed to boolean. |
# Full Example
# Things
demo.things
Thing enturno:linestop:7e693fff "Småstrandgaten line nr 2" [stopPlaceId="NSR:StopPlace:30848", lineCode="2"]
# Items
demo.items
// Stop place
String StopId "StopId" {channel="enturno:linestop:7e693fff:stopPlace#id"}
String StopPlaceName "Stop Place [%s]" {channel="enturno:linestop:7e693fff:stopPlace#name"}
String LineCode "Line [%s]" {channel="enturno:linestop:7e693fff:Direction01#lineCode"}
String TransportMode "TransportMode [%s]" {channel="enturno:linestop:7e693fff:stopPlace#transportMode"}
// Direction01
String Direction01_FrontDisplay "Direction01 front display [%s]" {channel="enturno:linestop:7e693fff:Direction01#frontDisplayText"}
DateTime RealTime_Direction01_Time1 "Departure01 time" {channel="enturno:linestop:7e693fff:Direction01#departure01"}
DateTime RealTime_Direction01_Time2 "Departure02 time" {channel="enturno:linestop:7e693fff:Direction01#departure02"}
DateTime RealTime_Direction01_Time3 "Departure03 time" {channel="enturno:linestop:7e693fff:Direction01#departure03"}
DateTime RealTime_Direction01_Time4 "Departure04 time" {channel="enturno:linestop:7e693fff:Direction01#departure04"}
DateTime RealTime_Direction01_Time5 "Departure05 time" {channel="enturno:linestop:7e693fff:Direction01#departure05"}
String RealTime_Direction01_IsReal1 "Departure01 is real-time" {channel="enturno:linestop:7e693fff:Direction01#estimatedFlag01"}
String RealTime_Direction01_IsReal2 "Departure02 is real-time" {channel="enturno:linestop:7e693fff:Direction01#estimatedFlag02"}
String RealTime_Direction01_IsReal3 "Departure03 is real-time" {channel="enturno:linestop:7e693fff:Direction01#estimatedFlag03"}
String RealTime_Direction01_IsReal4 "Departure04 is real-time" {channel="enturno:linestop:7e693fff:Direction01#estimatedFlag04"}
String RealTime_Direction01_IsReal5 "Departure05 is real-time" {channel="enturno:linestop:7e693fff:Direction01#estimatedFlag05"}
//Direction02
String Direction02_FrontDisplay "Direction02 front display [%s]" {channel="enturno:linestop:7e693fff:Direction02#frontDisplayText"}
DateTime RealTime_Direction02_Time1 "Departure01 time" {channel="enturno:linestop:7e693fff:Direction02#departure01"}
DateTime RealTime_Direction02_Time2 "Departure02 time" {channel="enturno:linestop:7e693fff:Direction02#departure02"}
DateTime RealTime_Direction02_Time3 "Departure03 time" {channel="enturno:linestop:7e693fff:Direction02#departure03"}
DateTime RealTime_Direction02_Time4 "Departure04 time" {channel="enturno:linestop:7e693fff:Direction02#departure04"}
DateTime RealTime_Direction02_Time5 "Departure05 time" {channel="enturno:linestop:7e693fff:Direction02#departure05"}
String RealTime_Direction02_IsReal1 "Departure01 is real-time" {channel="enturno:linestop:7e693fff:Direction02#estimatedFlag01"}
String RealTime_Direction02_IsReal2 "Departure02 is real-time" {channel="enturno:linestop:7e693fff:Direction02#estimatedFlag02"}
String RealTime_Direction02_IsReal3 "Departure03 is real-time" {channel="enturno:linestop:7e693fff:Direction02#estimatedFlag03"}
String RealTime_Direction02_IsReal4 "Departure04 is real-time" {channel="enturno:linestop:7e693fff:Direction02#estimatedFlag04"}
String RealTime_Direction02_IsReal5 "Departure05 is real-time" {channel="enturno:linestop:7e693fff:Direction02#estimatedFlag05"}