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. Off Topic
  4. Website auslesen/JSON parsen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Website auslesen/JSON parsen

Scheduled Pinned Locked Moved Off Topic
30 Posts 6 Posters 3.5k Views 5 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.
  • NegaleinN Negalein

    @paul53 sagte in Website auslesen/JSON parsen:

    Es sind sogar 3 Stationen. Welche wird benötigt?
    Den Namen der benötigten Station anpassen:

    Danke

    Ja, Schärding wird benötigt.
    Also auch wenn im JSON mit ä geschrieben, muss es im Script mit ae sein?

    paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by
    #21

    @negalein sagte: muss es im Script mit ae sein?

    Ich habe nur den Funktionsbezeichner geändert, da ich in Bezeichnern Umlaute vermeide. Es funktioniert wahrscheinlich auch mit "ä".
    Der Stationsname muss mit "ä" geschrieben werden wie im JSON.

    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 Reply Last reply
    0
    • NegaleinN Negalein

      @paul53 sagte in Website auslesen/JSON parsen:

      Es sind sogar 3 Stationen. Welche wird benötigt?
      Den Namen der benötigten Station anpassen:

      Danke

      Ja, Schärding wird benötigt.
      Also auch wenn im JSON mit ä geschrieben, muss es im Script mit ae sein?

      ? Offline
      ? Offline
      A Former User
      wrote on last edited by
      #22

      @negalein Hi, hatte noch keine Zeit, aber so wie @paul53 schreibt muesste es passen.

      Umlaute so, wie es die json hergibt.

      1 Reply Last reply
      0
      • NegaleinN Offline
        NegaleinN Offline
        Negalein
        Global Moderator
        wrote on last edited by
        #23

        @paul53

        habe es nun so

        // Pegelonline script by ilovegym66
        // 
         
        var request = require('request');
        var url = 'https://api.pegelalarm.at/api/station/1.0/list?qStationName=Schärding';
        var sourceDate;
        // var trend;
        var value;
        // var stateMnwMhw;
        // var stateNswHsw;
         
        var idsourceDate = '0_userdata.0.Pegelalarm.Schaerding.sourceDate';
        // var idtrend = '0_userdata.0.Pegelalarm.Schärding.trend';
        var idvalue = '0_userdata.0.Pegelalarm.Schaerding.value';
        // var idstateMnwMhw = '0_userdata.0.Pegelalarm.Schärding.stateMnwMhw';
        // var idstateNswHsw = '0_userdata.0.Pegelalarm.Schärding.stateNswHsw';
         
        createState('0_userdata.0.Pegelalarm.Schaerding.sourceDate', {
            name: 'sourceDate',
            });
         
        createState('0_userdata.0.Pegelalarm.Schaerding.value', {
            name: 'value',
            });
         
        // createState('0_userdata.0.Pegelalarm.Schärding.trend', {
        //     name: 'trend',
        //     });
         
        // createState('0_userdata.0.Pegelalarm.Schärding.stateMnwMhw', {
        //     name: 'stateMnwMhw',
        //     });
         
        // createState('0_userdata.0.Pegelalarm.Schärding.stateNswHsw', {
        //     name: 'stateNswHsw',
        //     });    
         
         
         
         
        function PegelSchaerding() { 
        request(url, function ( err, state, body){
            if (err) {
                log("Fehler aufgetreten: " + err);
            } else {
            var obj = JSON.parse(body);
            sourceDate = obj.sourceDate;
            value = obj.value;
        //     trend = obj.trend;
        //     stateMnwMhw = obj.stateMnwMhw;
        //     stateNswHsw = obj.stateNswHsw;
         
            setState(idsourceDate, sourceDate);
        //    setState(idtrend, trend);
            setState(idvalue, value);
        //    setState(idstateMnwMhw, stateMnwMhw);
        //    setState(idstateNswHsw, stateNswHsw);
            } 
        });
        }
         
        schedule('*/21 * * * *', PegelSchaerding);
        

        Aber auch nach den 21 Minuten lt. Schedule steht nichts in den beiden DP 0_userdata.0.Pegelalarm.Schaerding.sourceDate und 0_userdata.0.Pegelalarm.Schaerding.value.

        Könntest du es bei dir testen?

        ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
        ° Node.js Fixer ---> iob nodejs-update
        ° Fixer ---> iob fix

        paul53P 1 Reply Last reply
        0
        • NegaleinN Negalein

          @paul53

          habe es nun so

          // Pegelonline script by ilovegym66
          // 
           
          var request = require('request');
          var url = 'https://api.pegelalarm.at/api/station/1.0/list?qStationName=Schärding';
          var sourceDate;
          // var trend;
          var value;
          // var stateMnwMhw;
          // var stateNswHsw;
           
          var idsourceDate = '0_userdata.0.Pegelalarm.Schaerding.sourceDate';
          // var idtrend = '0_userdata.0.Pegelalarm.Schärding.trend';
          var idvalue = '0_userdata.0.Pegelalarm.Schaerding.value';
          // var idstateMnwMhw = '0_userdata.0.Pegelalarm.Schärding.stateMnwMhw';
          // var idstateNswHsw = '0_userdata.0.Pegelalarm.Schärding.stateNswHsw';
           
          createState('0_userdata.0.Pegelalarm.Schaerding.sourceDate', {
              name: 'sourceDate',
              });
           
          createState('0_userdata.0.Pegelalarm.Schaerding.value', {
              name: 'value',
              });
           
          // createState('0_userdata.0.Pegelalarm.Schärding.trend', {
          //     name: 'trend',
          //     });
           
          // createState('0_userdata.0.Pegelalarm.Schärding.stateMnwMhw', {
          //     name: 'stateMnwMhw',
          //     });
           
          // createState('0_userdata.0.Pegelalarm.Schärding.stateNswHsw', {
          //     name: 'stateNswHsw',
          //     });    
           
           
           
           
          function PegelSchaerding() { 
          request(url, function ( err, state, body){
              if (err) {
                  log("Fehler aufgetreten: " + err);
              } else {
              var obj = JSON.parse(body);
              sourceDate = obj.sourceDate;
              value = obj.value;
          //     trend = obj.trend;
          //     stateMnwMhw = obj.stateMnwMhw;
          //     stateNswHsw = obj.stateNswHsw;
           
              setState(idsourceDate, sourceDate);
          //    setState(idtrend, trend);
              setState(idvalue, value);
          //    setState(idstateMnwMhw, stateMnwMhw);
          //    setState(idstateNswHsw, stateNswHsw);
              } 
          });
          }
           
          schedule('*/21 * * * *', PegelSchaerding);
          

          Aber auch nach den 21 Minuten lt. Schedule steht nichts in den beiden DP 0_userdata.0.Pegelalarm.Schaerding.sourceDate und 0_userdata.0.Pegelalarm.Schaerding.value.

          Könntest du es bei dir testen?

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #24

          @negalein sagte: Könntest du es bei dir testen?

          Ich habe es mit dieser URL erfolgreich getestet:

          var url = 'https://api.pegelalarm.at/api/station/1.0/list?qStationName=Sch%C3%A4rding';
          

          Mit log() anstelle von setState():

          18:21:09.169	info	javascript.0 (1916) script.js.common.Neuer_Test: 24.03.2021T17:30:00+0100
          18:21:09.169	info	javascript.0 (1916) script.js.common.Neuer_Test: 361
          

          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

          NegaleinN 1 Reply Last reply
          0
          • paul53P paul53

            @negalein sagte: Könntest du es bei dir testen?

            Ich habe es mit dieser URL erfolgreich getestet:

            var url = 'https://api.pegelalarm.at/api/station/1.0/list?qStationName=Sch%C3%A4rding';
            

            Mit log() anstelle von setState():

            18:21:09.169	info	javascript.0 (1916) script.js.common.Neuer_Test: 24.03.2021T17:30:00+0100
            18:21:09.169	info	javascript.0 (1916) script.js.common.Neuer_Test: 361
            
            NegaleinN Offline
            NegaleinN Offline
            Negalein
            Global Moderator
            wrote on last edited by
            #25

            @paul53 sagte in Website auslesen/JSON parsen:

            Ich habe es mit dieser URL erfolgreich getestet:

            Ich bekomme keine Daten

            Egal ob ich https://api.pegelalarm.at/api/station/1.0/list?qStationName=Sch%C3%A4rding oder https://api.pegelalarm.at/api/station/1.0/list?qStationName=Sch%C3%A4rding verwende.

            So schaut das Script aus.

            // Pegelonline script by ilovegym66
            // 
             
            var request = require('request');
            var url = 'https://api.pegelalarm.at/api/station/1.0/list?qStationName=Sch%C3%A4rding';
            var sourceDate;
            // var trend;
            var value;
            // var stateMnwMhw;
            // var stateNswHsw;
             
            var idsourceDate = '0_userdata.0.Pegelalarm.Schaerding.sourceDate';
            // var idtrend = '0_userdata.0.Pegelalarm.Schärding.trend';
            var idvalue = '0_userdata.0.Pegelalarm.Schaerding.value';
            // var idstateMnwMhw = '0_userdata.0.Pegelalarm.Schärding.stateMnwMhw';
            // var idstateNswHsw = '0_userdata.0.Pegelalarm.Schärding.stateNswHsw';
             
            createState('0_userdata.0.Pegelalarm.Schaerding.sourceDate', {
                name: 'sourceDate',
                });
             
            createState('0_userdata.0.Pegelalarm.Schaerding.value', {
                name: 'value',
                });
             
            // createState('0_userdata.0.Pegelalarm.Schärding.trend', {
            //     name: 'trend',
            //     });
             
            // createState('0_userdata.0.Pegelalarm.Schärding.stateMnwMhw', {
            //     name: 'stateMnwMhw',
            //     });
             
            // createState('0_userdata.0.Pegelalarm.Schärding.stateNswHsw', {
            //     name: 'stateNswHsw',
            //     });    
             
             
             
             
            function PegelSchaerding() { 
            request(url, function ( err, state, body){
                if (err) {
                    log("Fehler aufgetreten: " + err);
                } else {
                var obj = JSON.parse(body);
                sourceDate = obj.sourceDate;
                value = obj.value;
            //     trend = obj.trend;
            //     stateMnwMhw = obj.stateMnwMhw;
            //     stateNswHsw = obj.stateNswHsw;
             
                setState(idsourceDate, sourceDate);
            //    setState(idtrend, trend);
                setState(idvalue, value);
            //    setState(idstateMnwMhw, stateMnwMhw);
            //    setState(idstateNswHsw, stateNswHsw);
                } 
            });
            }
             
            schedule('*/21 * * * *', PegelSchaerding);
            

            Siehst du noch wo einen Fehler?

            ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
            ° Node.js Fixer ---> iob nodejs-update
            ° Fixer ---> iob fix

            paul53P 1 Reply Last reply
            0
            • NegaleinN Negalein

              @paul53 sagte in Website auslesen/JSON parsen:

              Ich habe es mit dieser URL erfolgreich getestet:

              Ich bekomme keine Daten

              Egal ob ich https://api.pegelalarm.at/api/station/1.0/list?qStationName=Sch%C3%A4rding oder https://api.pegelalarm.at/api/station/1.0/list?qStationName=Sch%C3%A4rding verwende.

              So schaut das Script aus.

              // Pegelonline script by ilovegym66
              // 
               
              var request = require('request');
              var url = 'https://api.pegelalarm.at/api/station/1.0/list?qStationName=Sch%C3%A4rding';
              var sourceDate;
              // var trend;
              var value;
              // var stateMnwMhw;
              // var stateNswHsw;
               
              var idsourceDate = '0_userdata.0.Pegelalarm.Schaerding.sourceDate';
              // var idtrend = '0_userdata.0.Pegelalarm.Schärding.trend';
              var idvalue = '0_userdata.0.Pegelalarm.Schaerding.value';
              // var idstateMnwMhw = '0_userdata.0.Pegelalarm.Schärding.stateMnwMhw';
              // var idstateNswHsw = '0_userdata.0.Pegelalarm.Schärding.stateNswHsw';
               
              createState('0_userdata.0.Pegelalarm.Schaerding.sourceDate', {
                  name: 'sourceDate',
                  });
               
              createState('0_userdata.0.Pegelalarm.Schaerding.value', {
                  name: 'value',
                  });
               
              // createState('0_userdata.0.Pegelalarm.Schärding.trend', {
              //     name: 'trend',
              //     });
               
              // createState('0_userdata.0.Pegelalarm.Schärding.stateMnwMhw', {
              //     name: 'stateMnwMhw',
              //     });
               
              // createState('0_userdata.0.Pegelalarm.Schärding.stateNswHsw', {
              //     name: 'stateNswHsw',
              //     });    
               
               
               
               
              function PegelSchaerding() { 
              request(url, function ( err, state, body){
                  if (err) {
                      log("Fehler aufgetreten: " + err);
                  } else {
                  var obj = JSON.parse(body);
                  sourceDate = obj.sourceDate;
                  value = obj.value;
              //     trend = obj.trend;
              //     stateMnwMhw = obj.stateMnwMhw;
              //     stateNswHsw = obj.stateNswHsw;
               
                  setState(idsourceDate, sourceDate);
              //    setState(idtrend, trend);
                  setState(idvalue, value);
              //    setState(idstateMnwMhw, stateMnwMhw);
              //    setState(idstateNswHsw, stateNswHsw);
                  } 
              });
              }
               
              schedule('*/21 * * * *', PegelSchaerding);
              

              Siehst du noch wo einen Fehler?

              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #26

              @negalein sagte: Siehst du noch wo einen Fehler?

              Die Funktion, die ich gepostet habe, sieht ganz anders aus.
              Versuche es damit:

              const url = 'https://api.pegelalarm.at/api/station/1.0/list?qStationName=Sch%C3%A4rding';
              const idsourceDate = '0_userdata.0.Pegelalarm.Schaerding.sourceDate';
              const idvalue = '0_userdata.0.Pegelalarm.Schaerding.value';
              
              function PegelSchaerding() { 
                  request(url, function(err, state, body) {
                      if (err) {
                          log("Fehler aufgetreten: " + err);
                      } else {
                          let stations = JSON.parse(body).payload.stations;
                          for(let i = 0; i < stations.length; i++) {
                              if(stations[i].stationName == 'Schärding') { 
                                  let sourceDate = stations[i].data[0].sourceDate;
                                  let value = stations[i].data[0].value;
                                  setState(idsourceDate, sourceDate, true);
                                  setState(idvalue, value, true);
                                  break;
                              }
                          }
                      } 
                  });
              }
              
              schedule('*/21 * * * *', PegelSchaerding);
              

              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

              NegaleinN 2 Replies Last reply
              1
              • paul53P paul53

                @negalein sagte: Siehst du noch wo einen Fehler?

                Die Funktion, die ich gepostet habe, sieht ganz anders aus.
                Versuche es damit:

                const url = 'https://api.pegelalarm.at/api/station/1.0/list?qStationName=Sch%C3%A4rding';
                const idsourceDate = '0_userdata.0.Pegelalarm.Schaerding.sourceDate';
                const idvalue = '0_userdata.0.Pegelalarm.Schaerding.value';
                
                function PegelSchaerding() { 
                    request(url, function(err, state, body) {
                        if (err) {
                            log("Fehler aufgetreten: " + err);
                        } else {
                            let stations = JSON.parse(body).payload.stations;
                            for(let i = 0; i < stations.length; i++) {
                                if(stations[i].stationName == 'Schärding') { 
                                    let sourceDate = stations[i].data[0].sourceDate;
                                    let value = stations[i].data[0].value;
                                    setState(idsourceDate, sourceDate, true);
                                    setState(idvalue, value, true);
                                    break;
                                }
                            }
                        } 
                    });
                }
                
                schedule('*/21 * * * *', PegelSchaerding);
                
                NegaleinN Offline
                NegaleinN Offline
                Negalein
                Global Moderator
                wrote on last edited by
                #27

                @paul53 sagte in Website auslesen/JSON parsen:

                Versuche es damit:

                Danke, damit hats funktioniert! :)

                ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                ° Node.js Fixer ---> iob nodejs-update
                ° Fixer ---> iob fix

                1 Reply Last reply
                0
                • paul53P paul53

                  @negalein sagte: Siehst du noch wo einen Fehler?

                  Die Funktion, die ich gepostet habe, sieht ganz anders aus.
                  Versuche es damit:

                  const url = 'https://api.pegelalarm.at/api/station/1.0/list?qStationName=Sch%C3%A4rding';
                  const idsourceDate = '0_userdata.0.Pegelalarm.Schaerding.sourceDate';
                  const idvalue = '0_userdata.0.Pegelalarm.Schaerding.value';
                  
                  function PegelSchaerding() { 
                      request(url, function(err, state, body) {
                          if (err) {
                              log("Fehler aufgetreten: " + err);
                          } else {
                              let stations = JSON.parse(body).payload.stations;
                              for(let i = 0; i < stations.length; i++) {
                                  if(stations[i].stationName == 'Schärding') { 
                                      let sourceDate = stations[i].data[0].sourceDate;
                                      let value = stations[i].data[0].value;
                                      setState(idsourceDate, sourceDate, true);
                                      setState(idvalue, value, true);
                                      break;
                                  }
                              }
                          } 
                      });
                  }
                  
                  schedule('*/21 * * * *', PegelSchaerding);
                  
                  NegaleinN Offline
                  NegaleinN Offline
                  Negalein
                  Global Moderator
                  wrote on last edited by
                  #28

                  @paul53 sagte in Website auslesen/JSON parsen:

                  Die Funktion, die ich gepostet habe,

                  Noch eine Frage.
                  Wenn ich mehrere Messstellen abfragen möchte, ist es dann besser für jede Messstelle ein eigenes Script, oder kann man in dem bestehendem mehrere einfügen?

                  Es ginge noch um diese zusätzlichen Messstellen.
                  https://api.pegelalarm.at/api/station/1.0/list?qStationName=Pramerdorf
                  https://api.pegelalarm.at/api/station/1.0/list?qStationName=Passau%20Ingling
                  https://api.pegelalarm.at/api/station/1.0/list?qStationName=Passau%20Marienbr%C3%BCcke

                  ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                  ° Node.js Fixer ---> iob nodejs-update
                  ° Fixer ---> iob fix

                  paul53P 1 Reply Last reply
                  0
                  • NegaleinN Negalein

                    @paul53 sagte in Website auslesen/JSON parsen:

                    Die Funktion, die ich gepostet habe,

                    Noch eine Frage.
                    Wenn ich mehrere Messstellen abfragen möchte, ist es dann besser für jede Messstelle ein eigenes Script, oder kann man in dem bestehendem mehrere einfügen?

                    Es ginge noch um diese zusätzlichen Messstellen.
                    https://api.pegelalarm.at/api/station/1.0/list?qStationName=Pramerdorf
                    https://api.pegelalarm.at/api/station/1.0/list?qStationName=Passau%20Ingling
                    https://api.pegelalarm.at/api/station/1.0/list?qStationName=Passau%20Marienbr%C3%BCcke

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by
                    #29

                    @negalein sagte: kann man in dem bestehendem mehrere einfügen?

                    Man kann das Skript um mehrere Messstellen erweitern. Gibt es zeitliche Einschränkungen beim Zugriff auf die API?

                    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

                    NegaleinN 1 Reply Last reply
                    0
                    • paul53P paul53

                      @negalein sagte: kann man in dem bestehendem mehrere einfügen?

                      Man kann das Skript um mehrere Messstellen erweitern. Gibt es zeitliche Einschränkungen beim Zugriff auf die API?

                      NegaleinN Offline
                      NegaleinN Offline
                      Negalein
                      Global Moderator
                      wrote on last edited by
                      #30

                      @paul53 sagte in Website auslesen/JSON parsen:

                      Gibt es zeitliche Einschränkungen beim Zugriff auf die API?

                      Kann ich leider nicht sagen, da keine Doku zur 1.0 existiert.

                      Dann erstell ich besser getrennte Scripte mit unterschiedlichen Schedules.

                      ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                      ° Node.js Fixer ---> iob nodejs-update
                      ° Fixer ---> iob fix

                      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

                      446

                      Online

                      32.6k

                      Users

                      82.2k

                      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