Neues FTUI Widget - Departure

Begonnen von setstate, 27 Januar 2016, 15:51:08

Vorheriges Thema - Nächstes Thema

viegener

#285
@knopf_piano: Das ist sehr interessant - Danke für den Link! - Bei meinen Versuchen ist mir noch ein Parameter untergekommen:
L=

Bekannte Werte

vs_java2 --> liefert die Daten im Textformat getrennt durch "|" (auch mit Verspätungen etc)
vs_java --> liefert die Daten im Textformat aber nur Linieninfo (z.B. ohne Zielangabe oder separate Verspätungsinfo)
vs_java3 --> liefert Informationen als XML-Fragment

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

australien

#286
Zitat von: sbiermann am 07 Januar 2020, 16:07:21
Sowas ist bereits enthalten, die REST-API hat verschiedene Endpunkte (die ich mal besser dokumentieren sollte..).
Siehe: https://transport.stefan-biermann.de/publictransportapi/rest/departure?from=6930306
[{"departureDelay":1,"departureTime":"2020-01-07T16:06+0100","departureTimeInMinutes":1,"departureTimestamp":1578409560000,"number":"1","product":"TRAM","to":"Littenweiler"},{"departureDelay":0,"departureTime":"2020-01-07T16:05+0100","departureTimeInMinutes":0,"departureTimestamp":1578409500000,"number":"1","product":"TRAM","to":"Landwasser"},{"departureDelay":0,"departureTime":"2020-01-07T16:11+0100","departureTimeInMinutes":6,"departureTimestamp":1578409860000,"number":"1","product":"TRAM","to":"Littenweiler"},{"departureDelay":0,"departureTime":"2020-01-07T16:11+0100","departureTimeInMinutes":6,"departureTimestamp":1578409860000,"number":"1","product":"TRAM","to":"Landwasser"},{"departureDelay":0,"departureTime":"2020-01-07T16:17+0100","departureTimeInMinutes":12,"departureTimestamp":1578410220000,"number":"1","product":"TRAM","to":"Littenweiler"},{"departureDelay":0,"departureTime":"2020-01-07T16:17+0100","departureTimeInMinutes":12,"departureTimestamp":1578410220000,"number":"1","product":"TRAM","to":"Landwasser"},{"departureDelay":0,"departureTime":"2020-01-07T16:23+0100","departureTimeInMinutes":18,"departureTimestamp":1578410580000,"number":"1","product":"TRAM","to":"Landwasser"},{"departureDelay":0,"departureTime":"2020-01-07T16:23+0100","departureTimeInMinutes":18,"departureTimestamp":1578410580000,"number":"1","product":"TRAM","to":"Littenweiler"},{"departureDelay":0,"departureTime":"2020-01-07T16:29+0100","departureTimeInMinutes":24,"departureTimestamp":1578410940000,"number":"1","product":"TRAM","to":"Littenweiler"},{"departureDelay":0,"departureTime":"2020-01-07T16:29+0100","departureTimeInMinutes":24,"departureTimestamp":1578410940000,"number":"1","product":"TRAM","to":"Landwasser"}]

Die andere URL ist extra für das departure Widget gemacht... Diese hier genannte ist universeller.

Die Verspätungen sind wirklich abhängig vom Anbieter. Soweit ich das bisher gesehen habe bieten mittlerweile die meisten Verkehrsbetriebe diese Information an.

was brauche ich dazu, um diese Informationen in ein reading zu bekommen?

das regex aus dem Depature Modul

(\[\[.*]\]).*

passt da ja nicht und in regex kenn ich mich überhaut nicht aus.
raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

Ulm32b

Ich habe nun einen Weg gefunden, um mit Bordmitteln einzelne Ziele aus der für departure bereitgestellten Liste zu entfernen:

Für <devicename> und get01* ist einzugeben:
attr <devicename> get01Expr {$val=~s/\[[^\[]*("Parkstraße",|"Schlossallee",)[^\]]*\],?//g;; $val =~ s/\],\]/]]/;; return $val;;}
In diesem Beispiel werden alle Ziele entfernt, die "Parkstraße" oder "Schlossallee" enthalten. Kann das bitte weiter getestet werden?

Frage an die Kundigen: Geht das auch eleganter? Und wie kann ich ,,Positivlisten", z.B. anzuzeigende Linien filtern?

Etwas benutzerfreundlicher fände ich schon, wenn die REST-API direkt Filteroptionen bereitstellt.

sbiermann

So ich habe mal die Doku aktualisiert, sie ist zu finden unter: https://github.com/sbiermann/public-transport-web-api-javaee/blob/master/README.md
So als kurze Zusammenfassung, es gibt für das FTUI Depature Widget 2 Endpunkte die wichtig sind. Beide enden mit FHEM am Ende. Einmal ist es der hier schon sehr bekannte Endpunkt für die Abfahrtstafel einer bestimmten Haltestelle /departure/fhem?... und dann noch der zweite der auf Anfrage eines Users von hier vor 1 oder 2 Jahren hinzu gekommen ist. Dieser Endpunkt stellt die Abfahrtstafel einer bestimmten Haltestelle dar und zwar gefiltert auf das Endziel, sprich man sag ich will von A nach B und es werden nur noch alle Abfahren von A angezeigt die auch nach B führen. Andere Abfahrten die zum Beispiel von A nach D führen ohne das B auf dem Weg liegt, werden dann nicht mehr angezeigt. Der Endpunkt ist lautet /connectin/fhem?..., die genauen Parameter sind der Anleitung zu entnehmen.
Beispiel: https://transport.stefan-biermann.de/publictransportapi/rest/departure/FHEM?from=6906508 zeigt die Abfahrten vom Freiburger HBF an.
[["1","Littenweiler","2"],["RE17019","Basel, Badischer Bahnhof","1"],["ICE451","Milano Centrale","5"],["4","Messe","5"],["4","Zähringen","5"],["S9911","Seebrugg Bahnhof","7"],["2","Hornusstraße","7"],["S9961","Neustadt (Schwarzw) Bahnhof","7"],["S8556","Gottenheim Bahnhof","7"],["1","Landwasser","9"]]
Da mich aber zum Beispiel nur die Linie zwei Richtung Friedrich-Ebert-Platz interessiert, ist diese just in diesem Moment nicht auf der Anzeige, weil erst in 10 Minuten oder später die Fahrt ist. Daher kann man mit: https://transport.stefan-biermann.de/publictransportapi/rest/connection/FHEM?from=6906508&to=6930811&product=T eine Fahrt angeben zwischen zwei Haltestelle und das Resultat ist dann:
[["2","Friedrich-Ebert-Platz","16"],["2","Friedrich-Ebert-Platz","31"],["2","Friedrich-Ebert-Platz","46"],["2","Friedrich-Ebert-Platz","61"]]

sbiermann

Mit dem 30.1 werde ich nicht nur HTTP abschalten sondern auch die Schnittstelle updaten. Dadurch ergeben sich ein paar Änderungen an den Providern. Zum Beispiel gibt es dann keinen einzelnen Anbieter mehr in Baden-Württemberg (außer Karlsruhe), sondern einen zentralen Nahverkehr Baden-Württemberg (Nvbw). Die Bahn heißt jetzt DbProvider anstelle von Bahnprovider. Es kommen auch ein paar neue hinzu, hauptsächlich im Ausland wie in San Francisco oder Australien. Nachfolgend die aktuelle Liste der Provider:

[{"aClass":"FinlandProvider","name":"Finland"},{"aClass":"WienProvider","name":"Wien"},{"aClass":"NasaProvider","name":"Nasa"},
{"aClass":"BsvagProvider","name":"Bsvag"},{"aClass":"CzechRepublicProvider","name":"CzechRepublic"},{"aClass":"BartProvider","name":"Bart"},
{"aClass":"NvbwProvider","name":"Nvbw"},{"aClass":"PlNavitiaProvider","name":"PlNavitia"},{"aClass":"VrnProvider","name":"Vrn"},{"aClass":"ZvvProvider","name":"Zvv"},
{"aClass":"VmtProvider","name":"Vmt"},{"aClass":"AvvAachenProvider","name":"AvvAachen"},{"aClass":"OoevvProvider","name":"Ooevv"},
{"aClass":"VvsProvider","name":"Vvs"},{"aClass":"FranceSouthWestProvider","name":"FranceSouthWest"},{"aClass":"DingProvider","name":"Ding"},
{"aClass":"StvProvider","name":"Stv"},{"aClass":"BayernProvider","name":"Bayern"},{"aClass":"SncbProvider","name":"Sncb"},{"aClass":"SvvProvider","name":"Svv"},
{"aClass":"DsbProvider","name":"Dsb"},{"aClass":"MvvProvider","name":"Mvv"},{"aClass":"KvvProvider","name":"Kvv"},{"aClass":"MvgProvider","name":"Mvg"},
{"aClass":"SbbProvider","name":"Sbb"},{"aClass":"SeProvider","name":"Se"},{"aClass":"VvmProvider","name":"Vvm"},{"aClass":"VmobilProvider","name":"Vmobil"},
{"aClass":"ItalyProvider","name":"Italy"},{"aClass":"VmvProvider","name":"Vmv"},{"aClass":"VgnProvider","name":"Vgn"},
{"aClass":"FranceSouthEastProvider","name":"FranceSouthEast"},{"aClass":"NegentweeProvider","name":"Negentwee"},{"aClass":"GhanaProvider","name":"Ghana"},
{"aClass":"EireannProvider","name":"Eireann"},{"aClass":"RtProvider","name":"Rt"},{"aClass":"LuProvider","name":"Lu"},{"aClass":"RtaChicagoProvider","name":"RtaChicago"},
{"aClass":"OntarioProvider","name":"Ontario"},{"aClass":"TfiProvider","name":"Tfi"},{"aClass":"VvoProvider","name":"Vvo"},{"aClass":"LinzProvider","name":"Linz"},
{"aClass":"MerseyProvider","name":"Mersey"},{"aClass":"OebbProvider","name":"Oebb"},{"aClass":"AvvProvider","name":"Avv"},{"aClass":"SpainProvider","name":"Spain"},
{"aClass":"GvhProvider","name":"Gvh"},{"aClass":"VblProvider","name":"Vbl"},{"aClass":"TlemProvider","name":"Tlem"},
{"aClass":"FranceNorthEastProvider","name":"FranceNorthEast"},{"aClass":"OregonProvider","name":"Oregon"},{"aClass":"SydneyProvider","name":"Sydney"},
{"aClass":"DbProvider","name":"Db"},{"aClass":"QuebecProvider","name":"Quebec"},{"aClass":"DubProvider","name":"Dub"},
{"aClass":"AvvAugsburgProvider","name":"AvvAugsburg"},{"aClass":"NvvProvider","name":"Nvv"},{"aClass":"VaoProvider","name":"Vao"},
{"aClass":"ParisProvider","name":"Paris"},{"aClass":"FranceNorthWestProvider","name":"FranceNorthWest"},{"aClass":"AustraliaProvider","name":"Australia"},
{"aClass":"CmtaProvider","name":"Cmta"},{"aClass":"ShProvider","name":"Sh"},{"aClass":"BritishColumbiaProvider","name":"BritishColumbia"},
{"aClass":"MassachusettsProvider","name":"Massachusetts"},{"aClass":"NicaraguaProvider","name":"Nicaragua"},{"aClass":"VvtProvider","name":"Vvt"},
{"aClass":"VgsProvider","name":"Vgs"},{"aClass":"PlProvider","name":"Pl"},{"aClass":"VbbProvider","name":"Vbb"},{"aClass":"NzProvider","name":"Nz"},
{"aClass":"VvvProvider","name":"Vvv"},{"aClass":"VrrProvider","name":"Vrr"},{"aClass":"NsProvider","name":"Ns"},{"aClass":"VbnProvider","name":"Vbn"},
{"aClass":"BvgProvider","name":"Bvg"},{"aClass":"InvgProvider","name":"Invg"},{"aClass":"VmsProvider","name":"Vms"},{"aClass":"VorProvider","name":"Vor"},
{"aClass":"VrsProvider","name":"Vrs"}]



Falls jemand hier einen Provider vermisst, bitte melden, ich schaue dann welcher neue alternative Provider die Funktion übernommen hat.

australien

Hallo Stefan

leider bringe ich die Abfrage mit den connection nicht zum Laufen.
https://transport.stefan-biermann.de/publictransportapi/rest/connection?from=1192101&to=921177&product=B&provider=Oebb
bie der Abfrage
https://transport.stefan-biermann.de/publictransportapi/rest/departure?from=1192101&provider=Oebb
steht im product BUS. Wenn ich das in der ersten Abfrage ändere, kommt auch keine Lösung, sondern nur "no Trip found", was aber nicht stimmt.

gibt es da einen Lösungsansatz?

Zitat
Ich habe nun einen Weg gefunden, um mit Bordmitteln einzelne Ziele aus der für departure bereitgestellten Liste zu entfernen:

Für <devicename> und get01* ist einzugeben:
Code: [Auswählen]

attr <devicename> get01Expr {$val=~s/\[[^\[]*("Parkstraße",|"Schlossallee",)[^\]]*\],?//g;; $val =~ s/\],\]/]]/;; return $val;;}

In diesem Beispiel werden alle Ziele entfernt, die "Parkstraße" oder "Schlossallee" enthalten. Kann das bitte weiter getestet werden?

Frage an die Kundigen: Geht das auch eleganter? Und wie kann ich ,,Positivlisten", z.B. anzuzeigende Linien filtern?

Etwas benutzerfreundlicher fände ich schon, wenn die REST-API direkt Filteroptionen bereitstellt.
Wenn ich da die Ausschließungsorte eingebe und es unter get02Expr (bei mir ist das regex und die URL unter 02 angelegt, 01 ist nichts) ist alles beim alten.




raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

Ulm32b

Zitat von: australien am 17 Januar 2020, 08:17:28
Wenn ich da die Ausschließungsorte eingebe und es unter get02Expr (bei mir ist das regex und die URL unter 02 angelegt, 01 ist nichts) ist alles beim alten.
Kannst Du bitte einmal die Antwort der URL-Abfrage, ähnlich wie
[["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"]]
hier posten und zusätzlich Deine Get02Expr ?

australien

gerne

[["280","Neusiedl am See Hauptplatz","31"],["280","Eisenstadt Busbahnhof (Domplatz)","41"],["280","Neusiedl am See Hauptplatz","101"],["280","Eisenstadt Busbahnhof (Domplatz)","120"],["280","Neusiedl am See Hauptplatz","151"]]

und
get02OExpr    {$val=~s/\[[^\[]*("Neusiedl",|"Purbach",)[^\]]*\],?//g; $val =~ s/\],\]/]]/; return $val;}
raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

Ulm32b

Zitat von: australien am 17 Januar 2020, 16:55:45
[["280","Neusiedl am See Hauptplatz","31"],["280","Eisenstadt Busbahnhof (Domplatz)","41"],["280","Neusiedl am See Hauptplatz","101"],["280","Eisenstadt Busbahnhof (Domplatz)","120"],["280","Neusiedl am See Hauptplatz","151"]]
und
get02OExpr    {$val=~s/\[[^\[]*("Neusiedl",|"Purbach",)[^\]]*\],?//g; $val =~ s/\],\]/]]/; return $val;}
Dein Suchstring lautet (einschließlich der Anführungszeichen und des Kommas): "Neusiedl",  Und das wird nicht gefunden.
Du hast die Wahl:
1. Suchstring entspricht genau den gelieferten Werten, also "Neusiedl am See Hauptplatz", (Komma ist entbehrlich, dann wird nur vom ersten bis zum zweiten Anführungszeichen gesucht)
2. Suchstring wird so gewählt, dass er in den gelieferten Werten gefunden wird, z.B. Neusiedl oder auch "Neusiedl
Bei 2 würde der Suchstring aber z.B. auch bei "Neusiedl Strandpromenade" anschlagen. Die angemessene Variante ist aus dem Kontext heraus zu wählen. Wenn es sehr viele Ziele in Neusiedl gibt und einzelne davon nicht gelöscht werden sollen, ist es sinnvoll, den Suchstring genauer zu wählen, um unerwünschte Effekte zu vermeiden.

Bitte nochmal testen.

Bei Interesse: https://regex101.com/
Dort kann man die URL-Antwort als Teststring eingeben und als Suchstring:
\[[^\[]*(Neusiedl|"Purbach",|...)[^\]]*\],?
Damit lässt sich die Wirkung der Regex sehr bequem analysieren.

sbiermann

Zitat von: australien am 17 Januar 2020, 08:17:28
Hallo Stefan

leider bringe ich die Abfrage mit den connection nicht zum Laufen.
https://transport.stefan-biermann.de/publictransportapi/rest/connection?from=1192101&to=921177&product=B&provider=Oebb
bie der Abfrage
https://transport.stefan-biermann.de/publictransportapi/rest/departure?from=1192101&provider=Oebb
steht im product BUS. Wenn ich das in der ersten Abfrage ändere, kommt auch keine Lösung, sondern nur "no Trip found", was aber nicht stimmt.

gibt es da einen Lösungsansatz?
Wenn ich da die Ausschließungsorte eingebe und es unter get02Expr (bei mir ist das regex und die URL unter 02 angelegt, 01 ist nichts) ist alles beim alten.
Es ist kompliziert.. anscheinend ist es so das bei der Abfrage: https://transport.stefan-biermann.de/publictransportapi/rest/departure?from=1192101&provider=Oebb die umliegenden Haltestellen mit enthalten sind. Was zur Folge hat das der Bus mit angezeigt wird. Wenn man nun die Abfrage https://transport.stefan-biermann.de/publictransportapi/rest/connection?from=1192101&to=921177&product=B&provider=Oebb aufruft kommt keine Antwort weil der Bus nicht als Startort 1192101 hat sondern 921039 was der Haltestelle Floridsdorf Bf (Schlosshofer Straße) entspricht. Wenn du den Bus also haben willst sieht die Abfrage so aus: https://transport.stefan-biermann.de/publictransportapi/rest/connection?from=921039&to=921177&product=B&provider=Oebb. Das Problem ist, dass es 2 Bugs gibt, weswegen die URL nur einen internen Server Fehler meldet. Denn habe ich zwar schon gefixt aber der kommt erst am 31.1 live.

Stonemuc

Ich hab mal eine Frage zum Widget. Wie bekomme ich die erste Spalte mit der Linie breiter? Ich nutze die die im Wiki beschriebene Abfrage über die API von Öffi und da dann einen Bahnhof der DB. Allerdings habe ich da Regionalbahnen z.B. RB58107 . Das ist zu lang für die erste Spalte und überlagert den Zielort. Auch wenn ich die Breite hochsetze, bleibt die erste Spalte so schmal. Kann ma das ändern?

FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe

sbiermann

Neue Version ist online und es funktioniert nur noch https, alle http anfragen werden auf https redirected mit 301 Statuscode.

Stonemuc

Wie komm ich an die neue Version?Manueller download?
Ich habe gerade in FHEM einen Updatecheck gemacht....und da steht nichts davon, dass was in richtung Departure aktualisiert werden würde...

Sorry für meine doofe Frage, aber ich hab noch nie was am FTUI aktualisiert...
FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe

sbiermann

Am FHEM und deren Komponenten oder FTUI muss nichts aktualisiert werden. Ich habe nur wie hier im Thread angekündigt die Schnittstelle aktualisiert und http abgeschaltet.

Stonemuc

Ah...okay. Ich dachte die Antwort bezog sich oben auf meine Frage bezüglich der Spaltenbreite im Widget.
Hast du dafür zufällig eine Lösung parat?
FHEM aus Raspberry PI 3 B+, Haussteuerung auf EnOcean Basis, Tecalor THZ 404eco Wärmepumpe