Stadtwerke Münster Echtzeitauskunft API

Stadtwerke Münster Echtzeitauskunft API

Da ich als Student ein Semsterticket besitze und sich vor meinem Haus eine Haltestelle befindet nutze ich zur Fortbewegung häufig den Bus. In Münster gibt es an vielen Haltestellen Infotafeln an denen ein LCD in Echtzeit die erwartete Ankunftszeit der Busse anzeigt. Um nicht all zu viel Zeit beim warten zu verschwenden wollte ich so eine Anzeige auch für meine WG haben.

Web Version

Gestern habe ich zu aller erst geschaut wo ich die Daten der Tafeln herbekomme. Da die Stadtwerke keine öffentliche API anbieten und auch Google bezüglich dessen nicht sehr brauchbar war werde ich in diesem Artikel erzählen was ich über die API der Stadtwerke gelernt habe. Eventuell kann ich mit diesem Artikel auch jemandem helfen der gerade selber auf der Suche ist.

 

Es stellt sich so dar: Neben den physisch existenten Infotafeln gibt es mehrere virtuelle Versionen: Ich habe mir die Android Version der Echtzeitauskunft angesehen sowie die Web Version.

Web:

Leider nicht besonders fruchtbar. Im Hintergrund läuft ein JavaScript, welches die Daten lädt. Dazu ruft es diese URL auf

http://www.stadtwerke-muenster.de/fis/ajaxrequest.php?mastnr=4409101&call=m&_=1499285776769

und übergibt die ID der Bushaltestelle mit mastnr als URL Parameter.

Als Response gibt es das formatierte HTML welches einfach im Quelltext ausgetauscht wird.

 

Android:

Das war schon etwas ergiebiger. Ich habe die App installiert und im Hintergrund tPacketCapture laufen lassen um den Netzwerkverkehr beim laden der Daten in Wireshark analysieren zu können.

 

Hier sendet die App mittels HTTP Post Request als HTML Form kodierte Parameter an die URL

http://app.vrr.de/msapp/XML_DM_REQUEST

Die Parameter sehen dabei so aus:

  • coordOutputFormat=WGS84[DD.DDDDD]
  • name_dm=7.61202:51.94333:WGS84[DD.DDDDD]
  • excludedMeans=checkbox
  • itOptionsActive=1
  • coordListOutputFormat=STRING
  • mergeDep=1
  • useAllStops=1
  • stateless=1
  • canChangeMOT=0
  • changeSpeed=normal
  • includeCompleteStopSeq=1
  • imparedOptionsActive=1
  • useProxFootSearch=1
  • sessionID=0
  • mode=direct
  • trITMOTvalue100=15
  • lineRestriction=400
  • coordOutputFormatTail=5
  • outputFormat=JSON
  • type_dm=coord
  • locationServerActive=1
  • depType=stopEvents
  • ptOptionsActive=1
  • maxTimeLoop=2
  • useRealtime=1

Die Response gibt es als JSON das Format wird dabei durch den outputFormat Parameter bestimmt. Über 300kb ist das JSON groß und enthält die Daten aller Haltestellen in Münster, sortiert nach Entfernung von mir. Den Stadtwerken habe ich über den name_dm meinen Standort mitgeteilt

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.