Open Antetime opened 1 year ago
Ich hab mal die MVG angefragt:
Die alte Fahrinfo API wurde abgeschaltet.
Bitte nutzen Sie statt dessen „Mein Halt“:
bzw. als Beispiel:
Kann jemensch einen PR machen?
https://www.mvg.de/api/fib/v2/ is die neue. Zum Bespiel https://www.mvg.de/api/fib/v2/departure?globalId=de:09162:79&limit=20&offsetInMinutes=0&transportTypes=UBAHN,TRAM,BUS,SBAHN,SCHIFF
JSON nur an einer Stelle anders.
Ein PR kann ich zwar nicht machen, weil mein Fork uralt ist und mir die Motivation für ein Update fehlt, aber hier: https://github.com/jbob/mvv-display-for-ESP32/commit/8413f6351a1464f58a74436e767f0609317ec065 sind die Änderungen bei mir. Es sind 3 relativ kleine Änderungen:
["depatures"]
muss überall wo es im Code vorkommt einfach entfernt werdendepatureTime
wurde realDepatureTime
, dafür gibt es delay
nicht mehr.https://www.mvg.de/api/fib/v2/ is die neue. Zum Bespiel https://www.mvg.de/api/fib/v2/departure?globalId=de:09162:79&limit=20&offsetInMinutes=0&transportTypes=UBAHN,TRAM,BUS,SBAHN,SCHIFF
JSON nur an einer Stelle anders.
Servus, wo bekommt man denn die Station-IDs her ? z.B. globalId=de:09162:79
EDIT: Gefunden https://github.com/florianlederer/mvv-display-for-ESP32/blob/master/API/mvg_ids.txt
Es sind 3 relativ kleine Änderungen:
Die neue API scheint leider etwas langsamer zu antworten, als die alte, weshalb es bei der Abfrage des öfteren zu folgender Fehlermeldung kommt: "Error: Couldn't send GET: -1" Das kann teils bis zu 3 Minuten dauern, bis das Gerät wieder die Zeit aktualisert. Dies kann sehr unpraktisch sein. Daher habe ich folgenden Fix implementiert, der bei mir geholfen hat (Ein 5s delay zwischen Zugriff und Abfrage, wobei die anderen Zeiten angepasst werden müssen, um weiterhin auf die 30s zu kommen):
void handle_mvg_api(Config config) { HTTPClient http; String url = "https://www.mvg.de/api/fib/v2/departure?globalId=" + String(config.bahnhof); http.begin(url); delay(5000); int httpResponseCode = http.GET();
. . . ++i; } img.pushSprite(0, 0); } http.end(); delay(25000); //Send a request every 25 seconds } else { Serial.print("Error: Couldn't send GET: "); Serial.println(httpResponseCode); http.end(); } }
Mir ist aufgefallen, dass alle Aufrufe der MVP API mit einer HTTP 404 antworten. Mache ich was falsch oder wurde auf MVG-Seite was geändert?
Beispiele: https://www.mvg.de/api/fahrinfo/location/queryWeb?q= https://www.mvg.de/api//fahrinfo/location/queryWeb?q=Marienplatz