98_DBPlan.pm: Fahrplaninformation der DB

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

Vorheriges Thema - Nächstes Thema

namor

Tolles Modul und tolle Idee.
Leider funzt es bei mir nicht???

Meine Konfig:
define db_emmendingen DBPlan 60
attr db_emmendingen dbplan_departure Lahr
attr db_emmendingen dbplan_destination Emmendingen
attr db_emmendingen dbplan_journey_opt Direktverbindung
attr db_emmendingen dbplan_journey_prod Alle


Log:
2015.10.12 18:59:12 3: DBPlan (db_emmendingen) - DB timetable: calling url: http://reiseauskunft.bahn.de/bin/query.exe/dox?S=Lahr&Z=Emmendingen&start=1&rt=1&journeyOptions=1&
2015.10.12 18:59:12 3: DBPlan (db_emmendingen) - DBPlan_Parse_Timetable: successfully identified
2015.10.12 18:59:12 3: DBPlan (db_emmendingen) - DBPlan_Parse_Timetable: no connection plans found


Er findet wohl kein Verbindungsplan?
Habe es auch schon mit anderen Zielen und Startpunkten versucht.

Alle Readings sagen "none"

Habe auch schon HTML::TableExtract installiert, keine Änderung.

woran kann das liegen?

Bin für jede Hilfe dankbar...

namor

Kommando zurück, alles da! ;-))
Jaja wer lesen kann ist klar im Vorteil.

Die Schreibweise der Destination muss absolut identisch mit der Schreibweise der DB- Anzeige auf der Website (Suche) sein.

fishware

Hallo liebe Community.

Ersteinmal herzlichen Dank für das wundervolle Modul. Es verrichtet bei mir sang und klanglos -als *FETTES* Kompliment auffassen- seinen Dienst.

Ich habe mir mehrere Instanzen eingerichtet, auch das funktioniert wunderbar.

Nun zu einem Anliegen. Eine der Instanzen fragt in regelmäßigen Intervallen (300 Sekunden) eine bestimmte Strecke (Berlin Hbf - Berlin Wannsee) mit der aktuellen Uhrzeit ab. Nun werden ja immer die nächsten drei Verbindungen vorbildlich herausgesucht und die Readings befüllt.

Nun entscheide ich mich für eine ganz bestimmte Verbindung, sagen wir mal mit der Suchanfrage Abreisezeit aktuell 18:05, für die 2.
Nach 5 oder 10 Minuten (ein oder zwei refresh später) ist es nun zur ersten Möglichkeit geworden. Dadurch ist es schwierig, eine bestimmte Route dauerhaft zu "tracken".

Meine Frage:
Haben die konkret gefundenen Reisemöglichkeiten eine eindeutige ID, mit der man sie "wiederfinden" kann? Oder habt ihr eine Idee wie man das "einfach" in FHEM umsetzen kann. Eine spezielle Suche zu generieren mit der exakten Abfahrtszeit gestaltet sich an Abfahrtsorten mit mehr als einer Haltestelle/Linie (z.B. Berlin, Prenzlauer Allee/Ostseestrasse) und mit sehr dichter Taktung als sehr schwierig, da mit jeder neuen Anfrage teils vollkommen neue Reisemöglichkeiten in die 3 Readings aufgenommen werden.

Ich hoffe das ist verständlich, wenn nicht bitte einfach nachfragen um endgülig alle Klarheiten zu beseitigen.  :-\

Liebe Grüße

(zufriedener Nutzer) fishware

blixx

Cooles Ding :)
Gibt es schon die Möglichkeit die entsprechende BahnCard zu hinterlegen, damit die Preise richtig angezeigt werden?
Konte die Option bisher nicht finden und hab mal ein bisschen im Internet gescuht zu den Parametern:
http://webcache.googleusercontent.com/search?q=cache:wzb_OlIUCBQJ:www.geiervally.lechtal.at/sixcms/media.php/1405/Parametrisierte%2520%25DCbergabe%2520Bahnauskunft(V%25205.12-R4.30c,%2520f%25FCr.pdf+&cd=3&hl=de&ct=clnk&gl=de

Komme damit aber leider nicht weiter...

JoWiemann

Zitat von: blixx am 03 November 2015, 11:01:42
Gibt es schon die Möglichkeit die entsprechende BahnCard zu hinterlegen, damit die Preise richtig angezeigt werden?

Für db_plan kannst Du eine angepasste dbplan_base_url als Attribut hinterlegen. Hier musst Du dann den entsprechenden Parameter für die Bahn-Card hinterlegen.

Aus:
http://reiseauskunft.bahn.de/bin/query.exe/dox?S=departure&Z=destination&start=1&rt=1
wird dann z.B.:
http://reiseauskunft.bahn.de/bin/query.exe/dox?tariffClass=1&S=departure&Z=destination&start=1&rt=1
wenn nur 1. Klasse gefunden werden soll.

So kannst Du dann die Suche weiter verfeinern.

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

JoWiemann

Zitat von: fishware am 31 Oktober 2015, 18:00:28
Ich hoffe das ist verständlich, wenn nicht bitte einfach nachfragen um endgülig alle Klarheiten zu beseitigen.  :-\

Hallo,

leider verstehe ich Dich nicht wirklich. Ein ausführliches Beispiel würde mir weiter helfen.

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

fishware

Zitat von: JoWiemann am 03 November 2015, 20:45:13
Hallo,

leider verstehe ich Dich nicht wirklich. Ein ausführliches Beispiel würde mir weiter helfen.

Grüße Jörg

Ok. Ein Beispiel

Zitatdefine home_mdf_time DBPlan 300
attr home_mdf_time dbplan-time-selection arrive
attr home_mdf_time dbplan-travel-time 09:48
attr home_mdf_time dbplan_base_url https://reiseauskunft.bahn.de/bin/query.exe/dox?S=departure&Z=destination&start=1&rt=1
attr home_mdf_time dbplan_departure Prenzlauer Allee/Ostseestr., Berlin
attr home_mdf_time dbplan_destination Michendorf
attr home_mdf_time dbplan_journey_prod Nahverkehr,S-Bahnen,Busse,U-Bahnen,Strassenbahnen
Die Anfrage habe ich ab 7.00 gestellt.

Das ist eine Verbindung, die mehr als 3 Möglichkeiten bietet.
1. Tram zum Alex -> RE nach Michendorf
2. Tram zur Friedrichstraße -> RE nach Michendorf
3. Tram zur Osloer Straße -> U-Bahn zum Zoo -> RE nach Michendorf
4. Tram zur S-Prenzlauer Allee -> S-Bahn nach Westkreuz -> S-Bahn nach Charlottenburg -> RE nach Michendorf

Der RE ist immer der Gleiche mit Ankunft 9.48 Uhr in Michendorf.
Die Abfahrtszeiten sind bei Verbindung 2 und 3 gleich, 8.42 Uhr.

Ich entscheide mich für Verbindung 2 über Friedrichstraße, weil ich dort noch einen sehr leckeren Latte to Go bekomme. ;)
Ic möchte ab jetzt gezielt diese Verbindung autimatisch beobachten, ob es bis zur Abfahrtzeit nicht irgendwelche Störungen auf der Strecke gibt.

Wenn nun nach 300 Sekunden ein Update der Verbindung gemacht wird
define home_mdf_time DBPlan 300

ist die Verbindung über die Friedrichstraße nicht mehr die zweite Möglichkeit, sondern die erste, oder auch ganz herausgefallen.
Nach weiteren 300 Sekunden kann es dann sein, das die Verbindung wieder Möglichkeit 2 ist.
Leider haben meine Beobachtungen ergeben, das teilweise bis zu 9!! Verbindungen möglich sind, durch die nach jedem 300 Sekunden Update scheinbar willkürlich gesprungen wird.
Das macht es erstmal unmöglich gezielt eine Möglichkeit über eine eine längere Dauer zu beobachten und up to date zu halten ( ich will mir ja den lecker Latte an der Friedrichstraße holen ohne Gefahr zu laufen wegen einer Tramstörung nur auf der Strecke, z.B. Falschparker, meinen RE Zug insgesamt zu verpassen.

Vielen Dank für Dein Interesse.

Grüße fishware



JoWiemann

Hallo,

wenn Du das Attribut dbplan_base_url auf folgendes änderst solltest Du Dein gewünschtes Ergebnis erhalten:

http://reiseauskunft.bahn.de/bin/query.exe/dox?V1=Berlin Friedrichstraße&S=departure&Z=destination&start=1&rt=1

V1=erster VIA Bahnhof
V2=zweiter VIA Bahnhof

Wenn V1 alleine zu unscharf ist kannst Du mit V2 die Suche noch weiter präzesieren.

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

fishware

Vielen Dank für Deine schnelle Hilfe. Immer wieder ein Genuß hier!!!

ZitatWenn V1 alleine zu unscharf ist kannst Du mit V2 die Suche noch weiter präzesieren.

Geht das auch noch mit V3,V4,Vn?  :-[

Grüße fishware

JoWiemann

Leider nein. Die API kennt nur V1 und V2.

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

fishware

Okeh, vielen Dank.

Mit etwas Gehirnschmalz 4 Atributen zur Streckeführung plus zwei zeitliche (Abfahrt und Ankunft) läßt sich ja schon so einiges machen.
Ich probier mal ein wenig.

Schönen Abend fishware

ps. Wo bekommt man die API Specs her?

JoWiemann

Hallo,

ich habe DBPlan jetzt um folgende Attribute erweitert:

dbplan_via_1: Erster Via-Bahnhof
dbplan_via_2: Zweiter Via-Bahnhof
dbplan_tariff_class: 1 oder 2 Klasse
dbplan_addon_options: Ihr könne jetzt weitere Parameter der API angegeben werden, ohne die base_url verändern zu müssen. Bitte auf die korrekte Syntax achten, wie Sie hier beschrieben ist: http://webcache.googleusercontent.com/search?q=cache:wzb_OlIUCBQJ:www.geiervally.lechtal.at/sixcms/media.php/1405/Parametrisierte%2520%25DCbergabe%2520Bahnauskunft(V%25205.12-R4.30c,%2520f%25FCr.pdf+&cd=3&hl=de&ct=clnk&gl=de

Es ist auch auf die korrekte Verknüpfung der Parameter durch "&" zu achten. Das Attribut startet also immer mit "&" und endet ohne.

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

blixx

Ah super, danke:)))
Funktioniert mit dbplan_addon_options.
Also Tipp an alle: Vergesst den Parameter: tariffTravellerReduction.<Nummer> ,,"
Das hat mich nur viel Zeit gekostet...
Stattdessen nehmt den Parameter: &tariffTravellerReductionClass
In meinem Fall (BahnCard Business 50 1st) "&tariffTravellerReductionClass.1=7"
Für andere Karten einfach die Nummer anpassen.

Juhu es läuft:)

Viele Grüße

Bernd

mrbreil

Erstmal Danke für das super Modul.
Leider produziert es aber unentwegt  folgenden Logeintrag bei mir.
2015.12.01 08:02:26 1: PERL WARNING: Use of uninitialized value in join or string at ./FHEM/98_DBPlan.pm line 708.
2015.12.01 08:02:26 3: stacktrace:
2015.12.01 08:02:26 3:     main::__ANON__                      called by ./FHEM/98_DBPlan.pm (708)
2015.12.01 08:02:26 3:     main::DBPlan_Parse_Timetable        called by FHEM/HttpUtils.pm (294)
2015.12.01 08:02:26 3:     main::__ANON__                      called by fhem.pl (653)


Fehlt bei mir etwas, oder ist dieser Logeintrag normal?
Funktionieren tut es ja.

Gruß Christian

Thoffi1978

Bei mir gibt es seit kurzen auch ein paar Fehlermeldungen:
2015.12.05 20:28:11 0: Server started with 93 defined entities (fhem.pl:10074/2015-12-03 perl:5.020002 os:linux user:fhem pid:2541)
2015.12.05 20:30:10 1: PERL WARNING: Use of uninitialized value in join or string at ./FHEM/98_DBPlan.pm line 691.
2015.12.05 20:30:10 1: PERL WARNING: Use of uninitialized value $prod in concatenation (.) or string at ./FHEM/98_DBPlan.pm line 716.
2015.12.05 20:30:10 1: PERL WARNING: Use of uninitialized value $price in concatenation (.) or string at ./FHEM/98_DBPlan.pm line 716.
2015.12.05 20:30:10 1: PERL WARNING: Use of uninitialized value $prod in string ne at ./FHEM/98_DBPlan.pm line 721.
2015.12.05 20:30:10 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/98_DBPlan.pm line 729.


Hoffi