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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Werte aus Webseite auslesen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Werte aus Webseite auslesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
8 Beiträge 3 Kommentatoren 4.6k Aufrufe
  • Ä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.
  • 0 Offline
    0 Offline
    0018
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich bin auf der Suche nach einer Möglichkeit von der Webseite http://www.edersee.de/wasserstand/ folgende Werte auszulesen:

    1. Datum: –> Ergebniss sollte nur das Datum auswerfen, nicht den ausgeschriebenen Tagesnamen

    2. Wasserstand um 07:00 Uhr in m über NN:

    3. Inhalt in Millionen m³:

    4. Aktueller Füllstand in %:

    Nach einiger Forums-recherche bin ich auf den Parser-Adapter gestoßen und habe auch schon einiges versucht.

    Leider ohne Erfolg und die vorhanden Doku ist für mich nicht ganz verständlich.

    Kann mir jemand helfen wie der Parser hier zu konfigurieren ist?

    Danke im Vorraus!

    Mfg

    Mfg
    0018

    1 Antwort Letzte Antwort
    0
    • DutchmanD Offline
      DutchmanD Offline
      Dutchman
      Developer Most Active Administrators
      schrieb am zuletzt editiert von
      #2

      @0018:

      Hallo zusammen,

      ich bin auf der Suche nach einer Möglichkeit von der Webseite http://www.edersee.de/wasserstand/ folgende Werte auszulesen:

      1. Datum: –> Ergebniss sollte nur das Datum auswerfen, nicht den ausgeschriebenen Tagesnamen

      2. Wasserstand um 07:00 Uhr in m über NN:

      3. Inhalt in Millionen m³:

      4. Aktueller Füllstand in %:

      Nach einiger Forums-recherche bin ich auf den Parser-Adapter gestoßen und habe auch schon einiges versucht.

      Leider ohne Erfolg und die vorhanden Doku ist für mich nicht ganz verständlich.

      Kann mir jemand helfen wie der Parser hier zu konfigurieren ist?

      Danke im Vorraus!

      Mfg `

      Hi 0018,

      Sind das nicht die gleichen daten welche auchh bei pegelonline abgefragt werden koennen ?

      ich finde da z.b.:

          "uuid": "c6e9f744-4dbf-4e8e-a219-cab051ec610c",
          "number": "42800310",
          "shortname": "EDERTALSPERRE",
          "longname": "EDERTALSPERRE",
          "km": 49.2,
          "agency": "WSA HANNOVERSCH MÜNDEN",
          "longitude": 9.058927535521473,
          "latitude": 51.18404001559913,
          "water": {
            "shortname": "EDER",
            "longname": "EDER"
          },
          "timeseries": [
            {
              "shortname": "W",
              "longname": "WASSERSTAND ROHDATEN",
              "unit": "m+PNP",
              "equidistance": 15,
              "currentMeasurement": {
                "timestamp": "2017-05-04T13:00:00+02:00",
                "value": 239.3,
                "trend": 0,
                "stateMnwMhw": "unknown",
                "stateNswHsw": "unknown"
              },
              "gaugeZero": {
                "unit": "m. ü. NN",
                "value": 0.082,
                "validFrom": "1990-01-01"
              }
            }
          ]
        },
      
      

      Da diese seite eine JSON tabelle hergibt kan man diese leichter auslesen als eine platte webseite.

      https://www.pegelonline.wsv.de/webservi … ement=true

      Hat diese seite die daten die du brauchst ? Wen je welche sind das genau dan kan ich dir ein beispiel schreiben in javascript um daten von de seite zu laden und in eine variable schreien (womit sie in dein system sitzen und auch mit z.b. VIS angezeigt werden koennen)

      Greetz,

      Dutch

      PS: hier eine uebersicht von was fuer daten da geliefert werden koennen: https://www.pegelonline.wsv.de/webservice/dokuRestapi

      Zugriff auf die Stationen mit Einschließung verschiedener untergeordneter Daten:

      Alle Pegel sortiert nach Gewässername und Messstellenname.

      Alle Pegel inklusive Informationen zu den Zeitreihen.

      Alle Pegel inklusive Informationen zu den Zeitreihen mit dem aktuell gemessenen Wert.

      Alle Pegel inklusive Informationen zu den Zeitreihen mit den kennzeichnenden Wasserstände.

      Zugriff auf bestimmte Stationen:

      Zugriff auf einen Pegel per Name. Statt BONN.json kann der Pegel auch über die Pegelnummer, also 2710080.json oder über die UUID - 593647aa-9fea-43ec-a7d6-6476a76ae868.json - adressiert werden. Nur für die UUID kann garantiert werden, dass sie sich nicht ändert.

      Pegel bestimmter Gewässer.

      Bestimmte Pegel. Für die IDs kann eine Pegelnummer, ein Pegelname oder eine UUID verwendet werden.

      Nur Pegel mit deren Q-Zeitreihen (Abflusszeitreihen).

      Pegel, welche eine Q-Zeitreihe besitzen, mit allen Zeitreihen des Pegels.

      Spezialabfragen

      Pegel innerhalb eines Radius an einer geografischen Position. Koordinaten in WGS84 in Dezimalnotation.

      Pegel, welche im Namen 'Berlin' enthalten.

      Pegel des Gewässers Rhein im Umkreis eines bestimmten Flusskilometers.

      1 Antwort Letzte Antwort
      0
      • 0 Offline
        0 Offline
        0018
        schrieb am zuletzt editiert von
        #3

        Hi Dutchman,

        danke für den Tipp, hatte schon bei meiner Recherche etwas entdeckt, mich aber nicht weiter mit beschäftigt weil ich nur den Parser als Lösumg hatte.

        Mit dem Script http://forum.iobroker.net/viewtopic.php … ser#p64338 habe ich mir mal folgendes gebastelt:

        `var request = require('request');
        var url = 'https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations.json?includeTimeseries=true&includeCurrentMeasurement=true';
        var pegelmax = 244.97;
        var state1 = "javascript.0.Edersee.Pegel";
        var state2 = "javascript.0.Edersee.Pegel_Prozent"; 
        var state3 = "javascript.0.Edersee.Messzeit"; 
        var state4 = "javascript.0.Edersee.Pegel_bis_voll"; 
        
        createState(state1, {name: "Pegel", unit: "m"});
        createState(state2, {name: "Pegel_Prozent", unit: "%"});
        createState(state3, {name: "Messzeit",});
        createState(state4, {name: "Pegel_bis_Voll", unit: "m"});
        
        function Edersee() {
        request(url, function(err, stat, body) {
            if(err) log('Error: ' + err, error);
            else if(body) {
                var pegelonline;
                var stand;
                pegelonline = JSON.parse(body);
                for(var i = 0; i < pegelonline.length; i++) {
                    if(pegelonline[i].shortname == 'EDERTALSPERRE') {
                        stand = pegelonline[i].timeseries[0].currentMeasurement.value;
                        zeit = pegelonline[i].timeseries[0].currentMeasurement.timestamp;
                    }
                }
                log('Pegel: ' + stand);
                log('Zeit: ' + zeit);
                setState(state1, stand); 
                setState(state3, zeit);
                var pegelprozent = ((stand/pegelmax)*100).toFixed(2);
                log('Pegel in Prozent: ' + pegelprozent);
                setState(state2, pegelprozent);
                var pegelbisvoll = (pegelmax-stand).toFixed(2);
                log('Pegel bis Vollstau: ' + pegelbisvoll);
                setState(state4, pegelbisvoll);
            }    
        });
        }
        
        // Start bei Skriptstart
        Edersee();
        
        // 15min nach jeder vollen Stunde
        schedule("15 * * * *", Edersee);` 
        
        Habe jetzt 3 Werte: Pegelstand, Pegelstand in Prozent (Berechnet anhand der maximalen Pegelhöhe/Vollstau),Uhrzeit der Messung und Restpegel bis Voll. 
        
        Kannst ja mal drüber schauen ob ich was besser/anders machen kann, jedenfalls bekomme ich Werte ermittelt. 
        
        Das Format des Datums könnte noch etwas schicker sein, habe aber leider keinen Ansatz wie ich das Format umschreiben kann..?
        
        Mfg[/i][/i][/i]
        

        Mfg
        0018

        1 Antwort Letzte Antwort
        0
        • 0 Offline
          0 Offline
          0018
          schrieb am zuletzt editiert von
          #4

          Der Wasserinhalt in Millionen m³ wird aber von Pegelonline nicht zur Verfügung gestellt oder?

          Mfg
          0018

          1 Antwort Letzte Antwort
          0
          • DutchmanD Offline
            DutchmanD Offline
            Dutchman
            Developer Most Active Administrators
            schrieb am zuletzt editiert von
            #5

            @0018:

            Der Wasserinhalt in Millionen m³ wird aber von Pegelonline nicht zur Verfügung gestellt oder? `

            script sieht doch gut aus :), eventueel koenntest du noch im http get nur die station abfragen welche du brauchst verbrauch dan bisschen weniger ressourcen anstaat nur diesen wert aus der ganzen liste zu lesen.

            Mit dem inhalten bin ich uebergragt da ich es selber nicht benutze, sorry

            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pix
              schrieb am zuletzt editiert von
              #6

              Hallo,

              Kurzer Tipp von unterwegs mit tapatalk: Lege die States von Typ "number" an, stehen ja Zahlenwerte drin.

              Beschreibe sie dann mit Zahlen, die Werte aus der JSON sind Zeichenketten.

              Für Ganzzahlen````
              setState(idName, parseInt(wert,10);

              
              Für Dezimalzahlen kannst du den parseFloat nehmen.
              
              Zum Beispiel````
              var pegelbisvoll = parseFloat((pegelmax-stand).toFixed(2));
              ````heisst: stellen den errechneten wert mit zwei Dezimalstellen als Zeichenkette dar (toFixed) und wandele das dann wieder in eine Dezimalzahl. Wenn allerdings die Dezimalstellen am Ende 0 sind, werden sie auch nicht dargestellt. Es gibt auch andere Möglichkeiten zu Runden. Habe aber gerade keinen Zugriff drauf.
              
              Pix

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Antwort Letzte Antwort
              0
              • 0 Offline
                0 Offline
                0018
                schrieb am zuletzt editiert von
                #7

                @Dutchman:

                , eventueel koenntest du noch im http get nur die station abfragen welche du brauchst verbrauch dan bisschen weniger ressourcen anstaat nur diesen wert aus der ganzen liste zu lesen. `

                Wie genau muss ich das anstellen?

                Mfg
                0018

                1 Antwort Letzte Antwort
                0
                • DutchmanD Offline
                  DutchmanD Offline
                  Dutchman
                  Developer Most Active Administrators
                  schrieb am zuletzt editiert von
                  #8

                  @0018:

                  @Dutchman:

                  , eventueel koenntest du noch im http get nur die station abfragen welche du brauchst verbrauch dan bisschen weniger ressourcen anstaat nur diesen wert aus der ganzen liste zu lesen. `

                  Wie genau muss ich das anstellen? `

                  durch an deinen link bij station.sj nog id=>UUID<& hinzu zu fuegen. Also z.b.:

                  jetzt (alle daten)

                  https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations.json?includeTimeseries=true&includeCurrentMeasurement=true
                  

                  nur die daten von Edeltalsperre

                  https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations.json?ids=EDERTALSPERRE&includeTimeseries=true&includeCurrentMeasurement=true
                  

                  Zie API erklaehrung:

                  https://www.pegelonline.wsv.de/webservice/dokuRestapi

                  Zugriff auf bestimmte Stationen:

                  /stations.json?ids=BONN,2730010 Bestimmte Pegel. Für die IDs kann eine Pegelnummer, ein Pegelname oder eine UUID verwendet werden.

                  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

                  664

                  Online

                  32.6k

                  Benutzer

                  82.2k

                  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