Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] Aktuelle Abfahrtszeiten Straßenbahn-Haltestelle einlesen ?!?

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    492

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

[gelöst] Aktuelle Abfahrtszeiten Straßenbahn-Haltestelle einlesen ?!?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
17 Beiträge 6 Kommentatoren 3.3k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #2

    In der Konfiguration der Javascript-Instanz unter 'Zusätzliche NPM-Module" eingeben: dvbjs

    Hier ein Beispiel für die Haltestelle "Zellescher Weg":

    var dvb = require('dvbjs');
    
    var stop = 'Zellescher Weg';
    var timeOffset = 1; // how many minutes in the future, 0 for now
    var numResults = 18; // number of results
    var dirs = [];
    
    function Zeiten(obj) {
        var name = 'dvb.' + obj.line + '.' + obj.direction;
        if (dirs.indexOf(name) == -1) {
            dirs.push(name);
            var idAbfahrt = getIdByName(name + '.Abfahrt');
            if(!idAbfahrt) log('Datenpunkte zu ' + name + ' existieren nicht !', 'warn');
            else {
                var idDelay = getIdByName(name + '.Verspätung');
                var abfahrt = formatDate(obj.scheduledTime, 'hh:mm');
    //            log(name + '.Abfahrt: ' + abfahrt);
                setState(idAbfahrt, abfahrt, true);
                setState(idDelay, obj.delayTime, true);
            }
        }    
    }
    
    function getData () {
        dvb.monitor(stop, timeOffset, numResults, function(err, data) {
            if (err) log('Fehler DVB-Abfrage: ' + err, 'error');
            else {
                dirs = [];
                for( var i = 0; i < data.length; i++) {
                    Zeiten(data[i]);
                }
            }    
        });
    }
    
    schedule('* * * * *', getData);  // jede Minute
    
    function createDP(id, name) {
        createState('dvb.' + id + '.Abfahrt', '00:00', {
            type: 'string',
            name: 'dvb.' + name + '.Abfahrt'
        });
        createState('dvb.' + id + '.Verspaetung', 0, {
            type: 'number',
            name: 'dvb.' + name + '.Verspätung',
            min: 0,
            max: 60,
            unit: 'min'
        });
     }
    
    createDP('11.Buehlau', '11.Bühlau');
    createDP('11.Zschertnitz', '11.Zschertnitz');
    createDP('61.Fernsehturm', '61.Fernsehturm');
    createDP('61.E_Karcherallee', '61.E Karcherallee');
    createDP('61.Loebtau', '61.Löbtau');
    createDP('61.Weissig', '61.Weißig');
    

    EDIT: So sieht es dann im Reiter "Objekte" aus:
    493_dvb_dp.jpg

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #3

      Verbesserte Version mit automatischer Erzeugung der Datenpunkte beim ersten Auftreten einer Richtung:

      var dvb = require('dvbjs');
      
      var stop = 'Zellescher Weg';
      var timeOffset = 1; // how many minutes in the future, 0 for now
      var numResults = 18; // number of results
      var dirs = [];
      
      function umlaut(value){
        value = value.replace(/Ä/g, 'Ae');
        value = value.replace(/Ö/g, 'Oe');
        value = value.replace(/Ü/g, 'Ue');
        value = value.replace(/ä/g, 'ae');
        value = value.replace(/ö/g, 'oe');
        value = value.replace(/ü/g, 'ue');
        value = value.replace(/ß/g, 'ss');
        value = value.replace(/ /g, '_');
        value = value.replace(/\./g, '');
        value = value.replace(/,/g, '');
        value = value.replace(/\(/g, '');
        value = value.replace(/\)/g, '');
        return value;
      }
      
      function createDPs(id, name) {
          createState('dvb.' + id + '.Abfahrt', '00:00', {
              type: 'string',
              name: 'dvb.' + name + '.Abfahrt'
          });
          createState('dvb.' + id + '.Verspaetung', 0, {
              type: 'number',
              name: 'dvb.' + name + '.Verspätung',
              min: 0,
              max: 60,
              unit: 'min'
          });
      }
      
      function newDPs(line, dir) {
          var name = line + '.' + dir;
          var id = line + '.' + umlaut(dir);
          createDPs(id, name);
          log('Neue Datenpunkte erstellt zu: ' + name);
      }
      
      function Zeiten(obj) {
          var name = 'dvb.' + obj.line + '.' + obj.direction;
          if (dirs.indexOf(name) == -1) {
              dirs.push(name);
              var idAbfahrt = getIdByName(name + '.Abfahrt');
              if(!idAbfahrt) newDPs(obj.line, obj.direction);
              else {
                  var idDelay = getIdByName(name + '.Verspätung');
                  var abfahrt = formatDate(obj.scheduledTime, 'hh:mm');
      //            log(name + '.Abfahrt: ' + abfahrt);
                  setState(idAbfahrt, abfahrt, true);
                  setState(idDelay, obj.delayTime, true);
              }
          }    
      }
      
      function getData () {
          dvb.monitor(stop, timeOffset, numResults, function(err, data) {
              if (err) log('Fehler DVB-Abfrage: ' + err, 'error');
              else {
                  dirs = [];
                  for( var i = 0; i < data.length; i++) {
                      Zeiten(data[i]);
                  }
              }    
          });
      }
      
      schedule('* * * * *', getData);  // jede Minute
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von
        #4

        Halllo,

        Unglaublich, wie einfach es gehen kann. In meiner Stadt muss ich mich mit dem Parsen der mobilen Webseite des Verkehrsbetriebes rumschlagen und langen Code schreiben, um die nächste Bahn in eine Richtung zu erhalten. Wäre echt gut, auch solche Daten, wie in Dresden zu haben. Aber hier ist man eine Kooperation mit google eingegangen. Google erhält alle Daten für seine Apps, nicht aber die Öffentlichkeit.

        Auf dieser Basis macht ein Adapter auch keinen Sinn.

        Musste ich mal loswerden. :)

        Pix

        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

        1 Antwort Letzte Antwort
        0
        • paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #5

          Eine einfachere Variante schreibt die Abfahrzeiten in 8 Datenpunkte in der Form

          19:00 +2 Linie 11 nach Zschertnitz

          var dvb = require('dvbjs');
          
          var stop = 'Zellescher Weg';
          var timeOffset = 1; // how many minutes in the future, 0 for now
          var numResults = 8; // number of results
          
          function umlaut(value){
            value = value.replace(/Ä/g, 'Ae');
            value = value.replace(/Ö/g, 'Oe');
            value = value.replace(/Ü/g, 'Ue');
            value = value.replace(/ä/g, 'ae');
            value = value.replace(/ö/g, 'oe');
            value = value.replace(/ü/g, 'ue');
            value = value.replace(/ß/g, 'ss');
            value = value.replace(/ /g, '_');
            value = value.replace(/\./g, '');
            value = value.replace(/,/g, '');
            value = value.replace(/\(/g, '');
            value = value.replace(/\)/g, '');
            return value;
          }
          
          var idStop = 'dvb.' + umlaut(stop) + '.';
          
          for(var i = 0; i < numResults; i++) {
              createState(idStop + i, '00:00', {
                  type: 'string',
                  name: 'dvb.' + stop + '.' + i,
                  desc: 'Abfahrt ' + stop
              });
          }
          
          function Zeiten(obj, id) {
              var abfahrt = formatDate(obj.scheduledTime, 'hh:mm');
              setState(id, abfahrt + ' +' + obj.delayTime + ' Linie ' + obj.line + ' nach ' + obj.direction, true);
          }
          
          function getData () {
              dvb.monitor(stop, timeOffset, numResults, function(err, data) {
                  if (err) log('Fehler DVB-Abfrage: ' + err, 'error');
                  else {
                      for( var i = 0; i < data.length; i++) {
                          Zeiten(data[i], idStop + i);
                      }
                  }    
              });
          }
          
          schedule('* * * * *', getData);  // jede Minute
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • R Offline
            R Offline
            Ritschy2000
            schrieb am zuletzt editiert von
            #6

            Ich bin begeistert…. 10000 x DANKE für die Hilfe...

            Leider bekomme ich folgende Fehlermeldung:

            javascript.0 script.js.Straßenbahn.dvbs: Cannot find module 'bluebird' at Module._compile (module.js:409:26), at Object.Module._extensions..js (module.js:416:10), at Module.load (module.js:343:32), at Function.Module._load (module.js:300:12), at Module.require (module.js:353:17), at require (internal/module.js:12:17), at Object. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/dvbjs/index.js:6:14), at Module._compile (module.js:409:26), at Object.Module._extensions..js (module.js:416:10), at Module.load (module.js:343:32), at Function.Module._load (module.js:300:12), at Module.require (module.js:353:17), at require (internal/module.js:12:17), at sandbox.require (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:748:32), at script.js.Straßenbahn.dvbs:1:11

            liegt sicherlich daran, dass ich noch :

            Javascript/Node.js 0.13.2 statt: 1.0.3 installiert habe, oder?

            Werde es mal update und erneut probieren...

            Grüße

            1 Antwort Letzte Antwort
            0
            • R Offline
              R Offline
              Ritschy2000
              schrieb am zuletzt editiert von
              #7

              muss leider noch mal nerven, bekomme es einfach nicht hin:

              habe folgendes gemacht:

              im Bereich Adapter über:

              "installiere aus eigener URL" : https://github.com/kiliankoe/dvbjs installiert:

              LOG:iobroker 2017-07-16 17:24:29.083 info exit 0

              iobroker 2017-07-16 17:24:29.012 info └── request-promise@4.2.1 (stealthy-require@1.1.1, bluebird@3.5.0, tough-cookie@2.3.2, request-promise-core@1.1.1)

              iobroker 2017-07-16 17:24:29.012 info ├── request@2.81.0 (aws-sign2@0.6.0, tunnel-agent@0.6.0, oauth-sign@0.8.2, forever-agent@0.6.1, is-typedarray@1.0.0, caseless@0.12.0, safe-buffer@5.1.1, stringstream@0.0.5, aws4@1.6.0, isstream@0.1.2,

              iobroker 2017-07-16 17:24:29.012 info dvbjs@4.3.5 opt/iobroker/node_modules/dvbjs├── proj4@2.4.3 (wkt-parser@1.2.0, mgrs@1.0.0)

              iobroker 2017-07-16 17:23:50.746 info npm install https://github.com/kiliankoe/dvbjs/tarball/master –production --prefix "/opt/iobroker" (System call)

              iobroker 2017-07-16 17:23:50.362 info install https://github.com/kiliankoe/dvbjs/tarball/master

              iobroker 2017-07-16 17:23:49.032 info url "https://github.com/kiliankoe/dvbjs" --debug

              zusätzliches NPM Modul: "dvbjs" eingetragen, Script kopiert und gestartet:

              folgende Fehlermelung:

              javascript.0 script.js.Straßenbahn.dvbs: Cannot find module 'bluebird' at Module._compile (module.js:409:26), at Object.Module._extensions..js (module.js:416:10), at Module.load (module.js:343:32), at Function.Module._load (module.js:300:12), at Module.require (module.js:353:17), at require (internal/module.js:12:17), at Object. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/dvbjs/index.js:6:14), at Module._compile (module.js:409:26), at Object.Module._extensions..js (module.js:416:10), at Module.load (module.js:343:32), at Function.Module._load (module.js:300:12), at Module.require (module.js:353:17), at require (internal/module.js:12:17), at sandbox.require (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:748:32), at script.js.Straßenbahn.dvbs:1:11

              17:19:14.975 [info] javascript.0 script.js.Straßenbahn.dvbs: registered 0 subscriptions and 1 schedule

              Jemand eine Idee??

              Was habe ich falsch gemacht.

              Danke im Voraus.

              Gruße

              1 Antwort Letzte Antwort
              0
              • paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #8

                @Ritschy2000:

                habe folgendes gemacht:

                im Bereich Adapter über:

                "installiere aus eigener URL" : https://github.com/kiliankoe/dvbjs installiert: `
                Das ist unnötig, da das NPM-Modul, das in der JS-Konfiguration neu eingetragen wird, automatisch installiert wird.
                @Ritschy2000:

                javascript.0 script.js.Straßenbahn.dvbs: Cannot find module 'bluebird' `
                Welche node-Version ? Auf Konsole prüfen mit node -v .

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Antwort Letzte Antwort
                0
                • R Offline
                  R Offline
                  Ritschy2000
                  schrieb am zuletzt editiert von
                  #9

                  ahhh, okay. war mir nicht bekannt, dass es durch den Eintrag mit installiert wird…

                  Node Version ist 4.7.0

                  welche Version wird empfohlen??

                  1 Antwort Letzte Antwort
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #10

                    Version 4.7.0 sollte o.k. sein. Existiert bei Dir das Verzeichnis ?
                    > ioBroker\node_modules\iobroker.javascript\node_modules\dvbjs\node_modules\bluebird
                    Ich würde einen zweiten Versuch wagen: dvbjs aus der Konfig löschen und Adapter neu starten (speichern) und anschließend wieder dvbjs eintragen. Vielleicht wird das Modul 'bluebird' dann installiert ?

                    Oder installiere 'bluebird' manuell

                    npm install --save bluebird
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Antwort Letzte Antwort
                    0
                    • R Offline
                      R Offline
                      Ritschy2000
                      schrieb am zuletzt editiert von
                      #11

                      geht leider immer noch nicht…

                      bluebird war im Verzeichnis nicht vorhanden, habe es jetzt installiert:

                      /opt/iobroker/node_modules/dvbjs/node_modules# ls

                      bluebird proj4 request request-promise

                      /opt/iobroker/node_modules/dvbjs/node_modules/bluebird# ls

                      changelog.md js LICENSE package.json README.md

                      sollte alles vorhanden sein. Reboot habe ich auch gemacht...

                      Fehlermeldung bleibt: :(

                      javascript.0 script.js.dvbjs.dvbs: Cannot find module 'bluebird' at Module._compile (module.js:409:26), at Object.Module._extensions..js (module.js:416:10), at Module.load (module.js:343:32), at Function.Module._load (module.js:300:12), at Module.require (module.js:353:17), at require (internal/module.js:12:17), at Object. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/dvbjs/index.js:6:14), at Module._compile (module.js:409:26), at Object.Module._extensions..js (module.js:416:10), at Module.load (module.js:343:32), at Function.Module._load (module.js:300:12), at Module.require (module.js:353:17), at require (internal/module.js:12:17), at sandbox.require (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:748:32), at script.js.dvbjs.dvbs:1:11

                      1 Antwort Letzte Antwort
                      0
                      • R Offline
                        R Offline
                        Ritschy2000
                        schrieb am zuletzt editiert von
                        #12

                        Jetzt habe ich es doch noch hinbekommen:

                        unter opt/iobroker/node_modules/iobroker.javascript/node_modules/dvbjs/node_modules/

                        Bluebird installiert, jetzt läuft es…

                        VIELEN VIELEN DANK!

                        Gruß

                        1 Antwort Letzte Antwort
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von paul53
                          #13

                          @Ritschy2000:

                          Jetzt habe ich es doch noch hinbekommen:

                          Es freut mich, das zu lesen :D

                          Dann markiere bitte noch das Thema als gelöst (im ersten Beitrag).

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          1 Antwort Letzte Antwort
                          0
                          • R Offline
                            R Offline
                            Ritschy2000
                            schrieb am zuletzt editiert von
                            #14

                            erledigt. :)

                            1 Antwort Letzte Antwort
                            0
                            • D Offline
                              D Offline
                              DUDU
                              schrieb am zuletzt editiert von
                              #15

                              hallo ich würde gerne so etwas mit dem VBN Haltestellenfahrplan umsetzen.

                              Kann mir jemand eine Möglichkeit nennen?

                              1 Antwort Letzte Antwort
                              0
                              • R Offline
                                R Offline
                                RMortan
                                schrieb am zuletzt editiert von
                                #16

                                Hallo habe grad versucht das um zusetzen… Leider bleiben mir um Script die Zeiten für Abfahrten auf 00:00 stehen woran kann das liegen einer ne idee.

                                Liebe Grüße aus Dresden

                                1 Antwort Letzte Antwort
                                0
                                • S Offline
                                  S Offline
                                  stubennatter
                                  schrieb am zuletzt editiert von
                                  #17

                                  Hallo,

                                  geht scheinbar nicht mehr oder?
                                  Weil bekomme eine Fehlermeldung wenn ich per eigen URL installieren möchte:

                                  Fertig mit Fehler: (node:13094) UnhandledPromiseRejectionWarning: ParserError: Protocol error, got "H" as reply type byte. Please report this. at handleError (/opt/iobroker/node_modules/redis-parser/lib/parser.js:190:15) at parseType (/opt/iobroker/node_modules/redis-parser/lib/parser.js:304:14)

                                  Gruß Micha

                                  1 Antwort Letzte Antwort
                                  0
                                  Antworten
                                  • In einem neuen Thema antworten
                                  Anmelden zum Antworten
                                  • Älteste zuerst
                                  • Neuste zuerst
                                  • Meiste Stimmen


                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  389

                                  Online

                                  32.5k

                                  Benutzer

                                  81.8k

                                  Themen

                                  1.3m

                                  Beiträge
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                  ioBroker Community 2014-2025
                                  logo
                                  • Anmelden

                                  • Du hast noch kein Konto? Registrieren

                                  • Anmelden oder registrieren, um zu suchen
                                  • Erster Beitrag
                                    Letzter Beitrag
                                  0
                                  • Home
                                  • Aktuell
                                  • Tags
                                  • Ungelesen 0
                                  • Kategorien
                                  • Unreplied
                                  • Beliebt
                                  • GitHub
                                  • Docu
                                  • Hilfe