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. JavaScript
  5. [gelöst]JSON.parse Problem mit WienerLinien Daten

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

[gelöst]JSON.parse Problem mit WienerLinien Daten

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
5 Beiträge 2 Kommentatoren 527 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.
  • S Offline
    S Offline
    Stephan66
    schrieb am zuletzt editiert von Stephan66
    #1

    Ich habe nun folgendes Problem. Die Wiener Linien stellen mit einem Aufruf (z.B. Abfahrtsdaten77A-Lusthaus JSON Daten für den Abfahrtsmonitor zur Verfügung.


    {"data":{"monitors":[{"locationStop":{"type":"Feature","geometry":{"type":"Point","coordinates":[16.4401136,48.1934097]},"properties":{"name":"60200818","title":"Lusthaus, Aspernallee","municipality":"Wien","municipalityId":90001,"type":"stop","coordName":"WGS84","attributes":{"rbl":2139}}},"lines":[{"name":"77A","towards":"Rennweg S","direction":"R","platform":"2","richtungsId":"2","barrierFree":true,"realtimeSupported":true,"trafficjam":false,"departures":{"departure":[{"departureTime":{"timePlanned":"2020-02-02T18:27:00.000+0100","timeReal":"2020-02-02T18:27:00.000+0100","countdown":8}},{"departureTime":{"timePlanned":"2020-02-02T18:37:00.000+0100","timeReal":"2020-02-02T18:37:00.000+0100","countdown":18}},{"departureTime":{"timePlanned":"2020-02-02T18:47:00.000+0100","timeReal":"2020-02-02T18:47:00.000+0100","countdown":28}},{"departureTime":{"timePlanned":"2020-02-02T18:57:00.000+0100","timeReal":"2020-02-02T18:57:00.000+0100","countdown":38}},{"departureTime":{"timePlanned":"2020-02-02T19:07:00.000+0100","timeReal":"2020-02-02T19:07:00.000+0100","countdown":48}},{"departureTime":{"timePlanned":"2020-02-02T19:17:00.000+0100","timeReal":"2020-02-02T19:17:00.000+0100","countdown":58}},{"departureTime":{"timePlanned":"2020-02-02T19:27:00.000+0100","timeReal":"2020-02-02T19:27:00.000+0100","countdown":68}}]},"type":"ptBusCity","lineId":477}],"attributes":{}}]},"message":{"value":"OK","messageCode":1,"serverTime":"2020-02-02T18:18:38.000+0100"}}

    Sind also die Rohdaten.
    mit folgendem Code

    on({id: "parser.0.WL77A", change: 'any'}, function(obj) {
    var gasStation = JSON.parse(obj.state.val);
    if (!Array.isArray(gasStation) ) {
    log ("Array nicht angelegt!");
    return;
    }
    if (gasStation.length === 0) {
    log ("Array hat Länge 0");
    return;
    }
    var myStation = obj.data.monitors[0].locationStop.properties.title;
    log ("Station: " + myStation);

    komme ich nur bis: Array nicht angelegt!
    Da klappt das parsen wohl nicht.
    Im Adapter habe ich wie folgt eingestellt:
    ![Bild Text](3ef11c63-731c-4db8-b089-8f43f4a49bfc-grafik.png Bild Link)
    Was mache ich da falsch?

    paul53P 1 Antwort Letzte Antwort
    0
    • S Stephan66

      Ich habe nun folgendes Problem. Die Wiener Linien stellen mit einem Aufruf (z.B. Abfahrtsdaten77A-Lusthaus JSON Daten für den Abfahrtsmonitor zur Verfügung.


      {"data":{"monitors":[{"locationStop":{"type":"Feature","geometry":{"type":"Point","coordinates":[16.4401136,48.1934097]},"properties":{"name":"60200818","title":"Lusthaus, Aspernallee","municipality":"Wien","municipalityId":90001,"type":"stop","coordName":"WGS84","attributes":{"rbl":2139}}},"lines":[{"name":"77A","towards":"Rennweg S","direction":"R","platform":"2","richtungsId":"2","barrierFree":true,"realtimeSupported":true,"trafficjam":false,"departures":{"departure":[{"departureTime":{"timePlanned":"2020-02-02T18:27:00.000+0100","timeReal":"2020-02-02T18:27:00.000+0100","countdown":8}},{"departureTime":{"timePlanned":"2020-02-02T18:37:00.000+0100","timeReal":"2020-02-02T18:37:00.000+0100","countdown":18}},{"departureTime":{"timePlanned":"2020-02-02T18:47:00.000+0100","timeReal":"2020-02-02T18:47:00.000+0100","countdown":28}},{"departureTime":{"timePlanned":"2020-02-02T18:57:00.000+0100","timeReal":"2020-02-02T18:57:00.000+0100","countdown":38}},{"departureTime":{"timePlanned":"2020-02-02T19:07:00.000+0100","timeReal":"2020-02-02T19:07:00.000+0100","countdown":48}},{"departureTime":{"timePlanned":"2020-02-02T19:17:00.000+0100","timeReal":"2020-02-02T19:17:00.000+0100","countdown":58}},{"departureTime":{"timePlanned":"2020-02-02T19:27:00.000+0100","timeReal":"2020-02-02T19:27:00.000+0100","countdown":68}}]},"type":"ptBusCity","lineId":477}],"attributes":{}}]},"message":{"value":"OK","messageCode":1,"serverTime":"2020-02-02T18:18:38.000+0100"}}

      Sind also die Rohdaten.
      mit folgendem Code

      on({id: "parser.0.WL77A", change: 'any'}, function(obj) {
      var gasStation = JSON.parse(obj.state.val);
      if (!Array.isArray(gasStation) ) {
      log ("Array nicht angelegt!");
      return;
      }
      if (gasStation.length === 0) {
      log ("Array hat Länge 0");
      return;
      }
      var myStation = obj.data.monitors[0].locationStop.properties.title;
      log ("Station: " + myStation);

      komme ich nur bis: Array nicht angelegt!
      Da klappt das parsen wohl nicht.
      Im Adapter habe ich wie folgt eingestellt:
      ![Bild Text](3ef11c63-731c-4db8-b089-8f43f4a49bfc-grafik.png Bild Link)
      Was mache ich da falsch?

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @Stephan66 sagte:

      Was mache ich da falsch?

      Der "Umweg" über den Parser-Adapter ist nicht nötig, da man den JSON direkt per request() von der Webseite einlesen kann. Welche Werte brauchst Du ?

      Wien77A.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
      • S Offline
        S Offline
        Stephan66
        schrieb am zuletzt editiert von
        #3

        Vielen Dank für die rasche Antwort.
        Benötigt werden nur die Daten von departure: "0"-"3" TimePlanned, TimeReal und countdown.
        Also eigentlich nur diese 12 Werte. Sollten dann in Datenpunkte geschrieben werden - dürfte aber dann das geringere Problem sein.

        paul53P 1 Antwort Letzte Antwort
        0
        • S Stephan66

          Vielen Dank für die rasche Antwort.
          Benötigt werden nur die Daten von departure: "0"-"3" TimePlanned, TimeReal und countdown.
          Also eigentlich nur diese 12 Werte. Sollten dann in Datenpunkte geschrieben werden - dürfte aber dann das geringere Problem sein.

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @Stephan66 sagte:

          "0"-"3" TimePlanned, TimeReal und countdown.

          Anstelle von log in Datenpunkte schreiben:

          const url = 'https://www.wienerlinien.at/ogd_realtime/monitor?rbl=2139';
          
          function abfahrten() {
              request(url, function(error, response, result) {
                  let zeiten = JSON.parse(result).data.monitors[0].lines[0].departures.departure;
                  let anzahl = zeiten.length;
                  if(anzahl > 4) anzahl = 4;
                  for(let i = 0; i < anzahl; i++) {
                      log(zeiten[i].departureTime.timePlanned);
                      log(zeiten[i].departureTime.timeReal);
                      log(zeiten[i].departureTime.countdown);
                 }
              });
          }
          
          schedule('* * * * *', abfahrten); // 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
          • S Offline
            S Offline
            Stephan66
            schrieb am zuletzt editiert von
            #5

            @paul53 sagte in JSON.parse Problem mit WienerLinien Daten:

            const url = 'https://www.wienerlinien.at/ogd_realtime/monitor?rbl=2139';

            Super. Klappt. Vielen Dank.
            Da habe ich wohl über zu viele Ecken gedacht.
            Ich bastle dann mal weiter.

            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

            296

            Online

            32.4k

            Benutzer

            81.5k

            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