EFA Departure Monitor on the command line
Mon 05 March 2018I just hacked together a small shell script that gets departures from my local public transportation service. It will list upcoming departures at a stop. You can find the script here.
Getting Started
You can either use the stop name:
$ ./efa-dm.sh "Dortmund Hbf"
Or you can use the stop ID:
$ ./efa-dm.sh 20000131
By default, it will simply print upcoming departures as a tab-separated list.
$ ./efa-dm.sh -n 3 "Essen Rüttenscheider Stern"
1       2018    3       5       16      20      2018    3       5       16      21      101     Essen Helenenstr.
2       2018    3       5       16      21      2018    3       5       16      22      108     Essen Altenessen Bf Schleife
2       2018    3       5       16      22                                              U11     Essen Messe W.-Süd/Gruga
| Column | Meaning | 
|---|---|
| 1 | minutes left until departure | 
| 2 | scheduled departure (year) | 
| 3 | scheduled departure (month) | 
| 4 | scheduled departure (day) | 
| 5 | scheduled departure (hour) | 
| 6 | scheduled departure (minute) | 
| 6 | predicted actual departure (year) | 
| 8 | predicted actual departure (month) | 
| 9 | predicted actual departure (day) | 
| 10 | predicted actual departure (hour) | 
| 11 | predicted actual departure (minute) | 
| 12 | line name | 
| 13 | direction | 
You can also use the -p flag to get the pretty-printed version:
$ ./efa-dm.sh -p -n 3 "Essen Rüttenscheider Stern"
16:20(+1) 101 Essen Helenenstr. in 1 min
16:21 108 Essen Altenessen Bf Schleife in 1 min
16:22 U11 Essen Messe W.-Süd/Gruga in 2 min
Usage
Here's a list of all command line options:
$ ./efa-dm.sh -h
Usage: ./efa-dm.sh [-p] [-d] [-a <API_ENDPOINT>] [-n <NUM_DEPARTS>] [-t <TIME_OFFSET>] <STOP_NAME>
Options:
  -h                 Show this help
  -p                 Petty-printed output (instead of tab-separated values)
  -d                 Debug mode (output server reply and exit)
  -a <API_ENDPOINT>  Use API endpoint at this URL
  -n <NUM_DEPARTS>   Limit the number of departures (default: 8)
  -t <TIME_OFFSET>   Skip departures in next X minutes (default: 0)
Services that use EFA
Here's a list of other public transportation services that also use the Elektronische Fahrplanauskunft (EFA) system and thus can also by queried by the script as well:
- 
Verkehrsverbund Rhein-Ruhr (VRR), Germany http://efa.vrr.de/standard/XSLT_DM_REQUEST
- 
Verkehrs- und Tarifverbund Stuttgart (VVS), Germany http://www2.vvs.de/vvs/XSLT_DM_REQUEST
- 
Münchner Verkehrs- und Tarifverbund (MVV), Germany http://efa.mvv-muenchen.de/mobile/XSLT_DM_REQUEST
- 
Nahverkehrsgesellschaft Baden-Württemberg (NVBW), Germany http://www.efa-bw.de/nvbw/XSLT_DM_REQUEST
- 
Regional Transportation Authority (RTA) Chicago, USA http://tripplanner.rtachicago.com/ccg3/XSLT_DM_REQUEST
Departure Monitor in Polybar
You can easily use this script as a polybar module:
[module/efa1]
type = custom/script
exec = /path/to/efa-dm.sh -p -t 4 -n 1 "Essen Hbf"
format = <label>
; In case this is a bus stop:
;  format =  <label>
; For a subway station:
;  format =  <label>
interval = 60
 Jan Holthuis
					Jan Holthuis