BFS - Bundesamt Für Strahlenschutz - Support Thread

Begonnen von Florian_GT, 25 Januar 2020, 13:23:30

Vorheriges Thema - Nächstes Thema

trinitywhm

Zitat von: Gisbert am 13 März 2022, 21:22:18
Bekommst du mittlerweile Daten?
Daten werden anscheinend nur dann gelesen, wenn neue Daten vorliegen. Dies ist bei mir zu jeder vollen Stunde der Fall.

Viele​ Grüße​ Gisbert​

Nein, keine Daten. Weder nach warten, noch nach dem get-Befehl der wie oben beschrieben ein leeres Dialogfenster erzeugt.

Christoph Morrison

Zitat von: Florian_GT am 10 März 2022, 21:40:04
Hallo zusammen,

das BFS hat die API erneuert und die alte auf eine andere URL verschoben. Ich habe das Module entsprechend für diese URL Veränderung angepasst und ein Update steht für euch zur Verfügung.

Gruß Florian

Dein Modul wird aber nach dem 30. Juni nicht mehr funktionieren. Die alte API wird dann abgeschaltet.

Prof. Dr. Peter Henning

Tja. Vor 16 Jahren habe ich mal einen Forschungspreis dafür bekommen, dass ich bei diesen Geodateninitiativen mitgemacht habe und mit Studenten ein eigenes komplett XML-basiertes Geoinformationssystem gebaut habe.

Jetzt muss ich doch tatsächlich den alten Kram zum WebFeatureService wieder ausgraben...

LG

pah

Florian_GT

Zitat von: Christoph Morrison am 14 März 2022, 08:40:37
Dein Modul wird aber nach dem 30. Juni nicht mehr funktionieren. Die alte API wird dann abgeschaltet.

ich arbeite an einer neuen Version und werde diese sobald fertig in das Repo pushen.

Gruß Florian
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

Persuasiv


Gisbert

Also bei mir läuft das Modul noch. Ich hab mir die Stichpunkte JSON und API notiert, d.h. ich frage über beide Wege ab, in der Erwartung, dass ein Weg wegfallen wird.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Persuasiv

Ich habe es jetzt mit dem JsonMod-Modul gelöst. Mal schauen, ob das noch lange funktioniert.

Florian_GT

Hallo zusammen,

ich musste gerade an meiner eigenen Produktiven FHEM Installation feststellen, dass die API vom BFS andere bzw. keine Daten mehr liefert. Das führt dummerweise dazu, dass das BFS Module in FHEM eine Exception wirft und FHEM neu gestartet wird.

2023.03.29 15:13:07.704 3: Getting ODL data with login from URL: http://odlinfo2.bfs.de/daten/json/xxxxxxx.json
Can't use an undefined value as an ARRAY reference at ./FHEM/60_bfs.pm line 208.

Da mein Fokus zwar noch auf Umweltdaten aber nicht mehr so sehr auf Entwicklung in FHEM mit Perl liegt, konkret möchte ich mit kleinen einfachen Docker Containern Daten per MQTT zur Verfügung stellen würde ich, da auch die Schnittstelle beim BFS modernisiert worden ist, das Module in FHEM einstampfen und eine neue Lösung im nächsten halben Jahr vorstellen!

Gruß Florian
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

Frank_Huber

dito, eine meiner Instanzen ging ab 14:55 in die "Bootschleife"
nach deaktivieren der BFS Geräte ist wieder Ruhe.

Gisbert

#39
Das gleiche hier.
Disablen hat geholfen die Bootschleife zu beenden.
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Florian_GT

Über die Schnittstelle kommen immer noch keine Daten mehr. Ich denke das war es mit der alten Schnittstelle. Ich habe gestern aber trotzdem noch einen kleinen Fix für das Module bereitgestellt, damit man nicht gleich in's offene Messer läuft, wenn man es lädt.

Ich würde mich über Feedback freuen, wie viele von euch schon ein wenig mit Docker zu tun haben. Meine Idee geht dahin, ein auf PHP Basis geschriebenen Daemon laufen zu lassen, der regelmäßig Daten an MQTT liefert bzw. auch Daten von z.B. meinem Energiezähler ablesen kann. Das würd ich gerne als Docker bereitstellen, und ich würde gerne wissen, wie viele es so gibt, die dazu noch eine alternative möchten. Die Alternative wäre dann ein per Systemd laufender Daemon Job.

Gruß Florian
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

binford6000

Hallo Zusammen,
ein kurzer Blick in die Beschreibung der Schnittstelle und eine kleine JsonMod definition (kenn anpassen an eure Messstation):

defmod test JsonMod https://www.imis.bfs.de/ogc/opendata/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=opendata:odlinfo_timeseries_odl_1h&outputFormat=application/json&maxFeatures=1&sortBy=end_measure+D&viewparams=kenn:064390021
attr test readingList complete();

liefert das:

setstate test 2023-03-30 19:26:27 .computedReadings features.0.geometry.type,features.0.properties.start_measure,features.0.geometry.coordinates.1,features.0.properties.value,crs.properties.name,features.0.properties.name,features.0.geometry.coordinates.0,features.0.properties.duration,totalFeatures,features.0.id,features.0.properties.nuclide,timeStamp,features.0.geometry_name,features.0.properties.end_measure,features.0.properties.unit,type,features.0.properties.validated,features.0.properties.id,features.0.type,features.0.properties.kenn,numberMatched,crs.type,numberReturned
setstate test 2023-03-30 19:26:27 crs.properties.name urn:ogc:def:crs:EPSG::4326
setstate test 2023-03-30 19:26:27 crs.type name
setstate test 2023-03-30 19:26:27 features.0.geometry.coordinates.0 8.06
setstate test 2023-03-30 19:26:27 features.0.geometry.coordinates.1 50.16
setstate test 2023-03-30 19:26:27 features.0.geometry.type Point
setstate test 2023-03-30 19:26:27 features.0.geometry_name geom
setstate test 2023-03-30 19:26:27 features.0.id odlinfo_timeseries_odl_1h.fid--14020c47_187338e6fbb_-6f72
setstate test 2023-03-30 19:26:27 features.0.properties.duration 1h
setstate test 2023-03-30 19:26:27 features.0.properties.end_measure 2023-03-30T16:00:00Z
setstate test 2023-03-30 19:26:27 features.0.properties.id DEZ0824
setstate test 2023-03-30 19:26:27 features.0.properties.kenn 064390021
setstate test 2023-03-30 19:26:27 features.0.properties.name Bad Schwalbach
setstate test 2023-03-30 19:26:27 features.0.properties.nuclide Gamma-ODL-Brutto
setstate test 2023-03-30 19:26:27 features.0.properties.start_measure 2023-03-30T15:00:00Z
setstate test 2023-03-30 19:26:27 features.0.properties.unit µSv/h
setstate test 2023-03-30 19:26:27 features.0.properties.validated 1
setstate test 2023-03-30 19:26:27 features.0.properties.value 0.107
setstate test 2023-03-30 19:26:27 features.0.type Feature
setstate test 2023-03-30 19:26:27 numberMatched 167
setstate test 2023-03-30 19:26:27 numberReturned 1
setstate test 2023-03-30 19:26:27 timeStamp 2023-03-30T17:26:27.044Z
setstate test 2023-03-30 19:26:27 totalFeatures 167
setstate test 2023-03-30 19:26:27 type FeatureCollection

Das Ganze kann man natürlich noch schön machen. Aber der Abruf funktioniert.

VG Sebastian

Plotter

#42
Hallo Sebastian,
danke für die einfache Möglichkeit, die ODL-Daten weiterhin abrufen zu können. Es funktioniert sehr gut. Ich habe noch ein stateFormat festgelegt mit:

ODL: features.0.properties.value features.0.properties.unit
Außerdem fand ich interessant, dass die BfS-Messungen auch den terrestrischen und den kosmischen Anteil der ODL (Ortsdosisleistung) ausweisen. Da es diese beiden Werte nicht im Layer "odlinfo_timeseries_odl_1h" gibt, habe ich es mit dem Layer "odlinfo_odl_1h_latest" versucht. Leider konnte ich dort nicht über "viewparams=kenn:064390021" einen Standort herausfiltern. Erfolgreich war ich mit folgender Variante:

https://www.imis.bfs.de/ogc/opendata/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=opendata:odlinfo_odl_1h_latest&outputFormat=application/json&maxFeatures=1&sortBy=name&startIndex=1258
Die hinteren Parameter haben folgende Bedeutung:
- nur einen Datensatz lesen: maxFeatures=1
- nach dem Stationsnamen sortieren: sortBy=name
- bei folgender Nummer beginnen: startIndex=1258

Welchen Startindex die gewünschte Station bei der eingestellten Sortierung hat, habe ich über Probieren herausgefunden. Da es 1719 Datensätze gibt, kann man abschätzen, wo die Suche beginnen könnte. Bestimmt gibt es hier noch bessere Varianten. Auch andere Sortierungen sind möglich.

Damit man alle Angaben zu den Messwerten als Readings erhält, setzt man auch hier das Attribut "readingList" auf:

complete()
Nun kann ich nicht nur den Gesamtwert der ODL, sondern auch die terrestrischen und kosmischen Anteile für einen speziellen Ort auslesen. Über das stateFormat

K: features.0.properties.value_cosmic features.0.properties.unit T: features.0.properties.value_terrestrial features.0.properties.unit G: features.0.properties.value features.0.properties.unit bekomme ich eine sinnvolle Darstellung.

Viele Grüße

binford6000

ZitatDas Ganze kann man natürlich noch schön machen
Bitteschön:
single(jsonPath('crs.properties.name'),'crs_properties_name','error');
single(jsonPath('crs.type'),'crs_type','error');
single(jsonPath('features.0.geometry.coordinates.0'),'lon','error');
single(jsonPath('features.0.geometry.coordinates.1'),'lat','error');
single(jsonPath('features.0.geometry.type'),'geo_type','error');
single(jsonPath('features.0.geometry.name'),'geo_name','error');
single(jsonPath('features.0.id'),'bfs_id','error');
single(jsonPath('features.0.properties.duration'),'duration','error');
single(jsonPath('features.0.properties.end_measure'),'timestamp_end','error');
single(jsonPath('features.0.properties.id'),'station_name','error');
single(jsonPath('features.0.properties.kenn'),'station_kenn','error');
single(jsonPath('features.0.properties.name'),'station_city','error');
single(jsonPath('features.0.properties.nuclide'),'measurement','error');
single(jsonPath('features.0.properties.start_measure'),'timestamp_start','error');
single(jsonPath('features.0.properties.unit'),'unit','error');
single(jsonPath('features.0.properties.validated'),'validated','error');
single(jsonPath('features.0.properties.value'),'value','error');
single(jsonPath('features.0.type'),'type','error');
single(jsonPath('numberMatched'),'numberMatched','error');
single(jsonPath('numberReturned'),'numberReturned','error');
single(jsonPath('timeStamp'),'timeStamp','error');
single(jsonPath('totalFeatures'),'totalFeatures','error');
single(jsonPath('type'),'type','error');

VG Sebastian