Idee: Abfahrtmonitor

Begonnen von MegaData, 05 August 2014, 11:38:31

Vorheriges Thema - Nächstes Thema

MegaData

Hallo Gemeinde,

ich glaube meine Idee ist nicht ganz neu, ich möchte mir frühmorgens gern die Bahnen auf dem Display anzeigen lassen, die in den kommenden Minuten bei mir zu Hause abfahren. Unter der URL http://widgets.vvo-online.de/abfahrtsmonitor/Abfahrten.do?ort=Dresden&hst=%22+Albertplatz+%22&vz=1&lim=8 kann man direkt unter Angabe der Vorlaufzeit, Haltestelle und Anzahl der Ergebnisse aufrufen und bekommt einen String in folgender Art zurück:

[["8","Hellerau","0"],["8","Hellerau","1"],["3","Coschütz","1"],["3","Wilder Mann","2"],["8","Südvorstadt","5"],["7","Pennrich","5"],["8","Südvorstadt","6"],["7","Weixdorf","6"]]

Das wird also die Nummer der Bahn, die Richtung und die Abfahrtzeit in Minuten. Das kann man ja jetzt relätiv ähnlich wie beim Benzinpreismonitor einlesen, jedoch verzweifle ich an den regulären Ausdrücken. Könnte mir da jemand unter die Arme greifen ? Mit der Variante könnte man dann den gesamten VVO abfragen, also fast alles was so durch Sachsen tingelt.

Danke :)

rudolfkoenig

Folgendes RegExp
\[\["(\d+)","([^"]*)","(\d+)"\],
kopiert 8 nach $1, Hellerau nach $2, und 0 nach $3.
Man kann das Regexp verlaengern, um die anderen Werte nach $4 usw zu kopieren.
Wie man mit dieser Methode eine Variable Anzahl von Elementen erwischt, ist mir nicht bekannt.

Eleganter, aber vmtl. nicht HTTPMOD kompatibel ist das e (execute) modifier, z.Bsp:

my $input = '[["8","Hellerau","0"],["8","Hellerau","1"]...';
my @fld;
$input =~ s/\["(\d+)","([^"]*)","(\d+)"\]/push(@fld,"$1,$2,$3")/ge;
print join("\n", @fld),"\n";

betateilchen



my $text = '[["8","Hellerau","0"],["8","Hellerau","1"],["3","Coschütz","1"],["3","Wilder Mann","2"],["8","Südvorstadt","5"],["7","Pennrich","5"],["8","Südvorstadt","6"],["7","Weixdorf","6"]]';

$text =~ s/\],\[/\n/g;
$text =~ s/[\[\]"]//g;

use Data::Dumper;
$Data::Dumper::Useqq=1;
print Data::Dumper->Dump([[split /^/, $text]], ["*text"]);



liefert:



@text = (
          "8,Hellerau,0\n",
          "8,Hellerau,1\n",
          "3,Cosch\374tz,1\n",
          "3,Wilder Mann,2\n",
          "8,S\374dvorstadt,5\n",
          "7,Pennrich,5\n",
          "8,S\374dvorstadt,6\n",
          "7,Weixdorf,6"
        );



und dann mach ich mit foreach weiter :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MegaData

Soooo... ist zwar mit Sicherheit nicht die eleganteste Lösung... aber es läuft ;-) In der Stunde die ich jetzt in der Woche frühmorgens auf bin, zeigt er mir die Abfahrtzeiten an... Ich bin begeistert  ;D

bsl02

Hallo,

ähnliches wurde bereits genannt
http://forum.fhem.de/index.php/topic,10862.0.html

allerdings konnte ich das bisher nur sehr rudimentär umsetzen.

An Deiner Lösung wäre ich daher interessiert ;-)

Gruß, Stefan
RPi3 (FHEM) / CUL V3 868 (FS20) / nanoCUL868 (HM) / RFXtrx433 (IT & ELRO) / MAX!Cube (Thermostate, Fenster) / Bluetooth (presence Handy) / Sonoff mit Tasmota // Audio: RPi3 mit "max2play"-Image (Squeezeserver+Player) / Video: Synology-NAS mit TVheadend, Triax TSS400 Sat-IP Converter

cutter

Hallo

Ich wäre auch an deiner Lösung interessiert. Wäre nett wenn du sie hier zur Verfügung stellst.
Was ist wenn der Zug Verspätung hat, wird dann die korrekte Ankunftszeit angegeben ?

Gruß Achim 

MegaData

Hi !

Naja, die Lösung steht ja eigentlich schon da...  ;) Ich habe über HTTPMOD den unten stehenden Link eingelesen und die Attribute wie im Bild gesetzt. Danach kann man die Variablen wie im RSS-Workshop beschrieben einfach einlesen und formatiert anzeigen lassen. Den Link lasse ich minütlich aktualisieren, das vom RSS erzeugte Bild auch, somit wird die Bahn immer aktuell angezeigt. Im Endeffekt ist man natürlich darauf angewiesen was die DVB an Daten bereit stellt - und das ist leider nicht immer so aktuell das die Verspätung mit drin steht.

Ich hoffe das hat erst einmal geholfen ?


bsl02

Hallo,

die Umsetzung scheint doch recht "komplex", habe ich hier zunächst verschoben.

Zur Info: Bahnhofs-Abfahrtstafeln nebst Verspätungen lassen sich zumindest für meinen Bahnhof (DB & NordWestBahn) erzeugen unter diesem Link:
http://www.oepnv-info.de/?seitenID=36#bfabfrage_auswahl

für Mobilgeräte:
http://www.mobilitaetsportal.info/mobil.php?page=5

Gruß, Stefan
RPi3 (FHEM) / CUL V3 868 (FS20) / nanoCUL868 (HM) / RFXtrx433 (IT & ELRO) / MAX!Cube (Thermostate, Fenster) / Bluetooth (presence Handy) / Sonoff mit Tasmota // Audio: RPi3 mit "max2play"-Image (Squeezeserver+Player) / Video: Synology-NAS mit TVheadend, Triax TSS400 Sat-IP Converter