Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. DB Zugverbindungen abfragen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

DB Zugverbindungen abfragen

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
45 Posts 23 Posters 13.3k Views 9 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    dna909
    wrote on last edited by
    #11

    Hallo Michael,

    > @ dna909: nutzt du die api schon ? hast du ein script im einsatz ?

    hab mich da zwar registriert, aber als notorischer Bahnhasser :lol: , hab ich da jetzt keinen akuten Handlungsbedarf.

    Die API ist eine feine Sache, aber auch recht komplex, daraus was vernünftiges zurechtzuschustern.

    Wenn ich mal viel Zeit habe, kann ich ja mal probieren, dafür ein Script zu schreiben…

    dna909

    Intel NUC7PJYH mit Proxmox, Odroid U2, CCU2, Philips Hue, ESP8266, Xiaomi Robot, Google Chromecast Audio, Instar 6012HD, Bosch HNG6764S6

    1 Reply Last reply
    0
    • M Offline
      M Offline
      Magda
      wrote on last edited by
      #12

      @mctom:

      danke für eure Antworten..

      @ Magda: Leider steht bei mir die Version 1.0 noch nicht zur Verfügung. Ich glaube ich muss sie mal manuell von github installieren.

      @ dna909: nutzt du die api schon ? hast du ein script im einsatz ?

      Gruß

      Michael `

      Hab mir die API auch mal angeschaut und die ganz schön schwer zu verdauen. Haufenweise Querverweise, keine direkt verknüpften Informationen.

      Den Parser auf 1.0 zu bekommen war am Ende recht einfach. In der Adapterliste oben auf "Install from costum URL" (Katzenkopf) und dann auf dem Tab github einfach den Parser auswählen aus der Liste.

      1 Reply Last reply
      0
      • P Offline
        P Offline
        pcjogi
        wrote on last edited by
        #13

        Ich würde das gerne in den Parser eintragen, die aktuelle Version scheint aber etwas anders auszusehen als hier in dem Thread angegeben ist. Kann mir jemand sage was ich wo eintragen muss.

        Update: OK inzwischen läuft es grundsätzlich, aber die zweite Verbindung kann ich nicht abfragen. Die Spalte NUM erscheint bei mir im Parser nicht. Weiterhin hätte ich gerne nicht nur die Abfahrtsverspätung, sondern auch die Ankunftsverspätung. Wie sieht da ein RegEx aus?

        Danke

        1 Reply Last reply
        0
        • S Offline
          S Offline
          Stoni
          wrote on last edited by
          #14

          Hallo zusammen, seit ein paar Tagen werden mir in Vis immer die gleichen Verspätungen angezeigt. Auch wenn ich den Adapter neu lade, ändert sich nichts.

          In der DB App werden nun keine Minuten mehr angezeigt, sondern die aktualisierte Uhrzeit, wann der Zug tatsächlich abfahren soll. Scheinbar hat die DB da etwas umgestellt.

          Jemand die gleichen Erfahrungen gemacht? Kann des bei der Abfrage im Parser umgebaut bzw angepasst werden?

          Gruss Stoni

          1 Reply Last reply
          0
          • htreckslerH Offline
            htreckslerH Offline
            htrecksler
            Forum Testing
            wrote on last edited by
            #15

            die Bahn hat da was geändert.

            Bisher wurden immer Verspätungen von der geparsten Webseite geliefert (z. B. +3)

            jetzt liefern Sie Zeiten (z.b. planmäßige Abfahrt 17:00 - tatsächlich 17:03)

            Von daher funktioniert das nicht mehr wie gewohnt.

            Ich habe das gleiche Problem mit meinem Adapter. Aber ich bin noch nicht dazu gekommen mir das genauer anzusehen.

            Gruss Hermann

            ioBroker auf Proxmox (Debian) auf IntelNuc als Produktivsystem

            1 Reply Last reply
            0
            • S Offline
              S Offline
              Stoni
              wrote on last edited by
              #16

              @htrecksler:

              Ich habe das gleiche Problem mit meinem Adapter. Aber ich bin noch nicht dazu gekommen mir das genauer anzusehen. `

              Hast Du Dir das mal angesehen? Meinst Du, Du kriegst das hin?

              Gruß Stoni

              1 Reply Last reply
              0
              • H Offline
                H Offline
                Houns
                wrote on last edited by
                #17

                Hallo,

                ich bin gerade dabei die DB Abfrage bei mir zu integrieren.

                Kurze Frage:

                Kann ich in einer Abfrage: Abfahrt, Ankunft und/oder Dauer abfragen.

                Es wäre kein Problem, falls ich das Ergebnis dann nochmal weiter splitten müsste.

                Hab aber jetzt schon 10 Verbindungen angelegt (die meine Freundin und ich regelmäßig im Nahverkehr nutzen). Die Anzahl möchte ich ungern verdoppeln bzw. verdreichfachen ;)

                Danke und Gruß

                Houns

                1 Reply Last reply
                0
                • B Offline
                  B Offline
                  Balu1973
                  wrote on last edited by
                  #18

                  Hallo,

                  ich bin auch gerade dabei das auszuprobieren. Ich habe im Moment zwei Abfragen, die die nächste und übernächste Verbindung darstellen sollen:

                  1446_parser.png

                  Für die nächste Verbindung klappt das auch immer. Bei der Abfrage für die übernächste Verbindung bekomme ich bei jeder zweiten Abfrage den von mir definierten Fehlerwert "Fehler" angezeigt:

                  1446_historie.png

                  Hat hier jemand eine Idee?

                  Edit: in den debug Meldungen steht dann immer: "Cannot find number in answer for Parser….". Aber immer nur für die übernächste Bahn.

                  Auch wenn ich eine andere Verbindung/Strecke auswähle kommt dieser Fehler. Auch jeweils nur für die übernächste Verbindung.....

                  Danke und Grüße,

                  Balu

                  1 Reply Last reply
                  0
                  • B Offline
                    B Offline
                    Balu1973
                    wrote on last edited by
                    #19

                    @Houns:

                    Hallo,

                    ich bin gerade dabei die DB Abfrage bei mir zu integrieren.

                    Kurze Frage:

                    Kann ich in einer Abfrage: Abfahrt, Ankunft und/oder Dauer abfragen.

                    Es wäre kein Problem, falls ich das Ergebnis dann nochmal weiter splitten müsste.

                    Hab aber jetzt schon 10 Verbindungen angelegt (die meine Freundin und ich regelmäßig im Nahverkehr nutzen). Die Anzahl möchte ich ungern verdoppeln bzw. verdreichfachen ;)

                    Danke und Gruß

                    Houns `

                    Hallo Houns,

                    schau Dir mal das Ergebniss der Abfrage in einem Browser an. Dort sind alle von Dir gewünschten Informationen enthalten. Beispiel:

                    http://mobile.bahn.de/bin/query.exe/dox?S=Lindau&Z=Muenchen&timeSel=depart&start=1
                    
                    ````ergibt
                     ![1446_abfrage.png](/assets/uploads/files/1446_abfrage.png) 
                    
                    Mann muss dann "nur" noch mit RegExp die richtigen Zahlen dort rausfischen.
                    
                    Da habe ich aber leider auch keine Ahnung von und bin froh, dass ich nur die Abfahrtszeiten brauche, die hier schon vorgestellt wurden ;-)
                    
                    Grüße,
                    
                    Balu
                    1 Reply Last reply
                    0
                    • S Offline
                      S Offline
                      Stoni
                      wrote on last edited by
                      #20

                      Huhuuuu,

                      hat es jetzt jemand geschafft, die Verspätungszeiten der Bahn per RegEx rauszuarbeiten?

                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        mikiline
                        wrote on last edited by
                        #21

                        @Stoni:

                        Huhuuuu,

                        hat es jetzt jemand geschafft, die Verspätungszeiten der Bahn per RegEx rauszuarbeiten? `

                        Die Uhrzeiten bekomme ich zumindest so:

                        delay.*?([0-9]?[0-9]:[0-9][0-9])
                        

                        Um das wiederum als Verspätung in Minuten anzuzeigen…...keine Ahnung (jedenfalls ohne Skript)

                        Ich denke früher waren die Minuten als Verspätung auch auf der Webseite angezeigt oder im Quelltext vorhanden

                        Im Übrigen sind 5 min 300 000 ms ;)

                        1 Reply Last reply
                        0
                        • S Offline
                          S Offline
                          Stoni
                          wrote on last edited by
                          #22

                          @mikiline:

                          @Stoni:

                          Huhuuuu,

                          hat es jetzt jemand geschafft, die Verspätungszeiten der Bahn per RegEx rauszuarbeiten? `

                          Die Uhrzeiten bekomme ich zumindest so:

                          delay.*?([0-9]?[0-9]:[0-9][0-9])
                          

                          Um das wiederum als Verspätung in Minuten anzuzeigen…...keine Ahnung (jedenfalls ohne Skript)

                          Ich denke früher waren die Minuten als Verspätung auch auf der Webseite angezeigt oder im Quelltext vorhanden

                          Im Übrigen sind 5 min 300 000 ms ;) ` Hmm, also früher war es so, dass die Verspätung in Minuten angezeigt wurde. Das ging dann auch mit der Anleitung hier aus diesem Thread. Dann hatte die Bahn etwas umgestellt, dass die Verspätung nicht mehr in Minuten sondern als Uhrzeit angezeigt wird. Seitdem funktionierte die Anleitung hier nicht mehr.

                          Mit "delay…" kannst du die Verspätung jetzt wieder in Minuten auswerten???

                          EDIT: Scheint zu funktionieren. Es zeigt mir die tatsächliche Zeit an. Top!!

                          Ich lass das Intervall aber bei 30000.

                          1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            Asdis
                            wrote on last edited by
                            #23

                            Und noch eine Kleinigkeit:

                            Wie ist die regex für die Umstiege?

                            Dankeee

                            1 Reply Last reply
                            0
                            • K Offline
                              K Offline
                              Kuddel
                              wrote on last edited by
                              #24

                              Hallo zusammen, ist hier noch jemand aktiv?

                              Also die Anzeige der Verbidnungen klappt im Browser ohne Problem.

                              Was ich jetzt vor habe:

                              Ich würde gerne alle drei fahrten als Datenobjekt speichern und mit dann morgens in der Küche von Alexa vorlesen lassen, welche Bahn pünkltich ist.

                              Leider habe ich überhaupt keine Ahnung von RegEx.

                              Die Startzeit habe ich schon mal in ein Datenobjekt geschrieben.

                              Bbleiben jetzt noch die Statzeit von Farht zwei und drei, die jeweiligen Ankunftszeiten und die Verspätung.

                              Wäre klasse, wenn mir da jmd. helfen könnte

                              A H 0A 1 Reply Last reply
                              0
                              • siggi85S Offline
                                siggi85S Offline
                                siggi85
                                wrote on last edited by
                                #25

                                Gibt es hierzu bereits eine Lösung die man "kopieren" könnte? Die Zuginformationen zu den eigenen Pendlerstrecken in ioBroker zu haben wäre mega hilfreich! Hier würde sich fast ein eigener Adapter anbieten, falls sich jemand hierfür finden würde… :mrgreen:

                                1 Reply Last reply
                                0
                                • K Kuddel

                                  Hallo zusammen, ist hier noch jemand aktiv?

                                  Also die Anzeige der Verbidnungen klappt im Browser ohne Problem.

                                  Was ich jetzt vor habe:

                                  Ich würde gerne alle drei fahrten als Datenobjekt speichern und mit dann morgens in der Küche von Alexa vorlesen lassen, welche Bahn pünkltich ist.

                                  Leider habe ich überhaupt keine Ahnung von RegEx.

                                  Die Startzeit habe ich schon mal in ein Datenobjekt geschrieben.

                                  Bbleiben jetzt noch die Statzeit von Farht zwei und drei, die jeweiligen Ankunftszeiten und die Verspätung.

                                  Wäre klasse, wenn mir da jmd. helfen könnte

                                  A H 0A Offline
                                  A H 0A Offline
                                  A H 0
                                  wrote on last edited by
                                  #26

                                  @Kuddel ich will das Thema auch nochmal aufgreifen, könnte man die Bahnhofstafel in einem html widget anzeigen?

                                  https://iris.noncd.db.de/wbt/js/index.html?bhf=BHBF&Zeilen=2&impressum=0&termsofuse=0

                                  Erklärung der URL Parameter: http://bahnreise-wiki.de/wiki/Fahrplanauskunft#Bahnhofstafel

                                  1 Reply Last reply
                                  1
                                  • J Offline
                                    J Offline
                                    jerzimeik
                                    wrote on last edited by
                                    #27

                                    Hallo zusammen,

                                    ich bekomme die Abfrage der Abfahrtszeiten bei mir sauber hin. Nur bei den Verspätungen komme ich ein wenig durcheinander. Mal passt es, mal passt es nicht.

                                    Kann es ein, dass er auch die verspäteten Ankunftszeiten mit berücksichtigt bzw. auswertet?

                                    R 1 Reply Last reply
                                    0
                                    • J jerzimeik

                                      Hallo zusammen,

                                      ich bekomme die Abfrage der Abfahrtszeiten bei mir sauber hin. Nur bei den Verspätungen komme ich ein wenig durcheinander. Mal passt es, mal passt es nicht.

                                      Kann es ein, dass er auch die verspäteten Ankunftszeiten mit berücksichtigt bzw. auswertet?

                                      R Offline
                                      R Offline
                                      Ramses123
                                      wrote on last edited by
                                      #28

                                      @jerzimeik sagte in DB Zugverbindungen abfragen:
                                      ... Kann es ein, dass er auch die verspäteten Ankunftszeiten mit berücksichtigt bzw. auswertet?

                                      Richtig! Er gibt nacheinander die Verspätungen von der Abfahrt und Ankunft an. Liegt noch keine Verspätungsankunftszeit vor, dann wird dieser Punkt übersprungen und an der Stelle die nächste Verspätungsabfahrtszeit angegeben. Das ist natürlich für eine Abfrage echt problematisch, ob ich beim Parsen für die Verspätung der übernächste Verbindung nun Num 1 oder Num 2 nehmen muss.

                                      1 Reply Last reply
                                      0
                                      • A Offline
                                        A Offline
                                        AggroRalf
                                        Developer
                                        wrote on last edited by AggroRalf
                                        #29

                                        Hallo zusammen,

                                        ich habe mir hierfür ein kleines Javascript gebaut. Ich bin zwar nicht der Programmierer vorm Herrn, aber es funktioniert.

                                        Eventuell nutzt es ja jemanden, oder es findet sich jemand mit mehr Erfahrung zum Bau eines Adapters.

                                        Hier mal das Script, unten die Erklärungen:

                                        // Variablen
                                        let ConnectionCounter = 3;
                                        let DebugOut = false;
                                        var Url1 = 'http://mobile.bahn.de/bin/query.exe/dox?S=Lindau&Z=Friedrichshafen&timeSel=depart&start=1&journeyOptions=1';
                                        var Url2 = 'http://mobile.bahn.de/bin/query.exe/dox?S=Friedrichshafen&Z=Lindau&timeSel=depart&start=1&journeyOptions=1';
                                        
                                        function HoleBahn(ConnectionUrl, ConnectionName){
                                                request(ConnectionUrl, function (err, state, body){
                                                    if (body) {
                                                        //log('Request - alles ok');
                                                        // log(body);
                                                        if (DebugOut == true) { log(body); };
                                                        let iConnectionCounter = ConnectionCounter - 1;
                                                        let RgxBahnVerbindung = /\<script type\=\"text\/javascript\"\>var verbindung \= (.*?)\sdigitalData\.verbindung\.push\(verbindung\)\;\s<\/script\>/g;
                                                        let CurrConn = RgxBahnVerbindung.exec(body);
                                                        let iCounter = 0;
                                                        while (CurrConn != null) {
                                                            if (iCounter <= iConnectionCounter)
                                                            {
                                                                let sCurrConn = String(CurrConn[1]);
                                                                if (DebugOut == true) { log(sCurrConn); };
                                                                let sBhfAbfahrt = sCurrConn.match(/bhfUtf8\[verbindung\.start\.name\] \= \"(.*?)\"\;/)[1];
                                                                let sBhfAnkunft = sCurrConn.match(/bhfUtf8\[verbindung\.ziel\.name\] \= \"(.*?)\"\;/)[1];
                                                                let tAbfahrt = sCurrConn.match(/verbindung\.abfahrt \= \"(.*?)\"\;/)[1].split("T")[1];
                                                                let tAnkunft = sCurrConn.match(/verbindung\.ankunft \= \"(.*?)\"\;/)[1].split("T")[1];
                                                                let tDauer = sCurrConn.match(/verbindung\.reisedauer \= \"(.*?)\"\;/)[1];
                                                                let sInfo = sCurrConn.match(/verbindung\.info \= \"(.*?)\"\;/)[1];
                                                                if (sInfo == "keine") {
                                                                    sInfo = "";
                                                                }
                                                                let tAbfahrtDelay = "";
                                                                let tAnkunftDelay = "";
                                                                let bLate = false;
                                                                let bAusfall = false;
                                                                let bOnTime = false;
                                                                if (sInfo.match(/^Versp.tung$/)) {
                                                                    sInfo = "Versp&auml;tung"
                                                                    bLate = true;
                                                                } else if (sInfo.match(/Ausfall/)) {
                                                                    sInfo = "Ausfall"
                                                                    bAusfall = true;
                                                                }
                                                                // Verspaetung
                                                                let RgxBahnLate = /\<span class\=\"delay.*?\">(\d{2}:\d{2})\<\/span\>/g;
                                                                let CurrConLate = RgxBahnLate.exec(sCurrConn);
                                                                let iCounterLate = 0;
                                                                while (CurrConLate != null) {
                                                                    if (iCounterLate == 0) {
                                                                        if (CurrConLate[1] != tAbfahrt) {
                                                                            tAbfahrtDelay = CurrConLate[1];
                                                                            bLate = true;
                                                                        } else {
                                                                            bOnTime = true;
                                                                        };
                                                                    } else {
                                                                        if (CurrConLate[1] != tAnkunft) {
                                                                            tAnkunftDelay = CurrConLate[1];
                                                                            bLate = true;
                                                                        } else {
                                                                            bOnTime = true;
                                                                        }
                                                                    }
                                                                    CurrConLate = RgxBahnLate.exec(sCurrConn);
                                                                    iCounterLate++;
                                                                }
                                                                if (DebugOut) { 
                                                                    //log('CurrCon: ' + sCurrConn);
                                                                    log ('BhfAbfahrt: ' + sBhfAbfahrt);
                                                                    log ('BhfAnkunft: ' + sBhfAnkunft);
                                                                    log ('Abfahrt: ' + tAbfahrt);
                                                                    log ('AbfahrtDelay: ' + tAbfahrtDelay);
                                                                    log ('Ankunft: ' + tAnkunft);
                                                                    log ('AnkunftDelay: ' + tAnkunftDelay);
                                                                    log ('Verspaetung: ' + bLate);
                                                                    log ('Ausfall: ' + bAusfall);
                                                                    log ('Info: ' + sInfo);
                                                                };
                                                                createState('bahn.' + ConnectionName + '.BhfAbfahrt', "");
                                                                setState('bahn.' + ConnectionName + '.BhfAbfahrt', sBhfAbfahrt, true);
                                                                createState('bahn.' + ConnectionName + '.BhfAnkunft', "");
                                                                setState('bahn.' + ConnectionName + '.BhfAnkunft', sBhfAnkunft, true);
                                                                createState('bahn.' + ConnectionName + '.' + iCounter + '.Abfahrt', "");
                                                                setState('bahn.' + ConnectionName + '.' + iCounter + '.Abfahrt', tAbfahrt, true);
                                                                createState('bahn.' + ConnectionName + '.' + iCounter + '.AbfahrtDelay', "");
                                                                setState('bahn.' + ConnectionName + '.' + iCounter + '.AbfahrtDelay', tAbfahrtDelay, true);
                                                                createState('bahn.' + ConnectionName + '.' + iCounter + '.Ankunft', "");
                                                                setState('bahn.' + ConnectionName + '.' + iCounter + '.Ankunft', tAnkunft, true);
                                                                createState('bahn.' + ConnectionName + '.' + iCounter + '.AnkunftDelay', "");
                                                                setState('bahn.' + ConnectionName + '.' + iCounter + '.AnkunftDelay', tAnkunftDelay, true);
                                                                createState('bahn.' + ConnectionName + '.' + iCounter + '.Dauer', "");
                                                                setState('bahn.' + ConnectionName + '.' + iCounter + '.Dauer', tDauer, true);
                                                                createState('bahn.' + ConnectionName + '.' + iCounter + '.Verspaetung', "");
                                                                setState('bahn.' + ConnectionName + '.' + iCounter + '.Verspaetung', bLate, true);
                                                                createState('bahn.' + ConnectionName + '.' + iCounter + '.Ausfall', "");
                                                                setState('bahn.' + ConnectionName + '.' + iCounter + '.Ausfall', bAusfall, true);
                                                                createState('bahn.' + ConnectionName + '.' + iCounter + '.Puenktlich', "");
                                                                setState('bahn.' + ConnectionName + '.' + iCounter + '.Puenktlich', bOnTime, true);
                                                                createState('bahn.' + ConnectionName + '.' + iCounter + '.Info', "");
                                                                setState('bahn.' + ConnectionName + '.' + iCounter + '.Info', sInfo, true);
                                                            }
                                                            CurrConn = RgxBahnVerbindung.exec(body);
                                                            iCounter++;
                                                        }
                                                        // Update HTML
                                                        let sHTML = ""
                                                        sHTML = '<table><tr><th align="left" colspan="3">' + getState('bahn.' + ConnectionName + '.BhfAbfahrt').val + ' - ' + getState('bahn.' + ConnectionName + '.BhfAnkunft').val + '</th></tr>'
                                                        for (var i = 0; i <= iConnectionCounter; i++) {
                                                            let bDelay = getState('bahn.' + ConnectionName + '.' + i + '.Verspaetung').val;
                                                            let bAusfall = getState('bahn.' + ConnectionName + '.' + i + '.Ausfall').val;
                                                            let bOnTime = getState('bahn.' + ConnectionName + '.' + i + '.Puenktlich').val;
                                                            let sConnInfo = getState('bahn.' + ConnectionName + '.' + i + '.Info').val;
                                                            sHTML = sHTML + '<tr><td>'
                                                            if (bDelay == true) {
                                                                let sAbfahrtDelay = getState('bahn.' + ConnectionName + '.' + i + '.AbfahrtDelay').val;
                                                                if (sAbfahrtDelay != "") {
                                                                    sHTML = sHTML + '<font color="red">' + sAbfahrtDelay + '</font><br/><small>(' + getState('bahn.' + ConnectionName + '.' + i + '.Abfahrt').val + ')</small>';
                                                                } else {
                                                                    sHTML = sHTML + '<font color="red">' + getState('bahn.' + ConnectionName + '.' + i + '.Abfahrt').val + '</font>';
                                                                };
                                                                sHTML = sHTML + '</td><td>';
                                                                let sAnkunftDelay = getState('bahn.' + ConnectionName + '.' + i + '.AnkunftDelay').val;
                                                                if (sAnkunftDelay != "") {
                                                                    sHTML = sHTML + '<font color="red">' + sAnkunftDelay + '</font><br/><small>(' + getState('bahn.' + ConnectionName + '.' + i + '.Ankunft').val + ')</small>';
                                                                } else {
                                                                    sHTML = sHTML + '<font color="red">' + getState('bahn.' + ConnectionName + '.' + i + '.Ankunft').val + '</font>';
                                                                };
                                                                sHTML = sHTML + '</td><td>';
                                                            } else if (bAusfall == true) {
                                                                sHTML = sHTML + '<font color="red"><s>' + getState('bahn.' + ConnectionName + '.' + i + '.Abfahrt').val + '</s></font>';
                                                                sHTML = sHTML + '</td><td>';
                                                                sHTML = sHTML + '<font color="red"><s>' + getState('bahn.' + ConnectionName + '.' + i + '.Ankunft').val + '</s></font>';
                                                                sHTML = sHTML + '</td><td>';
                                                            } else if (bOnTime == true) {
                                                                sHTML = sHTML + '<font color="green">' + getState('bahn.' + ConnectionName + '.' + i + '.Abfahrt').val + '</font></td><td><font color="green">' + getState('bahn.' + ConnectionName + '.' + i + '.Ankunft').val + '</font></td><td>';
                                                            } else if (sConnInfo != "") {
                                                                sHTML = sHTML + '<font color="yellow">' + getState('bahn.' + ConnectionName + '.' + i + '.Abfahrt').val + '</font></td><td><font color="yellow">' + getState('bahn.' + ConnectionName + '.' + i + '.Ankunft').val + '</font></td><td>';
                                                            } else {
                                                                sHTML = sHTML + getState('bahn.' + ConnectionName + '.' + i + '.Abfahrt').val + '</td><td>' + getState('bahn.' + ConnectionName + '.' + i + '.Ankunft').val + '</td><td>';
                                                            };
                                                            sHTML = sHTML + getState('bahn.' + ConnectionName + '.' + i + '.Dauer').val + '</td></tr>';
                                                        }
                                                        sHTML = sHTML + "</table>";
                                                        if (DebugOut == true) { log(sHTML); };
                                                        createState('bahn.' + ConnectionName + '.HTML', "");
                                                        setState('bahn.' + ConnectionName + '.HTML', sHTML, true);
                                                    } else {
                                                        log('Request meldet Fehler: ' + err, 'error');  
                                                    }
                                         
                                                });
                                        }
                                         
                                        schedule("*/3 * * * *" , function(){ 
                                            HoleBahn(Url1, 'LiFr');
                                            HoleBahn(Url2, 'FrLi');
                                        });  
                                        

                                        Die mobile Webseite der Bahn (siehe Parameter URL) gibt standardmäßig drei Verbindungen aus. Wer weniger möchte, kann oben die Variable "ConnectionCounter" entsprechend reduzieren. Mit der Variable "DebugOut" gibts aktuell mit dem Wert "true" erweitertes Logging zur Fehlerbehebung, sonst auf "false" setzen.
                                        Die beiden URL-Variablen enthalten die abzufragenden Routen. Hier im Beispiel einmal von Friedrichshafen nach Lindau und einmal von Lindau nach Friedrichshafen.

                                        Die Hauptfunktion "HoleBahn" holt sich die entsprechende URL und zerlegt den Inhalt dann mit RegEx. Zuerst werden die einzelnen Verbindungen extrahiert. Dann in der While-Schleife die Reisedaten und Verspätungen der einzelnen Verbindungen extrahiert. Danach werden hierfür die States erzeugt. Hier kommt es beim ersten Aufruf zu einem Fehler, da die States asynchron angelegt werden und der direkt folgende SetState dann initial fehlschlägt.

                                        Außerdem erzeuge ich für VIS eine HTML-Darstellung (Tabelle).

                                        Ganz unten wird die Funktion dann in einem Schedule alle drei Minuten (daher das /3) aufgerufen. Übergeben wird der Funktion die oben definierte URL und außerdem der Name der States.

                                        Im Ergebnis sieht das ganze dann so aus:

                                        489e0fae-1e63-41b8-8048-b33ddbf159ab-image.png

                                        Wie gesagt, es ist nicht perfekt, aber für meine Zwecke tut es :)

                                        Gruss Ralf

                                        Edit: Nochmal nachbearbeitet (Verspätungen, Pünktlich, ...)

                                        R 1 Reply Last reply
                                        0
                                        • J Offline
                                          J Offline
                                          jerzimeik
                                          wrote on last edited by
                                          #30

                                          Funktioniert das auch, wenn es keine Verspätung gibt?

                                          Zum Hintergrund: manchmal schreibt die Bahn die "Prognose-Zeit" auch hin, wenn sie identisch mit der Abfahrtszeit ist, manchmal aber auch nicht.

                                          Daher komme ich mit meinen RegEx auch nicht hin, die ich über Parser abfrage.!
                                          db.png

                                          A 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          629

                                          Online

                                          32.6k

                                          Users

                                          82.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe