NEWS
Adapter Anfrage: ODL-Messnetz (Bundesamt für Strahlenschutz)
-
Hallo zusammen,
hat wer hier im Forum schon mal per iobroker die Radioaktivitätsdaten vom ODL Netzwerk per script abgerufen oder ist zufällig ein Adapter dafür bereits in Entwicklung? Das Bundesamt für Strahlenschutz stellt die Daten der Messstationen im json Format bereit.
https://odlinfo.bfs.de/DE/service/daten … telle.html
Hier noch die Liste der Messstationen:
https://odlinfo.bfs.de/DE/themen/wo-ste ... hland.html
MfG
-
JSON heißt "JavaScript Object Notation"..
Und womit wird in ioBroker gescriptet? Richtig.. Mit JavaScript!
Es sind also alle Mittel um die Daten in einem Script zu verarbeiten bereits von Haus aus vorhanden.
JSON Parser ist das Zauberwort.
Gruß
-
Yep, ein Script oder der Parser sollten hier das Mitteld er Wahl sein. Ein Adapter schießt wohl etwas übers Ziel hinaus, solange wir keine Bedrohung durch Radioaktivität haben. Und wenn doch, gibt es vielleicht wichtigeres :lol:
Such deine Messstation auf der karte, lass die Werte anzeigen und gucken in den Quelltext. Dann kannst du mit derm Parser-Adapter deine Stationsdaten extrahieren und in ein ioBroker Objekt schreiben.
Um eine JSON-Datei laden zu können, musst man sich registrieren. Das habe ich nicht gemacht.
Gruß
Pix
-
Ich habe mich gestern Abend mal drangesetzt und ein Script erstellt welches das json abruft und die Werte in ein Objekt schreibt. Funktioniert schonmal einwandfrei und war eigentlich einfacher als gedacht.
Wenn hier jemand Interesse hat, dann kann ich das gerne veröffentlichen. Allerdings brauche ich noch ein wenig Zeit da das script wirklich quick & Dirty ist.
Registrierung ist nötig, man bekommt dann ein personalisiertes Login.
Jan
-
Hab auch was zurechtgeschustert:
neue Version
! ````
////////////////////////////////////////////////////////////////////////////////
////BFS-Strahlen-Moped//////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////V0.1 Abfrage von einer Messstelle (22.09.2017)
////V0.2 Ergänzung Grenzwert (Setzen eines Farbwerts) (23.09.2017)
////V0.3 Möglichkeit der Abfrage mehrerer Messstellen (23.09.2017)
////V0.4 Bugfixing (25.09.2017)
////V0.5 Berücksichtigung des Messstellenstatus (25.05.2018)
//// (muss =1 sein, sonst keine Auswertung)
////////////////////////////////////////////////////////////////////////////////
! var request = require("request");
var JSON_arr = {};
var path = "Strahlung.";
var color_red = "#ff0000";
var color_green = "#009900";
var i = 1;
! ////////////////////////////////////////////////////////////////////////////////
//// Stammdaten ////
////////////////////////////////////////////////////////////////////////////////
! var stations=["120612602","110000004","120644481","120644881"]; //Liste mit Stations-IDs
var user="user";
var pass="pass";
! ////////////////////////////////////////////////////////////////////////////////
! ///// Pfad zum json-File der Messstation ///////////////////////////////////////
! //var url="https://" + user + ":" + pass +"@odlinfo.bfs.de/daten/json/" + stations.0 + ".json";////////////////////////////////////////////////////////////////////////////////
! ////////////////////////////////////////////////////////////////////////////////
//// States erzeugen ///////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
! function createAllStates(){
! steps=stations.length;
! if (i <= steps ) {
! createState(path + (i.toString()) +".Ort", "", {
name: 'Ort der Messstation',
desc: 'Ort der Messstation',
type: 'string',
role: 'value',
unit: ''
});createState(path + (i.toString()) + ".Status_Messstelle", 0, {
name: 'Status der Messstelle',
desc: 'Status der Messstelle',
type: 'number',
role: 'value',
unit: ''
});createState(path + (i.toString()) + ".Letzter_1h_Messwert", 0, {
name: 'letzter 1h-Messwert',
desc: 'letzter 1h-Messwert',
type: 'number',
rol2e: 'value',
unit: ''
});! createState(path + (i.toString()) + ".Limit_color", "", {
name: 'Farbe Grenzwert',
desc: 'Farbe_Grenzwert',
type: 'string',
role: 'value',
unit: ''
});i++; createAllStates();
}
}! function read(url,callback) {
request(url, function (err, state, body){
if (body) {
var json = parseJson(body);
callback(null, json);
} else {
console.log(err, "warn");
callback(err, null);
}
});
}
! function parseJson(text) {
if (text === "") return {};
try {
json = JSON.parse(text);
} catch (ex) {
json = {};
}
if(!json) json = {};
return json;
}
! function main0() {
var j = 0;
main();
! function main() {
steps=stations.length;
if (j < steps ) {
var url="https://" + user + ":" + pass +"@odlinfo.bfs.de/daten/json/" + stations[j] + ".json";
var dp=j+1;
read(url, function(err,json) {
if(!err) {
JSON_arr = json;
if (JSON_arr.stamm.status == 1){
setState(path + (dp.toString()) + ".Ort" , JSON_arr.stamm.ort);
setState(path + (dp.toString()) + ".Status_Messstelle" , JSON_arr.stamm.status);
setState(path + (dp.toString()) + ".Letzter_1h_Messwert" , JSON_arr.stamm.mw);if(JSON_arr.stamm.mw <= 1.00) { setState(path + (dp.toString()) + ".Limit_color", color_green); }else { setState(path + (dp.toString()) + ".Limit_color", color_red); } } } else { console.log("!!!!FEHLER!!!!! : " ); }
});
! j++;
! main();
}
! }
}
! createAllStates();
! setTimeout(main0,1000);
! schedule("*/30 * * * *", function () {
main0();
});
! ````dna909
-
Hab das Script noch etwas erweitert. Jetzt kann man mehrere Stationen abfragen.
dna909
-
Hallo Gemeinde,
für die, die sich nicht registrieren wollen, hab ich mal was mit dem Parser Adapter gemacht.
hier der Link zu der zu der Seite mit dem lokalen Messwert.
http://odlinfo.bfs.de/DE/aktuelles/mess … 20001.html
Jeder muss sich halt die Seite mit der gewünschten Mess Station aussuchen.
und hier der passende RegEx String
`Aktueller Messwert: **%wert% <abbr title="Mikrosievert pro Stunde">µSv\/h<\/abbr><\/strong><br\>[zur Messstelle<\/a>';<\/script>](%link%)</br\></abbr>**` [`Aktueller Messwert: **.*?([0-9]?[0-9],[0-9][0-9][0-9])**` **Ich bin jetzt nicht der absolute Spezialist mit dem Parser Adapter. Evetuell geht das auch einfacher…**](%link%)
-
Wie @pix 2017 treffend schrieb "so lange wie keine Bedrohung durch Radioaktivität haben."...
Rein aus Interesse zum aktuellen Anlass hole ich dieses Thema noch einmal hoch.@Linedancer Dein RegEx String funktioniert bei mir nicht mehr. Parser schmeißt mir einen Error: "Invalid regular expression". Mir scheint, dass sich die Website verändert hat! Wärest du bereit deinen Beitrag zu aktualisieren? Ich schaffe es noch nicht ganz den RegExp String komplett zu durch dringen.
Danke für eure Hilfe,
Christoph -
es gibt doch einen adapter dafür - der zeigt auch daten bei mir
-
@liv-in-sky Danke für die Hinweis - ja der funktioniert einwandfrei. Soeben eingerichtet.
Was habt ihr bisher mit den Daten gemacht? Habt ihr euch lediglich Telegram notification eingerichtet oder ein blockly gebaut mit "wenn wert x überschritten, dann..."?
Liebe Grüße
Christoph -
@crahlfs eigentlich nix
Ich habe ihn etwas beobachtet und es waren immer die selben Werte
Dann habe ich es vergessen, bist du das geschrieben hast