Departure: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Link zu FTUI Departure Widget geändert)
(Ersetzung von Forum-Links mit Vorlage Link2Forum)
Zeile 50: Zeile 50:


== Links ==
== Links ==
* [https://forum.fhem.de/index.php/topic,48255.0.html Forum: Neues FTUI Widget - Departure]
* {{Link2Forum|Topic=48255|LinkText=Forum: Neues FTUI Widget - Departure}}
* [https://forum.fhem.de/index.php?topic=60046.0 Forum: Modul 98_Departure: Bereitstellung von Abfahrtszeiten an einem Bahnhof]
* [https://forum.fhem.de/index.php?topic=60046.0 Forum: Modul 98_Departure: Bereitstellung von Abfahrtszeiten an einem Bahnhof]
* [[FTUI Widget Departure|Wiki: FHEM Tablet UI - Departure Widget]]
* [[FTUI Widget Departure|Wiki: FHEM Tablet UI - Departure Widget]]

Version vom 19. März 2017, 20:24 Uhr

Departure ist ein Modul zur Anzeige der Abfahrtszeiten von Bahn, Bus, Zug und Fähre des öffentlichen Personennahverkehrs (ÖPNV). Diese Seite basiert auf dem Beitrag im Forum https://forum.fhem.de/index.php?topic=48255.0 (von sbierman). Mittlerweile gibt es hierzu ein noch inoffizielles Modul https://forum.fhem.de/index.php?topic=60046.0 (von uniqueck). Zusätzlich gibt es ein Widget für die FHEM Tablet UI (FTUI) https://forum.fhem.de/index.php?topic=48255.0 (von setstate). Diese Seite sollte angepasst/überarbeitet werden, wenn das Modul 98_departure offiziell eingecheckt ist.

Vorbereitung

Um die Abfahrtzeiten zu ermitteln wird der REST-Wrapper von sbiermann genutzt, der auf dem Dienst für die Android App "Öffi" basiert. Für die Spätere Abfrage wird der Provider und die ID der Haltestelle benötigt. Beides kann wie folgt ermittelt werden.

1. Ermitteln welche Provider gibt es und welcher ist für mich zuständig.

http://transportrest-sbiermann.rhcloud.com/provider

Dieses liefert als Antwort im JSON Format:

[{"name":"Sncb","aClass":"SncbProvider"},{"name":"Vbn","aClass":"VbnProvider"},{"name":"Wien","aClass":"WienProvider"},{"name":"Linz","aClass":"LinzProvider"},{"name":"Vrr","aClass":"VrrProvider"},{"name":"Oebb","aClass":"OebbProvider"},{"name":"Gvh","aClass":"GvhProvider"},{"name":"Ns","aClass":"NsProvider"},{"name":"Vao","aClass":"VaoProvider"},{"name":"Tfi","aClass":"TfiProvider"},{"name":"Vgn","aClass":"VgnProvider"},{"name":"Mvg","aClass":"MvgProvider"},{"name":"Pl","aClass":"PlProvider"},{"name":"Vgs","aClass":"VgsProvider"},{"name":"Nasa","aClass":"NasaProvider"},{"name":"Vbb","aClass":"VbbProvider"},{"name":"Ivb","aClass":"IvbProvider"},{"name":"Nvv","aClass":"NvvProvider"},{"name":"Mvv","aClass":"MvvProvider"},{"name":"Vagfr","aClass":"VagfrProvider"},{"name":"Vvv","aClass":"VvvProvider"},{"name":"Sf","aClass":"SfProvider"},{"name":"Vms","aClass":"VmsProvider"},{"name":"Sbb","aClass":"SbbProvider"},{"name":"Bsvag","aClass":"BsvagProvider"},{"name":"Jet","aClass":"JetProvider"},{"name":"Septa","aClass":"SeptaProvider"},{"name":"Bvb","aClass":"BvbProvider"},{"name":"Mersey","aClass":"MerseyProvider"},{"name":"Vvs","aClass":"VvsProvider"},{"name":"Nvbw","aClass":"NvbwProvider"},{"name":"Se","aClass":"SeProvider"},{"name":"Svv","aClass":"SvvProvider"},{"name":"Bahn","aClass":"BahnProvider"},{"name":"Vrs","aClass":"VrsProvider"},{"name":"Stockholm","aClass":"StockholmProvider"},{"name":"Vmv","aClass":"VmvProvider"},{"name":"Stv","aClass":"StvProvider"},{"name":"Sydney","aClass":"SydneyProvider"},{"name":"Paris","aClass":"ParisProvider"},{"name":"Dsb","aClass":"DsbProvider"},{"name":"Rt","aClass":"RtProvider"},{"name":"Dub","aClass":"DubProvider"},{"name":"Bvg","aClass":"BvgProvider"},{"name":"Paca","aClass":"PacaProvider"},{"name":"Vor","aClass":"VorProvider"},{"name":"FrenchSouthWest","aClass":"FrenchSouthWestProvider"},{"name":"Avv","aClass":"AvvProvider"},{"name":"Zvv","aClass":"ZvvProvider"},{"name":"Nri","aClass":"NriProvider"},{"name":"Invg","aClass":"InvgProvider"},{"name":"Eireann","aClass":"EireannProvider"},{"name":"Vbl","aClass":"VblProvider"},{"name":"Vvo","aClass":"VvoProvider"},{"name":"Sh","aClass":"ShProvider"},{"name":"Kvv","aClass":"KvvProvider"},{"name":"Bayern","aClass":"BayernProvider"},{"name":"Atc","aClass":"AtcProvider"},{"name":"Lu","aClass":"LuProvider"},{"name":"Italy","aClass":"ItalyProvider"},{"name":"Vvm","aClass":"VvmProvider"},{"name":"Met","aClass":"MetProvider"},{"name":"Ding","aClass":"DingProvider"},{"name":"Tlem","aClass":"TlemProvider"},{"name":"Vvt","aClass":"VvtProvider"},{"name":"Vrn","aClass":"VrnProvider"}]

Das was bei Name steht wird verwendet, der Wert aClass ist intern und braucht hier nicht weiter verwendet werden. Im Beispiel haben die Verkehrsbetriebe Stuttgart (VVS) den Namen "Vvs".

2. Ermitteln der StationId für die Haltestelle deren Abfahrtszeiten ich gerne haben möchte. In diesem Beispiel die Haltstelle "SSB-Zentrum"

http://transportrest-sbiermann.rhcloud.com/station/suggest?q=SSB-Zentrum&provider=Vvs

Dieses liefert als Antwort im JSON Format:

[{"type":"STATION","id":"5000350","lat":48726856,"lon":9129721,"place":"Stuttgart","name":"SSB-Zentrum","products":null,"lonAsDouble":9.129721,"latAsDouble":48.726856,"identified":true},{"type":"STATION","id":"5002601","lat":48722757,"lon":9129058,"place":"Stuttgart","name":"Industriestraße (SSB-Zentrum)","products":null,"lonAsDouble":9.129058,"latAsDouble":48.722757,"identified":true}]

Wie man sehen kann gibt es mehrere Treffer für SSB-Zentrum. Es wird aber nur der Typ "STATION" benötigt und somit lautet die StationId "5000350".

3. Abfrage der Departure Zeiten für die Haltestelle "SSB-Zentrum". Diese liefert die Daten im passenden Format für das zugehörige departure Widget für FTUI

http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=6930306&provider=Vvs

dieses liefert als Antwort im passenden Format:

[["U8","Vaihingen","3"],["U12","Dürrlewang","6"],["U8","Ostfildern","5"],["U3","Vaihingen","6"],["U12","Hallschlag","7"],["U3","Plieningen","9"],["U8","Vaihingen","12"],["U12","Dürrlewang","17"],["U8","Waldau","15"],["U3","Vaihingen","16"]]

Die Zeiten sind immer inklusive Verspätung angegeben, sofern der Provider diese Daten mit sendet.

Einbindung in FHEM

Wie in der Einleitung erwähnt gibt es aktuell zwei Wege, die Abfahrtszeiten einzubinden: über HTTPMOD oder über das noch inofizielle Modul 98_departure

define myDeparture HTTPMOD none 0
attr myDeparture get01Name SSB-Zentrum
attr myDeparture get01URL http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=6930306&provider=Vvs
attr myDeparture get01Regex (\[\[.*\]\]).*
attr VAG timeout 30

Es können mehrere Haltestellen in einem Device hinterlegt werden, hierzu einfach die drei Attribute get01Name, get01URL und get01Regex duplizieren und durchnummerieren. Dabei müssen natürlich Name und URL angepasst werden. Bei dieser Konfiguration erfolgt die Aktualisierung über das FTUI Widget!

Links