NEWS
UV-Index: Welcher Wetter Adapter?
-
Ich glaube weatherunderground hat uv Index. `
Der ist nur leider unbrauchbar, da meistens falsch oder das Feld nicht gefüllt…
Ich nutze stattdessen openuv.io (außerhalb von iobroker). `
Hast du vielleicht ein Skript oder eine Anleitung dazu?
-
Hi, das Thema ist schon recht alt, aber da ich eben auch einen einfachen Weg gesucht habe, den UV-Index in den ioBroker zu bekommen, habe ich mal folgendes JS/Blockly gebaut und wollte das mit Euch teilen:
So sieht die JS Funktion aus:
'use strict'; let request = require("request"); let respo=''; let options = daytime ? { method: 'GET', url: 'https://api.openuv.io/api/v1/uv', qs: { lat: lati, lng: long , dt: daytime }, headers: { 'content-type': 'application/json', 'x-access-token': apiKey } } : { method: 'GET', url: 'https://api.openuv.io/api/v1/uv', qs: { lat: lati, lng: long }, headers: { 'content-type': 'application/json', 'x-access-token': apiKey } }; request(options, function (error, response, body) { if (error) throw new Error(error); respo=response; console.log(body); }); return respo;
Die Parameter lati, und long entsprechen den Koordinaten, wie Ihr sie im ioBroker Admin sowieso schon eingestellt habt (ich habe es leider nicht geschaft, die auszulesen, aber vielleicht hat ja da jemand noch eine Lösung. Das Javascript.0 Objekt enthält sie jedenfalls nicht). Den API Key bekommt man, wenn man sich bei openuv registriert. daytime ist optional, wenn der weg gelassen wird, werden die aktuellen Daten ermittelt. Das Ergebnis ist ein nettes JSON (wie auf der Webseite beschrieben). Ich werde hierzu noch ein paar Scripts schreiben, um das Ergebnis z.B. als Trigger für Telegram Meldungen zu nutzen.
Achtung! Die kostenlose Lizenz bei openuv erlaubt nur max 50 Abfragen pro Tag, also nicht zu oft aufrufen!
-
@ahnungsbefreit sagte: Koordinaten, wie Ihr sie im ioBroker Admin sowieso schon eingestellt habt
getObject('system.config').common.latitude; getObject('system.config').common.longitude;
-
@paul53 Danke, das hat mir gefehlt!
-
@ahnungsbefreit sagte in UV-Index: Welcher Wetter Adapter?:
da ich eben auch einen einfachen Weg gesucht habe, den UV-Index in den ioBroker zu bekommen
da ging's dir wohl genau wie mir, als ich die anderen Threads gesehen habe.
Da ich nicht noch ein Konto bei irgendwem für einen API-Key anlegen wollte, habe ich bei opensensemap.org gesucht.
Senseboxen mit UV sind zwar dünn gesät, aber vorhanden.Auswertung erfolgt dann wahlweise per Skript oder parser
Aufruf der gewünschten Station per https://api.opensensemap.org/boxes/Stationskennung
Die Antwort dann nach dem gewünschten Wert parsen.Die Stationskennung findet man in der Karte bei opensensemap.org
-
Es gibt auch einen Adapter dafür.
uv-protect liefert alle gewünschten Werte. -
@ahnungsbefreit respo ist immer leer bei der Rückgabe, da request() asynchron läuft, so funktioniert das also nicht. Ich hatte neulich eine Lösung gepostet, welche vor der Rückgabe eine halbe Sekunde wartet(
await wait(500))
), fand das jedoch nicht so gut, obwohl es funktioniert. Wie gedenkst du das zu lösen? Mit axios könnte man await verwenden, das muss dann allerdings extra im JS-Adapter installiert werden, weshalb mich eine Lösung mit request() interessiert. -
oder dieser Adapter: https://github.com/x3l4c0d3/ioBroker.openuv
nutze ich schon länger ohne Probleme -
@stenmic openuv ist wird leider nicht mehr gepflegt und hat in bestimmten node Versionen dadurch Probleme.
Aus diesem Grund ist uv-protect entstanden -
@fastfoot Gute Frage, aber ich denke in diesem Fall tut's ein einfaches "await"...