programmieren:allgemein:strahlung
Strahlungsmessung überschritten
Dieses Script ließt die aktuelle Strahlung in uSv/h an dem angegeben Ort aus
und sendet bei Überschreitung des Grenzwertes eine Mail an den Empfänger.
Auf der Seite https://strahlenschutz.api.bund.dev/ werden die aktuellen Strahlungswerte von Deutschland angezeigt.
Dieses Script kann man als CRON Job alle 1 Stunde mal laufen lassen. Sollte der Grenzwert überschritten sein,
sendet es eine Mail.
- strahlung.php
<? /** Ließt die Daten für die Nukleare Strahlung ein und * sendet bei überschreiten eines Grenzwertes eine Warnemail * * Karte von ganz Deutschland: https://odlinfo.bfs.de/ODL/DE/themen/wo-stehen-die-sonden/karte/karte_node.html * Doku https://strahlenschutz.api.bund.dev/ * (C) by Conny Henn 2022 */ $grenzwert = "0.40"; // Grenzwert in µSv $kennung = "064350291"; // Kennung für die Messstelle - Info der ID aus der Karte oben $empfaenger = "max@mustermann.de, sabine@mustermann.de"; // Mailadresse (mehrere durch Komma getrennt) $absender = "System@mustermann.de"; // Absende Email $antwortan = "conny@mustermann.de"; // Antwort Mail Adresse $debug = false; // true = Übergabewerte anzeigen, false = normaler Modus (keine Anzeige) // -------- AB HIER SOLLTE NICHTS MEHR GEÄNDERT WERDEN ------------- $err = ""; $url = "https://www.imis.bfs.de/ogc/opendata/ows/?service=WFS&request=GetFeature&typeName=opendata%3Aodlinfo_timeseries_odl_1h&outputFormat=application%2Fjson&viewparams=kenn%3A$kennung&sortBy=end_measure+D&maxFeatures=1"; $json = file_get_contents($url); if (!$json) { $err = "Fehler im Strahlung.php Script - URL konnte nicht gelesen werden.<br>"; } $obj = json_decode($json); // éingelesene Werte anzeigen if ($debug) { echo "<h1>DEBUG-MODUS strahlung.php</H1>"; echo "<pre>"; print_r($obj->features); echo "</pre>"; } $zeit = $obj->features[0]->properties->end_measure; // Mess Zeit $ort = $obj->features[0]->properties->name; // Mess Ort $erg = $obj->features[0]->properties->value; // Mess Wert $unit = $obj->features[0]->properties->unit; // Mess Einheit $info = ""; $info = "<h1>Nucleare-Strahlungs-Messung</h1>"; $info .= "<b>ACHTUNG</b> - Strahlungsgrenzwert von $grenzwert $unit überschritten !!!<br><br>"; $info .= "<table>"; $info .= "<tr><td><b>Messort:</b></td><td>$ort</td></tr>"; $info .= "<tr><td><b>Zeit:</b></td><td>$zeit</td></tr>"; $info .= "<tr><td><b>Messwert:</b></td><td>$erg $unit</td></tr>"; $info .= "<tr><td><b>Grenzwert:</b></td><td>$grenzwert $unit</td></tr>"; $info .= "</table><br><br>"; $info .= "<hr><b>Legende:</b><br>"; $info .= "<table> <tr><td></td><td><b>NOTFALL</b></td></tr> <tr><td>".(($erg > 100) ? '►' : '')."</td> <td><span style='color:#F00;'>⬤ </span> > 100,000 µSv/h</td></tr> <tr><td>".(($erg > 50 AND $erg <= 100) ? $erg.' ►' : '')."</td><td><span style='color:#D8033E;'>⬤ </span> > 50,000 µSv/h</td></tr> <tr><td>".(($erg > 10 AND $erg <= 50) ? $erg.' ►' : '')."</td><td><span style='color:#B70563;'>⬤ </span> > 10,000 µSv/h</td></tr> <tr><td>".(($erg > 1 AND $erg <= 50 ) ? $erg.' ►' : '')."</td><td><span style='color:#980056;'>⬤ </span> > 1,000 µSv/h</td></tr> <tr><td>".(($erg > 0.6 AND $erg <= 1) ? $erg.' ►' : '')."</td><td><span style='color:#8B008B;'>⬤ </span> > 0,600 µSv/h</td></tr> <tr><td></td><td><hr></td></tr> <tr><td></td><td><b>NORMAL BEREICH</b></td></tr> <tr><td>".(($erg > 0.4 AND $erg <= 0.6) ? $erg.' ►' : '')."</td><td><span style='color:#0C2C84;'>⬤ </span> > 0,400 µSv/h</td></tr> <tr><td>".(($erg > 0.2 AND $erg <= 0.4) ? $erg.' ►' : '')."</td><td><span style='color:#225EA8;'>⬤ </span> > 0,200 µSv/h</td></tr> <tr><td>".(($erg > 0.17 AND $erg <= 0.2) ? $erg.' ►' : '')."</td><td><span style='color:#1D91C0;'>⬤ </span> > 0,170 µSv/h</td></tr> <tr><td>".(($erg > 0.14 AND $erg <= 0.17) ? $erg.' ►' : '')."</td><td><span style='color:#41B6C4;'>⬤ </span> > 0,140 µSv/h</td></tr> <tr><td>".(($erg > 0.08 AND $erg <= 0.14) ? $erg.' ►' : '')."</td><td><span style='color:#C7E9B4;'>⬤ </span> > 0,080 µSv/h</td></tr> <tr><td>".(($erg <= 0.08 ) ? $erg.' ►' : '')."</td><td><span style='color:#EDF8B1;'>⬤ </span> < 0,080 µSv/h</td></tr> </table><hr> <b>Grenzwerte:</b> <small>Werte bis zu 0,600 µSv/h sind noch tollerant</small><br> "; $info .= "<b>Übersichtskarte: </b><a href='https://odlinfo.bfs.de/ODL/DE/themen/wo-stehen-die-sonden/karte/karte_node.html'>Link</a>"; if ($debug){ echo "<hr><h1>Inhalt Mail:</h1>".$info; } if ($erg >= $grenzwert OR $err <> "") { // ----------------- EMAILS VERSENDEN ------------------ // Betreff $betreff = 'ACHTUNG - Nuclearer-Strahlungsgrenzwert überschritten !!!'; // Nachricht $nachricht = ' <html> <body>'.((!empty($err)) ? $err : $info).' </body> </html> '; // für HTML-E-Mails muss der 'Content-type'-Header gesetzt werden $header[] = 'MIME-Version: 1.0'; $header[] = 'Content-type: text/html; charset=utf-8'; $header[] = "From: $absender"; $header[] = "Reply-To: $antwortan"; $header[] = "X-Mailer: PHP ". phpversion(); // verschicke die E-Mail mail($empfaenger, $betreff, $nachricht, implode("\r\n", $header)); } ?>
programmieren:allgemein (313 views) · Zuletzt geändert: 27/05/2022 14:29 von conny