[CLASS] Abfahrtstafeln von bahn.de auslesen

Die Zeiten sind in dem Array ( route )

[3] => Array
                (
                    [time] => 10:50
                    [train] => ICE277
                    [type] => ICE
                    [route_ziel] => Interlaken Ost
                    [route] => Array
                        (
                            [0] => 11:27 - Mannheim Hbf 
                            [1] => 11:58 - Karlsruhe Hbf 
                            [2] => 12:27 - Offenburg 
                            [3] => 12:59 - Freiburg(Breisgau) Hbf 
                            [4] => 13:34 - Basel Bad Bf 
                            [5] => 13:47 - Basel SBB 
                            [6] => 14:08 - Liestal 
                            [7] => 14:25 - Olten 
                            [8] => 14:56 - Bern 
                            [9] => 15:21 - Thun 
                            [10] => 15:31 - Spiez 
                            [11] => 15:51 - Interlaken West 
                            [12] => 15:57 - Interlaken Ost 
                        )

                    [platform] => 9
                    [ris] => +0
                    [route_start] => Frankfurt(Main)Hbf

Schau dir mal meine Scripte an
https://github.com/1007/IPS1007Library/tree/master/IPSLibrary/app/modules/Informationen/BusBahnInfo

OK, danke für den Hinweis. Das Array habe ich mir jetzt anzeigen lassen in meinem Skript:

[timetable] => Array
(
[0] => Array
(
[time] => 15:07
[train] => Bus67
[type] => BUS
[route_ziel] => Hahnheimer Straße, Zornheim
[route] => Array
(
[15:07] =>
[15:08] =>
[15:12] =>
[15:14] =>
)

                [ris] => k.A.
                [route_start] => Ebersheim Neugasse, Mainz
            )

Nur leider werden mir die einzelnen Haltestellen nicht mit „Nummerierung“ angezeigt. Wie kann ich die denn jetzt abfragen? Bin leider noch Neuling und lese mich momentan überall ein. Dein Skript habe ich auch nicht ans laufen bekommen. Er wirft folgende Fehlermeldung:

Fatal error: Call to undefined function IPSUtils_Include() in [TTTT\BAHN2\busbahninforefresh.ips.php] on line 26

LINE 26: IPSUtils_Include („IPSInstaller.inc.php“,„IPSLibrary::install::IPSInstaller“);

Kannst Du mir noch nen Tipp geben?! Danke!

Mein Script ist ja fuer die IPSLibrary. Deshalb . Kennst du die ?
Wen du dir was eigenes schreiben willst helf ich dir gern.

Hi Leute,

ich habe als Abschlussprojekt die Installation eines kostengünstigen Abfahrtsmonitors für eine Fahrradstation mit direkter Bahnhofsanbindung - sprich die Kunden wollen direkt sehen wann welcher Zug, mit welcher Verspätung abfährt. Ich bin jetz nich so der php - crack …

Als „Hilfsmittel“ habe ich einen raspberry pi und als Anzeige einen digitalen Bilderrahmen.

Ich muss also die Verkehrsdaten für den bestimmten Bahnhof von www.bahn.de auslesen und diese danach in ein gängiges Format umwandeln welches sich der Bilderrahmen dann von einem bestimmten Ort abholt. Ich denke mal am Besten ist es das Bild lokal zu speichern und dann jeweils immer wieder zu überschreiben.

kann mir jemand eine Starthilfe bei den nötigen programmierschritten geben?

MfG

agentsmitty

Das schöne, schlanke Skript habe ich seit Jahren im Einsatz. Leider wirft es jetzt einen Fehler:

Notice: Trying to get property of non-object in C:\IP-Symcon\scripts\class.bahn.php on line 90

Fatal error: Call to a member function getAttribute() on null in C:\IP-Symcon\scripts\class.bahn.php on line 97
Abort Processing during Fatal-Error: Call to a member function getAttribute() on null
Error in Script C:\IP-Symcon\scripts\class.bahn.php on Line 97

Hier der Code dazu:

function _parse($data){
        $dom = new DOMDocument();
        @$dom->loadHTML($data);

        $select=$dom->getElementById("rplc0");
//Zeile 90:
        if($select->tagName=="select"){
            $options=$select->getElementsByTagName("option");
            foreach($options AS $op){
                echo utf8_decode($op->getAttribute("value")."-".$op->nodeValue)."n";
            }
            return false;
        }else{
// Zeile 97:
           $this->bahnhof=utf8_decode($select->getAttribute("value"));
            $this->_process_dom($dom);
            return true;
        }
    }

Kann jemand helfen? Ich sehe leider nicht durch. :confused:

Grüße
galleto

Hallo
Ich weiss nicht welche URL du benutzt, aber die Seite ist umgezogen
Von :

http://reiseauskunft.bahn.de/bin/bhftafel.exe/.......................

nach:

https://reiseauskunft.bahn.de//bin/bhftafel.exe/...............................

Ein Aufruf mit der alten URL bringt

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://reiseauskunft.bahn.de//bin/bhftafel.exe/dn?...........">here</a>.</p>
</body></html>

Danke, leider bleibt der Fehler auch mit neuer Adresse bestehen.

Wurde sonst etwas in den letzten 2 Wochen geändert?

Grüße
galleto

Hallo
Wüsste nicht was sich geändert hat, aber magst du mal am Anfang der Funktion mit Echo ausgeben was in der Variablen
$data steht. Ist wahrscheinlich nicht das was erwartet wird.

Gesendet von iPad mit Tapatalk

Ich bleib verrückt - es geht wieder! Einfach so! :confused:

Die letzten Tage hatte ich lediglich den Timer deaktiviert, damit mich die Fehlermeldungen nicht nerven. Jetzt klappt wieder alles wie vorher. Ob ich vorübergehend geblockt war oder sowas in der Art? Merkwürdig.

Danke jedenfalls für den Hilfeversuch. :slight_smile:

Grüße
galleto

Solche Timer per Script deaktivieren, wenn man nicht da ist reduziert die Last und das Risiko eventuellen Blockens erheblich ;).

Ralf, das findet doch selbstverständlich schon statt. :slight_smile:

Grüße
galleto

Hallo zusammen,

irgendwie bekomme ich das Auslesen von Bahn.de nicht hin.

Ich habe die class.bahn.php erstellt und unter /var/lib/symcon/scripts abgelegt. Wenn ich nun das Abfragescript Post # 24 anlege und es ausführe, erhalte ich folgende Fehlermeldung.

Kann mir jemand erklären was ich machen muss…

Beste Grüße
Kai

Das sieht aus wie „meine“ Fehlermeldung, die sporadisch kommt und geht. Hab die Ursache leider nicht gefunden, vermutlich eine Blockade seitens bahn.de. :confused:

Grüße
galleto

Danke für den Tipp Galleto.

Ich konnte das Skript jetzt erfolrgreich einbinden, jedoch werden die Icons nicht angezeigt.

Ich habe sie in den Ordner /var/lib/symcon/webfront/user/bahn abgelegt. Benötigen sie noch spezielle Rechte oder habe ich etwas übersehen?

2018-02-19 21_34_03-WebFront.png

Beste Grüße
Kai

Hi Kai,

habe das gerade auch mal ausprobiert - bei mir leider auch :frowning:


       //$eintrag = explode(";", $bahn->timetable[$i]); 
		var_dump($bahn->timetable[$i]);
        $caller = $bahn->timetable[$i]["type"]; 
        switch($caller) { 
           case "SBAHN": 
              $eintrag[0] = "<img src=/user/bahn/sbahn_24x24.gif>"; 
              break; 
           case "BUS": 
              $eintrag[0] = "<img src=/user/bahn/bus_24x24.gif>"; 
              break; 
           case "RE": 
              $eintrag[0] = "<img src=/user/bahn/re_24x24.gif>"; 
              break; 
           case "ICE": 
              $eintrag[0] = "<img src=/user/bahn/ice_24x24.gif>"; 
              break; 
           case "TRAM": 
              $eintrag[0] = "<img src=/user/bahn/tram_24x24.gif>"; 
              break; 
            default: 
               $eintrag[0] = $caller; 
               break; 
        } 

Habe da mal ein Dump eingebaut und der Typ ist immer „IMG“ und nicht ICE, TRAM usw.
Entweder geht es bei den anderen auch nicht mehr oder wir müssen selber weiter suchen!

Ciao Pitti

Habs! Jedenfalls erstmal :slight_smile:

in der Klasse folgende Zeile (bei mir 115)


                                    if (preg_match('%/([a-z]*)_%', $img->getAttribute("src"), $regs)) {

durch


                                    if (preg_match('%/([a-z]*)_24%', $img->getAttribute("src"), $regs)) {

ersetzen!

Hi Pitti,

auch das hat auf anhieb funktioniert :wink:

Da ich IPSView nutze würde ich gerne die Schrift vergrößern. Ab einem gewissen Alter werden die Buchstaben immer kleiner :rolleyes:

Habe die Zeile 75 um font-size=‚25px‘ erweitert, klappt aber nicht.

Was muss ich dort eintragen, damit es gelingt.

Beste Grüße
Kai

Zeile 75 ist bei wahrscheinlich was anderes - habe paar zeilen geändert.

Schick mal mehr Fleisch - bei welchem Tag/Attribute usw.

Also …


    $str = "<table width='90%' style='font-size:25px' align='center'>"; // Farbe anpassen oder style entfernen 

ergibt den gewünsachten Effekt

Hallo Pitti,

funktioniert…:slight_smile:

Vielen Dank nochmal für deine Hilfe.

Beste Grüße
Kai