98_DBPlan.pm: Fahrplaninformation der DB

Begonnen von JoWiemann, 08 April 2015, 18:57:14

Vorheriges Thema - Nächstes Thema

locodriver

Danke für die schnelle Umsetzung meiner Anregung.
Es ist immer wieder "erstaunlich", wie schnell hier reagiert wird...
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

JoWiemann

Hallo,

ich habe gerade im Git eine neue Version hoch geladen. Leider hatte sich in der Zeichenkodierung vor dem Hochladen irgendwie ein Fehler eingeschlichen. Außerdem habe ich die commandref überarbeitet und den aktuellen Modul-Regeln angepasst.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

locodriver

fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

yersinia

Zitat von: JoWiemann am 21 November 2022, 20:34:31ich habe gerade im Git eine neue Version hoch geladen.
Funzt. Danke.
Kleine Anmerkung: sollte die Version nicht auch angepasst werden? FHEM spuckt noch die 2018er Version aus
File         Rev   Last Change
98_DBPlan.pm 80662 2018-02-23 18:53:00Z jowiemann
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

JoWiemann

Hallo Yersinia,

danke für den Hinweis. Mache ich bei Gelegenheit.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

NoKi

#560
Hallo Jörg,

danke für deinen Einsatz für das Modul!

Eine Frage: Lässt sich irgendwie der Tag, der zu der Abfahrtszeit gehört, mit abfragen?

Mein Problem:
Wenn ein Bus z.B. Sonntags gar nicht fährt, werden bei einer Abfrage z.B. Sonntags morgens trotzdem Abfahrtszeiten zurückgegeben, mit aktuellem Zeitstempel und keiner aktuellen Fehlermeldung. "plan_error" zeigt zwar "error in DB request", aber das ist laut Zeitstempel ein alter Wert; das ist auch bei korrekten Werten genauso.
Die Abfahrtszeiten sind wahrscheinlich die vom Montag, man kann das aber nicht erkennen, und würde die als Abfahrtszeiten für Sonntag interpretieren, läuft dann aber vergeblich zur Haltestelle ;) .

Wenn der Tag mit zurückgegeben würde, wäre das Problem gelöst. Eine andere Möglichkeit sehe ich nicht.

Viele Grüße   Norbert
FHEM auf RasPi, diverse HM-Komponenten

JoWiemann

Hallo Norbert,

puh, da habe ich lange nicht mehr reingeschaut. Schaue ich mir an. Wird aber dauern, da die nächsten zwei Wochen voll mit Terminen sind.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

RockFan

Hallo Jörg,
erstmal besten Dank für das Modul. Ich verwende es schon ewig  :D

Wahrscheinlich seit der Fahrplanänderung am Wochenende bekomme ich keine Aktualisierung mehr.
Im Log steht nun immer:
2024.12.16 22:44:17 3: DBPlan (db_Bobingen_Augsburg) - DBPlan_Parse_Timetable: no connection plans found

Funktioniert es bei Dir noch?

Viele Grüße
Dieter
Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...

thorschtn

Zitat von: RockFan am 16 Dezember 2024, 22:52:54Wahrscheinlich seit der Fahrplanänderung am Wochenende bekomme ich keine Aktualisierung mehr.
Im Log steht nun immer:
2024.12.16 22:44:17 3: DBPlan (db_Bobingen_Augsburg) - DBPlan_Parse_Timetable: no connection plans found

Wenn man die URL manuell aufruft, bekommt man ne Fehlermeldung der Bahn:

ZitatHinweis - Wir haben unsere Vertriebssysteme aktualisiert!
Buchungen auf dieser Website sind nicht mehr möglich.
Für weitere Buchungen und den Zugriff auf Ihre Daten benutzen Sie bitte die App DB Navigator oder unsere optimierte Website.

Die scheinen die API abgeschaltet zu haben....
NUC - FHEM & HA
MapleCUN, Homematic, 433MHz, AB440, 1-Wire Bewässerung & Pool, Jarolift (Signalduino), Signal Messenger, Denon AVR, LG WebOS, AmazonEcho, Jura S90 (ESP8266), Sonoff, Xiaomi Mii Sauger, Worx SO500i

JoWiemann

Hallo,

ich nutze das Modul selber schon einige Zeit nicht mehr und habe mich bisher gewundert, dass das so lange von der DB bereitgestellt worden ist. Scheint wohl vorbei zu sein.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

tobi01001

Zitat von: RockFan am 16 Dezember 2024, 22:52:54Hallo Jörg,
erstmal besten Dank für das Modul. Ich verwende es schon ewig  :D

Wahrscheinlich seit der Fahrplanänderung am Wochenende bekomme ich keine Aktualisierung mehr.
Im Log steht nun immer:
2024.12.16 22:44:17 3: DBPlan (db_Bobingen_Augsburg) - DBPlan_Parse_Timetable: no connection plans found

Funktioniert es bei Dir noch?

Viele Grüße
Dieter

Die Frage ist, was du alternativ zum Modul nehmen könntest.

Unter https://www.bahn.de/buchung/abfahrten-ankuenfte kann man Bahnhof und Verkehrsmittel auswählen und beommt den Fahrplan inkl. Verspätungen angezeigt.
DB macht daraus eine API Abruf in z.B. dieser Form:
https://www.bahn.de/web/api/reiseloesung/abfahrten?datum=...

Und das liefert dir JSON zurück, was man weiter verarbeiten kann:
{
  "entries": [
    {
      "bahnhofsId": "8001033",
      "zeit": "2024-12-17T11:19:00",
      "gleis": "2",
      "ueber": [
        "Bobingen",
        "Schwabmünchen",
        "Buchloe",
        "Kaufbeuren",
        "Biessenhofen",
        "Günzach",
        "Kempten(Allgäu)Hbf"
      ],
      "journeyId": "2|#VN#1#ST#1734031727#PI#1#ZI#192348#TA#0#DA#171224#1S#8000013#1T#1109#LS#8000197#LT#1222#PU#81#RT#1#CA#RE#ZE#57412#ZB#RE 57412#PC#3#FR#8000013#FT#1109#TO#8000197#TT#1222#",
      "meldungen": [
        {
          "prioritaet": "HOCH",
          "text": "Halt entfällt",
          "type": "HALT_AUSFALL"
        }
      ],
      "verkehrmittel": {
        "name": "RE 57412",
        "kurzText": "RE",
        "mittelText": "RE 79",
        "langText": "RE 57412",
        "produktGattung": "REGIONAL"
      },
      "terminus": "Kempten(Allgäu)Hbf"
    },
    {
      "bahnhofsId": "8001033",
      "zeit": "2024-12-17T11:28:00",
      "ezZeit": "2024-12-17T11:30:00",
      "gleis": "2",
      "ueber": [
        "Bobingen",
        "Oberottmarshausen",
        "Graben(Lechfeld)Gewerbepark",
        "Lagerlechfeld",
        "Klosterlechfeld",
        "Kaufering",
        "Landsberg(L)Schule",
        "Landsberg(Lech)"
      ],
      "journeyId": "2|#VN#1#ST#1734031727#PI#1#ZI#653868#TA#0#DA#171224#1S#8000013#1T#1113#LS#8003512#LT#1213#PU#81#RT#1#CA#DPN#ZE#62920#ZB#BRB62920#PC#3#FR#8000013#FT#1113#TO#8003512#TT#1213#",
      "meldungen": [],
      "verkehrmittel": {
        "name": "BRB62920",
        "kurzText": "BRB",
        "mittelText": "BRB RB69",
        "langText": "BRB62920",
        "produktGattung": "REGIONAL"
      },
      "terminus": "Landsberg(Lech)"
    },
    {
      "bahnhofsId": "8001033",
      "zeit": "2024-12-17T11:28:00",
      "ezZeit": "2024-12-17T11:31:00",
      "gleis": "3",
      "ueber": [
        "Bobingen",
        "Inningen",
        "Augsburg Messe",
        "Augsburg Morellstr.",
        "Augsburg Hbf"
      ],
      "journeyId": "2|#VN#1#ST#1734031727#PI#1#ZI#653873#TA#0#DA#171224#1S#8003512#1T#1046#LS#8000013#LT#1145#PU#81#RT#1#CA#DPN#ZE#62925#ZB#BRB62925#PC#3#FR#8003512#FT#1046#TO#8000013#TT#1145#",
      "meldungen": [],
      "verkehrmittel": {
        "name": "BRB62925",
        "kurzText": "BRB",
        "mittelText": "BRB RB69",
        "langText": "BRB62925",
        "produktGattung": "REGIONAL"
      },
      "terminus": "Augsburg Hbf"
    },
    {
      "bahnhofsId": "8001033",
      "zeit": "2024-12-17T11:37:00",
      "ezZeit": "2024-12-17T11:38:00",
      "gleis": "2",
      "ueber": [
        "Bobingen",
        "Augsburg Hbf"
      ],
      "journeyId": "2|#VN#1#ST#1734031727#PI#1#ZI#192350#TA#0#DA#171224#1S#8000197#1T#1037#LS#8000013#LT#1153#PU#81#RT#1#CA#RE#ZE#57415#ZB#RE 57415#PC#3#FR#8000197#FT#1037#TO#8000013#TT#1153#",
      "meldungen": [],
      "verkehrmittel": {
        "name": "RE 57415",
        "kurzText": "RE",
        "mittelText": "RE 79",
        "langText": "RE 57415",
        "produktGattung": "REGIONAL"
      },
      "terminus": "Augsburg Hbf"
    },
    {
      "bahnhofsId": "8001033",
      "zeit": "2024-12-17T11:59:00",
      "ezZeit": "2024-12-17T11:59:00",
      "gleis": "2",
      "ueber": [
        "Bobingen",
        "Inningen",
        "Augsburg Messe",
        "Augsburg Morellstr.",
        "Augsburg Hbf"
      ],
      "journeyId": "2|#VN#1#ST#1734031727#PI#1#ZI#653774#TA#0#DA#171224#1S#8002156#1T#1020#LS#8000013#LT#1213#PU#81#RT#1#CA#DPN#ZE#62745#ZB#BRB62745#PC#3#FR#8002156#FT#1020#TO#8000013#TT#1213#",
      "meldungen": [],
      "verkehrmittel": {
        "name": "BRB62745",
        "kurzText": "BRB",
        "mittelText": "BRB RB77",
        "langText": "BRB62745",
        "produktGattung": "REGIONAL"
      },
      "terminus": "Augsburg Hbf"
    },
    {
      "bahnhofsId": "8001033",
      "zeit": "2024-12-17T12:02:00",
      "ezZeit": "2024-12-17T12:02:00",
      "gleis": "1",
      "ueber": [
        "Bobingen",
        "Schwabmünchen",
        "Buchloe",
        "Kaufbeuren",
        "Biessenhofen",
        "Ebenhofen",
        "Marktoberdorf",
        "Füssen"
      ],
      "journeyId": "2|#VN#1#ST#1734031727#PI#1#ZI#653766#TA#0#DA#171224#1S#8000013#1T#1148#LS#8002156#LT#1356#PU#81#RT#1#CA#DPN#ZE#62736#ZB#BRB62736#PC#3#FR#8000013#FT#1148#TO#8002156#TT#1356#",
      "meldungen": [],
      "verkehrmittel": {
        "name": "BRB62736",
        "kurzText": "BRB",
        "mittelText": "BRB RB77",
        "langText": "BRB62736",
        "produktGattung": "REGIONAL"
      },
      "terminus": "Füssen"
    }
  ]
}

LG
FHEM@UbuntuServer on Lenovo ThinkCentre M900 [i5-6500T / 8GB RAM] MySQL-DbLog, Grafana, FTUI3 / HmIP incl. CCU3 / LGESS / Wärempumpe über TA CMI und CANoE / Shellies u.v.m.

RockFan

Danke für Euren Input. Muss mal darüber nachdenken, was sich daraus machen lässt, wenn etwas mehr Zeit ist...
Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...

rob

Hi zusammen.

Zitat von: tobi01001 am 17 Dezember 2024, 11:25:49...
Unter https://www.bahn.de/buchung/abfahrten-ankuenfte kann man Bahnhof und Verkehrsmittel auswählen und beommt den Fahrplan inkl. Verspätungen angezeigt.
DB macht daraus eine API Abruf in z.B. dieser Form:
https://www.bahn.de/web/api/reiseloesung/abfahrten?datum=...
...

Lässt sich auch verkürzen auf z.B. https://www.bahn.de/web/api/reiseloesung/abfahrten?ortExtId=8001033&mitVias=true&maxVias=8&verkehrsmittel[]=REGIONAL
Witzig: Bobingen ist nur eine Station von mir entfernt :)

Diese "api" hat nur leider keinen Parameter mehr dafür, wie viele Einträge angezeigt werden. Bei meiner Haltestation kommen nur drei (fährt nicht so oft je Stunde). Mit der alten Variante konnte man das auf z.B. 10 oder 20 festlegen.

Bei mir funktioniert noch die alte "api": https://reiseauskunft.bahn.de/bin/bhftafel.exe/dox?&si=8001033&bt=dep&p=1111101&max=20&rt=1&use_realtime_filter=1&start=yes&;
Wird wohl auch nicht mehr ewig laufen.

Weil für mich das Modul 98_DBPlan schon länger nicht mehr tat, hatte ich es via 99_myUtils.pm geslöst und hole die Daten per HttpUtils_NonblockingGet() von obiger URL.
Ein Dummy stellt Link, Daten und Trigger bereit, ein Notify reagiert und angezeigt wird es im FTUI.
Ist umständlicher, ich weiß, aber immerhin bislang stabil :)

Wenn die Bahn dann auch diese URL nicht mehr unterstützt, müsste nur das Dummy die neue URL erhalten und der parsende Teil in der CallBack-Funktion auf das JSON angepasst werden.

Sofern Interesse besteht, kann ich den Krams gerne posten. Passt imho nur nicht so richtig in diesen Fred. Wollte nicht so viel OT posten.

Viele Grüße
rob

JWRu

Ich benutze schon länger nicht mehr DBPlan, sondern das hier: https://wiki.fhem.de/wiki/Departure
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon-Sensoren; TFA-Sensoren; Steuerung Viessmann-Heizung; Arduinos für Strom-, Wasser-, Gaszähler, Rauchmelder und FI-Schutzschalter

RockFan

Besten Dank für die vielen Anregungen!

Ich habe mir "Departure" angeschaut und ausprobiert. Der Beitrag im Forum lässt leider schon vermuten, dass es nicht sehr stabil ist. Gestern funktionierte es auch, allerdings starteten die ersten Abfahrtszeiten ca. eine Stunde in der Vergangenheit. Heute bekomme ich einen Fehler.

Besonderen Dank an tobi01001 und rob (ja, wir wohnen wohl nicht so weit auseinander  ;)):
Das Resultat aus der neuen Bahn API hat mich an Auswertungen aus der Coronazeit erinnert. Da wurde mit JsonMod gearbeitet. Damit habe ich mir dann mal schnell etwas sehr simples für meine Zwecke zusammengebaut:

Internals:
   API_LAST_MSG 200
   API_LAST_RES 1734786720.24005
   CFGFN     
   DEF        https://www.bahn.de/web/api/reiseloesung/abfahrten?ortExtId=8001033&mitVias=true&maxVias=8&verkehrsmittel[%5D=REGIONAL
   FUUID      67658699-f33f-f7ea-41fc-b78c8a3bdcaa4c09
   NAME       BobingenAugsburg
   NEXT       2024-12-21 14:16:00
   NR         2906
   SOURCE     https://www.bahn.de/web/api/reiseloesung/abfahrten?ortExtId=8001033&mitVias=true&maxVias=8&verkehrsmittel[%5D=REGIONAL (200)
   STATE      ???
   SVN        28481 2024-02-05 22:14:33 UTC
   TYPE       JsonMod
   eventCount 467
   .attraggr:
   .attrminint:
   CONFIG:
     IN_REQUEST 0
     SOURCE     https://www.bahn.de/web/api/reiseloesung/abfahrten?ortExtId=8001033&mitVias=true&maxVias=8&verkehrsmittel[%5D=REGIONAL
     SECRET:
   OLDREADINGS:
   READINGS:
     2024-12-21 14:12:00   .computedReadings 1_Plan,1_Delay,1_Gleis,0_Abfahrt,0_Gleis,1_Abfahrt,0_Delay,0_Plan
     2024-12-21 14:12:00   0_Abfahrt       14:28
     2024-12-21 14:12:00   0_Delay         0
     2024-12-21 14:12:00   0_Gleis         3
     2024-12-21 14:12:00   0_Plan          14:28
     2024-12-21 14:12:00   1_Abfahrt       14:55
     2024-12-21 14:12:00   1_Delay         0
     2024-12-21 14:12:00   1_Gleis         2
     2024-12-21 14:12:00   1_Plan          14:55
Attributes:
   interval   */4 * * * *
   readingList multi(jsonPath("\$.entries[?(\@.terminus in ['Augsburg Hbf'])]"), concat(count(),'_Plan'), substr(property('zeit'),11,5));
multi(jsonPath("\$.entries[?(\@.terminus in ['Augsburg Hbf'])]"), concat(count(),'_Abfahrt'), substr(property('ezZeit'),11,5));
multi(jsonPath("\$.entries[?(\@.terminus in ['Augsburg Hbf'])]"), concat(count(),'_Delay'), (time_str2num(property('ezZeit'))-time_str2num(property('zeit')))/60);
multi(jsonPath("\$.entries[?(\@.terminus in ['Augsburg Hbf'])]"), concat(count(),'_Gleis'), property('gleis'));
   room       Dienste
   webCmd     reread

Da mich nur die Abfahrten Richtung Augsburg interessieren, habe ich das bereits direkt in readingList gefiltert. Man kann natürlich noch viel mehr Infos direkt in Readings verwandeln.

Auf die Schnelle habe ich noch herausgefunden, dass man noch weitere Verkehrsmittel, wie z.B. Bus hinzunehmen kann:
https://www.bahn.de/web/api/reiseloesung/abfahrten?ortExtId=8001033&mitVias=true&maxVias=8&verkehrsmittel[]=REGIONAL&verkehrsmittel[]=BUS
   

Wäre natürlich interessant, welche weiteren Parameter die API zur Verfügung stellt. Ich hätte z.B. gerne einen etwas längeren Zeitraum im Ergebnis.

Viele Grüße
Dieter
Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...