Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Website auslesen/JSON parsen

NEWS

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

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

Website auslesen/JSON parsen

Geplant Angeheftet Gesperrt Verschoben Off Topic
30 Beiträge 6 Kommentatoren 3.4k Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • 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 Nicht stören
    HomoranH Nicht stören
    Homoran
    Global Moderator Administrators
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    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
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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 Nicht stören
        HomoranH Nicht stören
        Homoran
        Global Moderator Administrators
        schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
        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
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            Ein ehemaliger Benutzer
            schrieb am zuletzt editiert von Ein ehemaliger Benutzer
            #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 Antworten Letzte Antwort
            2
            • ? Ein ehemaliger Benutzer

              @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
              schrieb am zuletzt editiert von
              #10

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

              ? 1 Antwort Letzte Antwort
              0
              • I Ianig Iro

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

                ? Offline
                ? Offline
                Ein ehemaliger Benutzer
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                1
                • ? Ein ehemaliger Benutzer

                  @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
                  schrieb am zuletzt editiert von
                  #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 Update ---> iob nodejs-update
                  ° Fixer ---> iob fix

                  1 Antwort Letzte Antwort
                  0
                  • ? Offline
                    ? Offline
                    Ein ehemaliger Benutzer
                    schrieb am zuletzt editiert von
                    #13

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

                    NegaleinN 2 Antworten Letzte Antwort
                    0
                    • ? Ein ehemaliger Benutzer

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

                      NegaleinN Offline
                      NegaleinN Offline
                      Negalein
                      Global Moderator
                      schrieb am zuletzt editiert von
                      #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 Update ---> iob nodejs-update
                      ° Fixer ---> iob fix

                      1 Antwort Letzte Antwort
                      0
                      • ? Ein ehemaliger Benutzer

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

                        NegaleinN Offline
                        NegaleinN Offline
                        Negalein
                        Global Moderator
                        schrieb am zuletzt editiert von
                        #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 Update ---> iob nodejs-update
                        ° Fixer ---> iob fix

                        ? 1 Antwort Letzte Antwort
                        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
                          Ein ehemaliger Benutzer
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • ? Ein ehemaliger Benutzer

                            @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
                            schrieb am zuletzt editiert von
                            #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 Update ---> iob nodejs-update
                            ° Fixer ---> iob fix

                            NegaleinN paul53P 2 Antworten Letzte Antwort
                            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
                              schrieb am zuletzt editiert von
                              #18

                              @ilovegym

                              Müsste das dann so passen?

                              konntest du schon kurz drüberschaun?

                              ° Node.js Update ---> iob nodejs-update
                              ° Fixer ---> iob fix

                              1 Antwort Letzte Antwort
                              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
                                schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                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
                                  schrieb am zuletzt editiert von
                                  #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 Update ---> iob nodejs-update
                                  ° Fixer ---> iob fix

                                  paul53P ? 2 Antworten Letzte Antwort
                                  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?

                                    paul53P Offline
                                    paul53P Offline
                                    paul53
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    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
                                      Ein ehemaliger Benutzer
                                      schrieb am zuletzt editiert von
                                      #22

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

                                      Umlaute so, wie es die json hergibt.

                                      1 Antwort Letzte Antwort
                                      0
                                      • NegaleinN Offline
                                        NegaleinN Offline
                                        Negalein
                                        Global Moderator
                                        schrieb am zuletzt editiert von
                                        #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 Update ---> iob nodejs-update
                                        ° Fixer ---> iob fix

                                        paul53P 1 Antwort Letzte Antwort
                                        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
                                          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          885

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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