NEWS
Werte aus Webseite auslesen
-
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
-
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.
-
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]
-
Der Wasserinhalt in Millionen m³ wird aber von Pegelonline nicht zur Verfügung gestellt oder?
-
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
-
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
-
, 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?
-
, 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.