Zug Verspätungscheck

Automatische Abfrage von Bahn Informationen

Kommentieren May 18 2023 .txt, .json, .md

Apps zur Zugabfrage gibt es schon viele. Der DB Navigator ist meiner Meinung nach der Beste. Es gibt sogar schon eine neue Version/Strategie als Webseite und App

An die Informationen ohne die App/Webseite zu kommen ist leider gar nicht so einfach. Klar gibt es das Open Data Portal der DB, man muss sich aber registrieren.

Für einen Gedankenblitz und mal schnell was zusammen schrauben irgendwie zu viel.

Die Idee war die folgende: Man bekommt individuelle Nachrichten sobald auf einer Verbindung Probleme auftreten, ohne extra App.

Durch Bahn-API Realtime Delayinfos bin ich auf folgende URL https://reiseauskunft.bahn.de/bin/bhftafel.exe/dn?L=vs_java&start=yes&boardType=arr&time=24:00&input=809602 gestoßen. Offizielle Dokumentation dazu, Fehlanzeige.

Fündig wurde ich im Bahnreise-Wiki

Bahnhofstafel (Ankunft/Abfahrt):
http://reiseauskunft.bahn.de/bin/bhftafel.exe/dn?&rt=1&input=Berlin+Hbf&time=10:00&date=01.04.13&productsFilter=1111100000&start=1&boardType=dep&
Verbindungsauskunft:
http://reiseauskunft.bahn.de/bin/query.exe/dn?S=Stuttgart+Hbf&Z=Bremen+Hbf&time=14:00&date=01.04.14&start=1&

Sprachversion:
d: deutsch
e: englisch
f: französisch
h: spanisch
i: italienisch
n: niederländisch
m: dänisch
p: polnisch

Darstellung:
n: standard
ox: Handyversion
l: nur Text (bei dieser Darstellungsart wird der ProductsFilter-Parameter ignoriert)
s: unbekannt, erfordert Anmeldung

Input (Ort/Bahnhof) bzw. S (Startbahnhof):
Das Feld input bzw.S gibt den (Start-)Ort/Bahnhof an. Anstelle des Namens kann auch die Bahnhofsnummer (siehe oben) eingesetzt werden. Leerzeichen in den Bahnhofs- oder Haltestellennamen müssen durch ein + ersetzt werden.

Z (Zielbahnhof):
Das Feld Z gibt den Zielort/Bahnhof an. Anstelle des Namens kann auch die Bahnhofsnummer eingesetzt werden.

Time (Uhrzeit):
Das Feld time gibt die gewünschte Uhrzeit an. Wird keine Uhrzeit angegeben, erfolgt automatisch eine Abfrage für die aktuelle Uhrzeit.

Date (Datum):
Das Feld date gibt das gewünschte Datum an. Wird kein Datum angegeben, erfolgt automatisch eine Abfrage für den aktuellen Tag.

ProductsFilter (Verkehrsmittelwahl):
Über diese Ziffernfolge werden die anzuzeigenden Verkehrsmittel vorgegeben. Die Ziffer 0 bedeutet, dass das Verkehrsmittel nicht ausgegeben werden soll, bei der Ziffer 1 wird das Verkehrsmittel ausgegeben.
1000000000 (1. Ziffer): ICE und vergleichbare Züge
0100000000 (2. Ziffer): IC und EC
0010000000 (3. Ziffer): Interregio- und Schnellzüge
0001000000 (4. Ziffer): Nahverkehrszüge
0000100000 (5. Ziffer): S-Bahn
0000010000 (6. Ziffer): Busse
0000001000 (7. Ziffer): Schiffe
0000000100 (8. Ziffer): U-Bahnen
0000000010 (9. Ziffer): Straßenbahnen
0000000001 (10. Ziffer): Anruf-Sammeltaxi
Beispiel: 1100100000 bedeutet nur ICE, IC/EC und S-Bahn.

Start (Direktstart):
Mit dem Parameter start=1 wird die Abfrage direkt ausgeführt. Wird der Parameter weggelassen, erscheint nur die vorbelegte Suchmaske, bei der die Suche noch mit dem Such-Button gestartet werden muss.

BordType (Ankunft oder Abfahrt):
dep: Abfahrtstafel
arr: Ankunftstafel

Zusatzparameter
An den Link können folgende Parameter angehängt werden:

&maxJourneys=999& Üblicherweise werden nur die Züge in den nächsten 60 Minuten angezeigt. Über die Angabe „maxJourneys“ kann die Anzahl der angezeigten Züge erhöht werden, hier auf 999.
&dirInput=Erfurt+Hbf& Üblicherweise werden Züge in alle Richtungen angezeigt. Über die Angabe „dirInput“ kann die Anzeige auf diejenigen Züge beschränkt werden, die an einem bestimmten Bahnhof halten, hier Erfurt Hbf.
&dateBegin=01.04.14&dateEnd=14.12.14& Über die Parameter dateBegin und dateEnd können die Züge in einem größeren Zeitraum abgefragt werden, beispielsweise während der ganzen Fahrplanperiode.
&delayedJourney=on Zeigt nur verspätete oder ausfallende Züge an.
&REQ0HafasNoOfChanges=N Begrenzt Verbindungen auf N-mal umsteigen. Auf diese Weise lässt sich vielfaches Umsteigen unterdrücken bzw. einschränken, während die Standard-Oberfläche nur die Einschränkung auf Direktverbindungen bietet.
&REQ0HafasOptimize1=1:2 Mit diesem Parameter erscheinen auch preiswertere Verbindungen, aber wiederum andere, als bei "Schnelle Verbindungen bevorzugen". Die Zuordnung der Ziffern ist unbekannt.

Beispiele:

http://reiseauskunft.bahn.de/bin/query.exe/dn?S=Köln+Hbf&Z=München+Hbf&start=1&
Zeigt stets die nächsten Verbindungen von Köln nach München an.
http://reiseauskunft.bahn.de/bin/bhftafel.exe/dn?&rt=1&input=Hannover&time=&date=&productsFilter=1000000000&start=1&boardType=dep&
Zeigt alle in Hannover abfahrenden ICE-Züge an.

Anstelle des Bahnhofnamenes kann man die EVA Nummer setzen. An diese kommt man mit Hilfe der IBNR-Onlinesuche

Als Ergebnis kam ein Bash script raus in Verbindung mit Telegram Bot. Gefüttert mit Parametern werdem Information übermittelt ob Probleme mit der Bahn Verbindung bestehen.

Beispielaufruf:

Usage: db-delay.sh STATIONID BOARDTYPE[dep|arr] DELAY[true|false] [DESITNATIONID]"

db-delay-notify.sh 8000261 dep true 8000262

Hierbei ist 8000261 München HBF und 8000262 München Ost. Es ist zu beachten, dass bei der Angabe eines Zielbahnhofs nur Verbindungen angezeigt werden die direkt dort hinfahren. Es werden leider keine Umstiege beachtet. Man muss daher die Strecke und Abfragen aufteilen wenn Umstiege vorhanden sind.

Weitere Infos: