Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    5
    1
    58

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    838

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

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
5 Beiträge 2 Kommentatoren 605 Aufrufe 1 Beobachtet
  • Ä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

            Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

            Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

            Mit deinem Input könnte dieser Beitrag noch besser werden 💗

            Registrieren Anmelden
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            500

            Online

            32.8k

            Benutzer

            82.7k

            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