Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Website auslesen/JSON parsen

NEWS

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

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

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

Website auslesen/JSON parsen

Website auslesen/JSON parsen

Scheduled Pinned Locked Moved Off Topic
30 Posts 6 Posters 3.4k 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.
  • L Offline
    L Offline
    lanig iro
    wrote on last edited by
    #1

    Hallo zusammen,

    eine Frage die schon 100. mal gefragt wurde. Aber ich drehe mich im Kreis und brauche ein paar Denkanstöße.

    Ich möchte den Rheinpegel in meiner InfluxDB loggen und in Grafana darstellen. Wie mache ich das am besten?

    Telegraf für die InfluxDB?
    Blockly Skript?
    Parser Adapter?

    Die Pegelstände werden über eine REST-API bereitgestellt:

    https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/duisburg-ruhrort/W/currentmeasurement.json

    {
    "timestamp": "2021-02-18T15:45:00+01:00",
    "value": 519.0,
    "trend": -1,
    "stateMnwMhw": "normal",
    "stateNswHsw": "normal"
    }

    Alle 8 h würde ich gerne den aktuellen Wert abgreifen und irgendwie in einen Datenpunkt bekommen. Ich habe es mit dem Perser Adapter versucht, aber da Scheiter ich (glaube ich) am RegEx Eintrag. Der Datenpunkt bleibt einfach leer wenn ich bei RegEx z. B. value eingebe.

    Vielen Dank!

    HomoranH 1 Reply Last reply
    0
    • L lanig iro

      Hallo zusammen,

      eine Frage die schon 100. mal gefragt wurde. Aber ich drehe mich im Kreis und brauche ein paar Denkanstöße.

      Ich möchte den Rheinpegel in meiner InfluxDB loggen und in Grafana darstellen. Wie mache ich das am besten?

      Telegraf für die InfluxDB?
      Blockly Skript?
      Parser Adapter?

      Die Pegelstände werden über eine REST-API bereitgestellt:

      https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/duisburg-ruhrort/W/currentmeasurement.json

      {
      "timestamp": "2021-02-18T15:45:00+01:00",
      "value": 519.0,
      "trend": -1,
      "stateMnwMhw": "normal",
      "stateNswHsw": "normal"
      }

      Alle 8 h würde ich gerne den aktuellen Wert abgreifen und irgendwie in einen Datenpunkt bekommen. Ich habe es mit dem Perser Adapter versucht, aber da Scheiter ich (glaube ich) am RegEx Eintrag. Der Datenpunkt bleibt einfach leer wenn ich bei RegEx z. B. value eingebe.

      Vielen Dank!

      HomoranH Do not disturb
      HomoranH Do not disturb
      Homoran
      Global Moderator Administrators
      wrote on last edited by
      #2

      @lanig-iro sagte in Website auslesen/JSON parsen:

      Die Pegelstände werden über eine REST-API bereitgestellt:
      https://www.pegelonline.wsv.de

      https://github.com/bazidibavaria/ioBroker.pegelalarm

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      I 1 Reply Last reply
      0
      • HomoranH Homoran

        @lanig-iro sagte in Website auslesen/JSON parsen:

        Die Pegelstände werden über eine REST-API bereitgestellt:
        https://www.pegelonline.wsv.de

        https://github.com/bazidibavaria/ioBroker.pegelalarm

        I Offline
        I Offline
        Ianig Iro
        wrote on last edited by
        #3

        @homoran Danke, den Adapter habe ich schonmal getestet.
        Ich hatte die Meldung
        instance system.adapter.pegelonline.0 already running with pid 15881
        Irgendwann habe ich ihn zum laufen bekommen, aber er hat mir keinen Wert angezeigt.

        Deswegen wollte ich, quasi "learning by doing", mich ein bisschen mit der Thematik auseinander setzen. Aber ich sehe da den Wald vor lauter Bäumen nicht mehr.

        Es gibt ja zu genüge Beiträge für den Parser Adapter um html Seiten zu parsen. Aber ich bekomme das nicht auf meine JSON übertragen.

        1 Reply Last reply
        0
        • I Offline
          I Offline
          Ianig Iro
          wrote on last edited by
          #4

          Mir ist gerade aufgefallen, dass ich pegelonline und nicht pegelalarm als Adapter laufen hatte.
          Also Pegelalarm draufgeschmissen:
          (5157) Terminated (NO_ERROR): Without reason

          Tut es leider auch nicht.

          HomoranH 1 Reply Last reply
          0
          • I Ianig Iro

            Mir ist gerade aufgefallen, dass ich pegelonline und nicht pegelalarm als Adapter laufen hatte.
            Also Pegelalarm draufgeschmissen:
            (5157) Terminated (NO_ERROR): Without reason

            Tut es leider auch nicht.

            HomoranH Do not disturb
            HomoranH Do not disturb
            Homoran
            Global Moderator Administrators
            wrote on last edited by
            #5

            @ianig-iro
            Dann nochmal auf ein neues:

            @lanig-iro sagte in Website auslesen/JSON parsen:

            {
            "timestamp": "2021-02-18T15:45:00+01:00",
            "value": 519.0,
            "trend": -1,
            "stateMnwMhw": "normal",
            "stateNswHsw": "normal"
            }

            wenn die Antwort immer kommt, ist es ein einfaches json, dass man einfach auswerten kann

            Wo liegt dieser "Text" bei idr?

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            I 1 Reply Last reply
            0
            • HomoranH Homoran

              @ianig-iro
              Dann nochmal auf ein neues:

              @lanig-iro sagte in Website auslesen/JSON parsen:

              {
              "timestamp": "2021-02-18T15:45:00+01:00",
              "value": 519.0,
              "trend": -1,
              "stateMnwMhw": "normal",
              "stateNswHsw": "normal"
              }

              wenn die Antwort immer kommt, ist es ein einfaches json, dass man einfach auswerten kann

              Wo liegt dieser "Text" bei idr?

              I Offline
              I Offline
              Ianig Iro
              wrote on last edited by
              #6

              @homoran Der "Text", also die JSON ist vom Aufbau immer identisch und wird hier bereitgestellt:

              https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/duisburg-ruhrort/W/currentmeasurement.json

              HomoranH 1 Reply Last reply
              0
              • I Ianig Iro

                @homoran Der "Text", also die JSON ist vom Aufbau immer identisch und wird hier bereitgestellt:

                https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/duisburg-ruhrort/W/currentmeasurement.json

                HomoranH Do not disturb
                HomoranH Do not disturb
                Homoran
                Global Moderator Administrators
                wrote on last edited by Homoran
                #7

                @ianig-iro sagte in Website auslesen/JSON parsen:

                wird hier bereitgestellt:

                Also hast du sie noch nicht lokal auf deinem Rechner?

                Ich versuche mal was

                EDIT1:

                für den parser: ue":\s+([\d\.]+)


                Edit2:
                Blockly: Pegel_Ruhrort.png

                Satt des debug Baustein natürlich ein "aktualisiere" Block für deinen selbst erstellten Datenpunkt

                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                I 1 Reply Last reply
                1
                • HomoranH Homoran

                  @ianig-iro sagte in Website auslesen/JSON parsen:

                  wird hier bereitgestellt:

                  Also hast du sie noch nicht lokal auf deinem Rechner?

                  Ich versuche mal was

                  EDIT1:

                  für den parser: ue":\s+([\d\.]+)


                  Edit2:
                  Blockly: Pegel_Ruhrort.png

                  Satt des debug Baustein natürlich ein "aktualisiere" Block für deinen selbst erstellten Datenpunkt

                  I Offline
                  I Offline
                  Ianig Iro
                  wrote on last edited by
                  #8

                  @homoran Es kann so einfach sein, wenn man weiß was man tut 😉
                  Besten Dank, es funktioniert mi Blockly super!
                  Mit dem Parser muss ich noch rumexperimentieren.

                  ? 1 Reply Last reply
                  0
                  • I Ianig Iro

                    @homoran Es kann so einfach sein, wenn man weiß was man tut 😉
                    Besten Dank, es funktioniert mi Blockly super!
                    Mit dem Parser muss ich noch rumexperimentieren.

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

                    @ianig-iro

                    Hi,
                    ich hab mal auf die schnelle was zusammen geschrieben, funktioniert hier:

                    // Pegelonline script by ilovegym66
                    // 
                    
                    var request = require('request');
                    var url = 'https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/Mainz/W/currentmeasurement.json';
                    var timestamp;
                    var trend;
                    var value;
                    var stateMnwMhw;
                    var stateNswHsw;
                    
                    var idtimestamp = '0_userdata.0.Pegelonline.Mainz.timestamp';
                    var idtrend = '0_userdata.0.Pegelonline.Mainz.trend';
                    var idvalue = '0_userdata.0.Pegelonline.Mainz.value';
                    var idstateMnwMhw = '0_userdata.0.Pegelonline.Mainz.stateMnwMhw';
                    var idstateNswHsw = '0_userdata.0.Pegelonline.Mainz.stateNswHsw';
                    
                    createState('0_userdata.0.Pegelonline.Mainz.timestamp', {
                        name: 'timestamp',
                        });
                    
                    createState('0_userdata.0.Pegelonline.Mainz.value', {
                        name: 'value',
                        });
                    
                    createState('0_userdata.0.Pegelonline.Mainz.trend', {
                        name: 'trend',
                        });
                    
                    createState('0_userdata.0.Pegelonline.Mainz.stateMnwMhw', {
                        name: 'stateMnwMhw',
                        });
                    
                    createState('0_userdata.0.Pegelonline.Mainz.stateNswHsw', {
                        name: 'stateNswHsw',
                        });    
                    
                    
                    
                    
                    function PegelMainz() { 
                    request(url, function ( err, state, body){
                        if (err) {
                            log("Fehler aufgetreten: " + err);
                        } else {
                        var obj = JSON.parse(body);
                        timestamp = obj.timestamp;
                        value = obj.value;
                        trend = obj.trend;
                        stateMnwMhw = obj.stateMnwMhw;
                        stateNswHsw = obj.stateNswHsw;
                    
                        setState(idtimestamp, timestamp);
                        setState(idtrend, trend);
                        setState(idvalue, value);
                        setState(idstateMnwMhw, stateMnwMhw);
                        setState(idstateNswHsw, stateNswHsw);
                        } 
                    });
                    }
                    
                    schedule('*/21 * * * *', PegelMainz);
                    
                    
                    I NegaleinN 2 Replies Last reply
                    2
                    • ? A Former User

                      @ianig-iro

                      Hi,
                      ich hab mal auf die schnelle was zusammen geschrieben, funktioniert hier:

                      // Pegelonline script by ilovegym66
                      // 
                      
                      var request = require('request');
                      var url = 'https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/Mainz/W/currentmeasurement.json';
                      var timestamp;
                      var trend;
                      var value;
                      var stateMnwMhw;
                      var stateNswHsw;
                      
                      var idtimestamp = '0_userdata.0.Pegelonline.Mainz.timestamp';
                      var idtrend = '0_userdata.0.Pegelonline.Mainz.trend';
                      var idvalue = '0_userdata.0.Pegelonline.Mainz.value';
                      var idstateMnwMhw = '0_userdata.0.Pegelonline.Mainz.stateMnwMhw';
                      var idstateNswHsw = '0_userdata.0.Pegelonline.Mainz.stateNswHsw';
                      
                      createState('0_userdata.0.Pegelonline.Mainz.timestamp', {
                          name: 'timestamp',
                          });
                      
                      createState('0_userdata.0.Pegelonline.Mainz.value', {
                          name: 'value',
                          });
                      
                      createState('0_userdata.0.Pegelonline.Mainz.trend', {
                          name: 'trend',
                          });
                      
                      createState('0_userdata.0.Pegelonline.Mainz.stateMnwMhw', {
                          name: 'stateMnwMhw',
                          });
                      
                      createState('0_userdata.0.Pegelonline.Mainz.stateNswHsw', {
                          name: 'stateNswHsw',
                          });    
                      
                      
                      
                      
                      function PegelMainz() { 
                      request(url, function ( err, state, body){
                          if (err) {
                              log("Fehler aufgetreten: " + err);
                          } else {
                          var obj = JSON.parse(body);
                          timestamp = obj.timestamp;
                          value = obj.value;
                          trend = obj.trend;
                          stateMnwMhw = obj.stateMnwMhw;
                          stateNswHsw = obj.stateNswHsw;
                      
                          setState(idtimestamp, timestamp);
                          setState(idtrend, trend);
                          setState(idvalue, value);
                          setState(idstateMnwMhw, stateMnwMhw);
                          setState(idstateNswHsw, stateNswHsw);
                          } 
                      });
                      }
                      
                      schedule('*/21 * * * *', PegelMainz);
                      
                      
                      I Offline
                      I Offline
                      Ianig Iro
                      wrote on last edited by
                      #10

                      @ilovegym Danke, das werde ich aus Interesse auch nochmal testen

                      ? 1 Reply Last reply
                      0
                      • I Ianig Iro

                        @ilovegym Danke, das werde ich aus Interesse auch nochmal testen

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

                        @ianig-iro Gern geschehen, läuft bei mir, hab für jede Station/Ort ein Script, einfach den Ortsnamen ( hier Mainz ) austauschen, geht mit der funktion "change all Occurences" am einfachsten 🙂

                        f89f298f-a7b8-43d0-84a5-a096cbf544ed-grafik.png

                        1 Reply Last reply
                        1
                        • ? A Former User

                          @ianig-iro

                          Hi,
                          ich hab mal auf die schnelle was zusammen geschrieben, funktioniert hier:

                          // Pegelonline script by ilovegym66
                          // 
                          
                          var request = require('request');
                          var url = 'https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/Mainz/W/currentmeasurement.json';
                          var timestamp;
                          var trend;
                          var value;
                          var stateMnwMhw;
                          var stateNswHsw;
                          
                          var idtimestamp = '0_userdata.0.Pegelonline.Mainz.timestamp';
                          var idtrend = '0_userdata.0.Pegelonline.Mainz.trend';
                          var idvalue = '0_userdata.0.Pegelonline.Mainz.value';
                          var idstateMnwMhw = '0_userdata.0.Pegelonline.Mainz.stateMnwMhw';
                          var idstateNswHsw = '0_userdata.0.Pegelonline.Mainz.stateNswHsw';
                          
                          createState('0_userdata.0.Pegelonline.Mainz.timestamp', {
                              name: 'timestamp',
                              });
                          
                          createState('0_userdata.0.Pegelonline.Mainz.value', {
                              name: 'value',
                              });
                          
                          createState('0_userdata.0.Pegelonline.Mainz.trend', {
                              name: 'trend',
                              });
                          
                          createState('0_userdata.0.Pegelonline.Mainz.stateMnwMhw', {
                              name: 'stateMnwMhw',
                              });
                          
                          createState('0_userdata.0.Pegelonline.Mainz.stateNswHsw', {
                              name: 'stateNswHsw',
                              });    
                          
                          
                          
                          
                          function PegelMainz() { 
                          request(url, function ( err, state, body){
                              if (err) {
                                  log("Fehler aufgetreten: " + err);
                              } else {
                              var obj = JSON.parse(body);
                              timestamp = obj.timestamp;
                              value = obj.value;
                              trend = obj.trend;
                              stateMnwMhw = obj.stateMnwMhw;
                              stateNswHsw = obj.stateNswHsw;
                          
                              setState(idtimestamp, timestamp);
                              setState(idtrend, trend);
                              setState(idvalue, value);
                              setState(idstateMnwMhw, stateMnwMhw);
                              setState(idstateNswHsw, stateNswHsw);
                              } 
                          });
                          }
                          
                          schedule('*/21 * * * *', PegelMainz);
                          
                          
                          NegaleinN Offline
                          NegaleinN Offline
                          Negalein
                          Global Moderator
                          wrote on last edited by
                          #12

                          @ilovegym sagte in Website auslesen/JSON parsen:

                          ich hab mal auf die schnelle was zusammen geschrieben, funktioniert hier:

                          Hi Bernd!

                          Würde das auch mit pegelalarm.at funktionieren?

                          ° Node.js: 20.17.0 NPM: 10.8.2
                          ° Proxmox, Ubuntu 22.04.3 LTS
                          ° Fixer ---> iob fix

                          1 Reply Last reply
                          0
                          • ? Offline
                            ? Offline
                            A Former User
                            wrote on last edited by
                            #13

                            @negalein auf anhieb nicht, da man sich bei deren API anmelden muss.

                            NegaleinN 2 Replies Last reply
                            0
                            • ? A Former User

                              @negalein auf anhieb nicht, da man sich bei deren API anmelden muss.

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

                              @ilovegym sagte in Website auslesen/JSON parsen:

                              auf anhieb nicht, da man sich bei deren API anmelden muss.

                              gerade gesehen, dass es 2 APIs gibt.
                              Mit 1.1 wird ein Login benötigt, aber mit 1.0 läufts ohne.

                              https://api.pegelalarm.at/api/station/1.0/list

                              ° Node.js: 20.17.0 NPM: 10.8.2
                              ° Proxmox, Ubuntu 22.04.3 LTS
                              ° Fixer ---> iob fix

                              1 Reply Last reply
                              0
                              • ? A Former User

                                @negalein auf anhieb nicht, da man sich bei deren API anmelden muss.

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

                                @ilovegym sagte in Website auslesen/JSON parsen:

                                auf anhieb nicht, da man sich bei deren API anmelden muss

                                Hallo

                                Konntest du mit der API 1.0 was erreichen?

                                ° Node.js: 20.17.0 NPM: 10.8.2
                                ° Proxmox, Ubuntu 22.04.3 LTS
                                ° Fixer ---> iob fix

                                ? 1 Reply Last reply
                                0
                                • NegaleinN Negalein

                                  @ilovegym sagte in Website auslesen/JSON parsen:

                                  auf anhieb nicht, da man sich bei deren API anmelden muss

                                  Hallo

                                  Konntest du mit der API 1.0 was erreichen?

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

                                  @negalein ja das kannste einfach umsetzen, ich hatte einfach den link mal ausprobiert und da kamen auch die json dabei raus.
                                  Beispiel:
                                  https://api.pegelalarm.at/api/station/1.0/list?qStationName=Linz

                                  und dann schaust du dir die json an und setzt dir die States wie du sie brauchst, also value, trend, etc.

                                  NegaleinN 1 Reply Last reply
                                  0
                                  • ? A Former User

                                    @negalein ja das kannste einfach umsetzen, ich hatte einfach den link mal ausprobiert und da kamen auch die json dabei raus.
                                    Beispiel:
                                    https://api.pegelalarm.at/api/station/1.0/list?qStationName=Linz

                                    und dann schaust du dir die json an und setzt dir die States wie du sie brauchst, also value, trend, etc.

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

                                    @ilovegym sagte in Website auslesen/JSON parsen:

                                    und dann schaust du dir die json an und setzt dir die States wie du sie brauchst, also value, trend, etc.

                                    Danke dir!
                                    Ich benötige eigentlich nur Zeit und Pegel.

                                    Müsste das dann so passen?

                                    // 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.Schärding.sourceDate';
                                    // var idtrend = '0_userdata.0.Pegelalarm.Schärding.trend';
                                    var idvalue = '0_userdata.0.Pegelalarm.Schärding.value';
                                    // var idstateMnwMhw = '0_userdata.0.Pegelalarm.Schärding.stateMnwMhw';
                                    // var idstateNswHsw = '0_userdata.0.Pegelalarm.Schärding.stateNswHsw';
                                     
                                    createState('0_userdata.0.Pegelalarm.Schärding.sourceDate', {
                                        name: 'sourceDate',
                                        });
                                     
                                    createState('0_userdata.0.Pegelalarm.Schärding.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 PegelSchärding() { 
                                    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 * * * *', PegelSchärding);
                                    

                                    Problem ist, dass in der JSON 2 Stationen sind, ich aber nur 1 benötige!
                                    Beide Stationen verwenden requestDate und value.

                                    {
                                    	"status": {
                                    		"code": 200
                                    	},
                                    	"payload": {
                                    		"stations": [
                                    			{
                                    				"name": "Inn / Schärding / at",
                                    				"commonid": "206201-at",
                                    				"country": "Österreich",
                                    				"stationName": "Schärding",
                                    				"water": "Inn",
                                    				"region": "Oberösterreich",
                                    				"latitude": 48.456197269621,
                                    				"longitude": 13.428268065578,
                                    				"positionKm": 16.25,
                                    				"altitudeM": 299.8,
                                    				"defaultWarnValueCm": 520.0,
                                    				"defaultWarnValueM3s": 2600.0,
                                    				"defaultAlarmValueCm": 580.0,
                                    				"defaultAlarmValueM3s": 3700.0,
                                    				"data": [
                                    					{
                                    						"type": "height in cm",
                                    						"value": 370.0,
                                    						"requestDate": "13.03.2021T11:20:29+0100",
                                    						"sourceDate": "13.03.2021T11:00:00+0100"
                                    					},
                                    					{
                                    						"type": "flow in m3s",
                                    						"value": 1435.0,
                                    						"requestDate": "12.08.2016T09:42:10+0200",
                                    						"sourceDate": "12.08.2016T08:00:00+0200"
                                    					}
                                    				],
                                    				"trend": 10,
                                    				"situation": 10,
                                    				"visibility": "PUBLIC"
                                    			},
                                    			{
                                    				"name": "Inn / Schärding-Neuhaus Ow / de",
                                    				"commonid": "18007105-de",
                                    				"country": "Deutschland",
                                    				"stationName": "Schärding-Neuhaus Ow",
                                    				"water": "Inn",
                                    				"region": "Bayern",
                                    				"latitude": 48.435577724765,
                                    				"longitude": 13.440730974464,
                                    				"positionKm": 0.0,
                                    				"altitudeM": 0.0,
                                    				"data": [
                                    					{
                                    						"type": "height in cm",
                                    						"value": 314.9,
                                    						"requestDate": "03.08.2016T15:46:12+0200",
                                    						"sourceDate": "03.08.2016T15:30:00+0200"
                                    					}
                                    				],
                                    				"trend": 100,
                                    				"situation": 100,
                                    				"visibility": "PUBLIC"
                                    			},
                                    			{
                                    				"name": "Inn / Schärding-Neuhaus Kw / de",
                                    				"commonid": "18007107-de",
                                    				"country": "Deutschland",
                                    				"stationName": "Schärding-Neuhaus Kw",
                                    				"water": "Inn",
                                    				"region": "Bayern",
                                    				"latitude": 48.435577724765,
                                    				"longitude": 13.440730974464,
                                    				"positionKm": 18.8,
                                    				"altitudeM": 315.17,
                                    				"defaultWarnValueM3s": 2000.0,
                                    				"data": [
                                    					{
                                    						"type": "flow in m3s",
                                    						"value": 840.0,
                                    						"requestDate": "03.08.2016T15:46:12+0200",
                                    						"sourceDate": "03.08.2016T15:30:00+0200"
                                    					}
                                    				],
                                    				"trend": -10,
                                    				"situation": 10,
                                    				"visibility": "PUBLIC"
                                    			}
                                    		]
                                    	}
                                    }
                                    

                                    ° Node.js: 20.17.0 NPM: 10.8.2
                                    ° Proxmox, Ubuntu 22.04.3 LTS
                                    ° Fixer ---> iob fix

                                    NegaleinN paul53P 2 Replies Last reply
                                    0
                                    • NegaleinN Negalein

                                      @ilovegym sagte in Website auslesen/JSON parsen:

                                      und dann schaust du dir die json an und setzt dir die States wie du sie brauchst, also value, trend, etc.

                                      Danke dir!
                                      Ich benötige eigentlich nur Zeit und Pegel.

                                      Müsste das dann so passen?

                                      // 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.Schärding.sourceDate';
                                      // var idtrend = '0_userdata.0.Pegelalarm.Schärding.trend';
                                      var idvalue = '0_userdata.0.Pegelalarm.Schärding.value';
                                      // var idstateMnwMhw = '0_userdata.0.Pegelalarm.Schärding.stateMnwMhw';
                                      // var idstateNswHsw = '0_userdata.0.Pegelalarm.Schärding.stateNswHsw';
                                       
                                      createState('0_userdata.0.Pegelalarm.Schärding.sourceDate', {
                                          name: 'sourceDate',
                                          });
                                       
                                      createState('0_userdata.0.Pegelalarm.Schärding.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 PegelSchärding() { 
                                      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 * * * *', PegelSchärding);
                                      

                                      Problem ist, dass in der JSON 2 Stationen sind, ich aber nur 1 benötige!
                                      Beide Stationen verwenden requestDate und value.

                                      {
                                      	"status": {
                                      		"code": 200
                                      	},
                                      	"payload": {
                                      		"stations": [
                                      			{
                                      				"name": "Inn / Schärding / at",
                                      				"commonid": "206201-at",
                                      				"country": "Österreich",
                                      				"stationName": "Schärding",
                                      				"water": "Inn",
                                      				"region": "Oberösterreich",
                                      				"latitude": 48.456197269621,
                                      				"longitude": 13.428268065578,
                                      				"positionKm": 16.25,
                                      				"altitudeM": 299.8,
                                      				"defaultWarnValueCm": 520.0,
                                      				"defaultWarnValueM3s": 2600.0,
                                      				"defaultAlarmValueCm": 580.0,
                                      				"defaultAlarmValueM3s": 3700.0,
                                      				"data": [
                                      					{
                                      						"type": "height in cm",
                                      						"value": 370.0,
                                      						"requestDate": "13.03.2021T11:20:29+0100",
                                      						"sourceDate": "13.03.2021T11:00:00+0100"
                                      					},
                                      					{
                                      						"type": "flow in m3s",
                                      						"value": 1435.0,
                                      						"requestDate": "12.08.2016T09:42:10+0200",
                                      						"sourceDate": "12.08.2016T08:00:00+0200"
                                      					}
                                      				],
                                      				"trend": 10,
                                      				"situation": 10,
                                      				"visibility": "PUBLIC"
                                      			},
                                      			{
                                      				"name": "Inn / Schärding-Neuhaus Ow / de",
                                      				"commonid": "18007105-de",
                                      				"country": "Deutschland",
                                      				"stationName": "Schärding-Neuhaus Ow",
                                      				"water": "Inn",
                                      				"region": "Bayern",
                                      				"latitude": 48.435577724765,
                                      				"longitude": 13.440730974464,
                                      				"positionKm": 0.0,
                                      				"altitudeM": 0.0,
                                      				"data": [
                                      					{
                                      						"type": "height in cm",
                                      						"value": 314.9,
                                      						"requestDate": "03.08.2016T15:46:12+0200",
                                      						"sourceDate": "03.08.2016T15:30:00+0200"
                                      					}
                                      				],
                                      				"trend": 100,
                                      				"situation": 100,
                                      				"visibility": "PUBLIC"
                                      			},
                                      			{
                                      				"name": "Inn / Schärding-Neuhaus Kw / de",
                                      				"commonid": "18007107-de",
                                      				"country": "Deutschland",
                                      				"stationName": "Schärding-Neuhaus Kw",
                                      				"water": "Inn",
                                      				"region": "Bayern",
                                      				"latitude": 48.435577724765,
                                      				"longitude": 13.440730974464,
                                      				"positionKm": 18.8,
                                      				"altitudeM": 315.17,
                                      				"defaultWarnValueM3s": 2000.0,
                                      				"data": [
                                      					{
                                      						"type": "flow in m3s",
                                      						"value": 840.0,
                                      						"requestDate": "03.08.2016T15:46:12+0200",
                                      						"sourceDate": "03.08.2016T15:30:00+0200"
                                      					}
                                      				],
                                      				"trend": -10,
                                      				"situation": 10,
                                      				"visibility": "PUBLIC"
                                      			}
                                      		]
                                      	}
                                      }
                                      
                                      NegaleinN Offline
                                      NegaleinN Offline
                                      Negalein
                                      Global Moderator
                                      wrote on last edited by
                                      #18

                                      @ilovegym

                                      Müsste das dann so passen?

                                      konntest du schon kurz drüberschaun?

                                      ° Node.js: 20.17.0 NPM: 10.8.2
                                      ° Proxmox, Ubuntu 22.04.3 LTS
                                      ° Fixer ---> iob fix

                                      1 Reply Last reply
                                      0
                                      • NegaleinN Negalein

                                        @ilovegym sagte in Website auslesen/JSON parsen:

                                        und dann schaust du dir die json an und setzt dir die States wie du sie brauchst, also value, trend, etc.

                                        Danke dir!
                                        Ich benötige eigentlich nur Zeit und Pegel.

                                        Müsste das dann so passen?

                                        // 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.Schärding.sourceDate';
                                        // var idtrend = '0_userdata.0.Pegelalarm.Schärding.trend';
                                        var idvalue = '0_userdata.0.Pegelalarm.Schärding.value';
                                        // var idstateMnwMhw = '0_userdata.0.Pegelalarm.Schärding.stateMnwMhw';
                                        // var idstateNswHsw = '0_userdata.0.Pegelalarm.Schärding.stateNswHsw';
                                         
                                        createState('0_userdata.0.Pegelalarm.Schärding.sourceDate', {
                                            name: 'sourceDate',
                                            });
                                         
                                        createState('0_userdata.0.Pegelalarm.Schärding.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 PegelSchärding() { 
                                        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 * * * *', PegelSchärding);
                                        

                                        Problem ist, dass in der JSON 2 Stationen sind, ich aber nur 1 benötige!
                                        Beide Stationen verwenden requestDate und value.

                                        {
                                        	"status": {
                                        		"code": 200
                                        	},
                                        	"payload": {
                                        		"stations": [
                                        			{
                                        				"name": "Inn / Schärding / at",
                                        				"commonid": "206201-at",
                                        				"country": "Österreich",
                                        				"stationName": "Schärding",
                                        				"water": "Inn",
                                        				"region": "Oberösterreich",
                                        				"latitude": 48.456197269621,
                                        				"longitude": 13.428268065578,
                                        				"positionKm": 16.25,
                                        				"altitudeM": 299.8,
                                        				"defaultWarnValueCm": 520.0,
                                        				"defaultWarnValueM3s": 2600.0,
                                        				"defaultAlarmValueCm": 580.0,
                                        				"defaultAlarmValueM3s": 3700.0,
                                        				"data": [
                                        					{
                                        						"type": "height in cm",
                                        						"value": 370.0,
                                        						"requestDate": "13.03.2021T11:20:29+0100",
                                        						"sourceDate": "13.03.2021T11:00:00+0100"
                                        					},
                                        					{
                                        						"type": "flow in m3s",
                                        						"value": 1435.0,
                                        						"requestDate": "12.08.2016T09:42:10+0200",
                                        						"sourceDate": "12.08.2016T08:00:00+0200"
                                        					}
                                        				],
                                        				"trend": 10,
                                        				"situation": 10,
                                        				"visibility": "PUBLIC"
                                        			},
                                        			{
                                        				"name": "Inn / Schärding-Neuhaus Ow / de",
                                        				"commonid": "18007105-de",
                                        				"country": "Deutschland",
                                        				"stationName": "Schärding-Neuhaus Ow",
                                        				"water": "Inn",
                                        				"region": "Bayern",
                                        				"latitude": 48.435577724765,
                                        				"longitude": 13.440730974464,
                                        				"positionKm": 0.0,
                                        				"altitudeM": 0.0,
                                        				"data": [
                                        					{
                                        						"type": "height in cm",
                                        						"value": 314.9,
                                        						"requestDate": "03.08.2016T15:46:12+0200",
                                        						"sourceDate": "03.08.2016T15:30:00+0200"
                                        					}
                                        				],
                                        				"trend": 100,
                                        				"situation": 100,
                                        				"visibility": "PUBLIC"
                                        			},
                                        			{
                                        				"name": "Inn / Schärding-Neuhaus Kw / de",
                                        				"commonid": "18007107-de",
                                        				"country": "Deutschland",
                                        				"stationName": "Schärding-Neuhaus Kw",
                                        				"water": "Inn",
                                        				"region": "Bayern",
                                        				"latitude": 48.435577724765,
                                        				"longitude": 13.440730974464,
                                        				"positionKm": 18.8,
                                        				"altitudeM": 315.17,
                                        				"defaultWarnValueM3s": 2000.0,
                                        				"data": [
                                        					{
                                        						"type": "flow in m3s",
                                        						"value": 840.0,
                                        						"requestDate": "03.08.2016T15:46:12+0200",
                                        						"sourceDate": "03.08.2016T15:30:00+0200"
                                        					}
                                        				],
                                        				"trend": -10,
                                        				"situation": 10,
                                        				"visibility": "PUBLIC"
                                        			}
                                        		]
                                        	}
                                        }
                                        
                                        paul53P Offline
                                        paul53P Offline
                                        paul53
                                        wrote on last edited by paul53
                                        #19

                                        @negalein sagte: in der JSON 2 Stationen sind, ich aber nur 1 benötige!

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

                                        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;
                                                        }
                                                    }
                                                } 
                                            });
                                        }
                                        

                                        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: in der JSON 2 Stationen sind, ich aber nur 1 benötige!

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

                                          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;
                                                          }
                                                      }
                                                  } 
                                              });
                                          }
                                          
                                          NegaleinN Offline
                                          NegaleinN Offline
                                          Negalein
                                          Global Moderator
                                          wrote on last edited by
                                          #20

                                          @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?

                                          ° Node.js: 20.17.0 NPM: 10.8.2
                                          ° Proxmox, Ubuntu 22.04.3 LTS
                                          ° Fixer ---> iob fix

                                          paul53P ? 2 Replies 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

                                          606

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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