Benutzer-Werkzeuge

Webseiten-Werkzeuge


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> &gt; 100,000 µSv/h</td></tr>
			<tr><td>".(($erg > 50 AND $erg <= 100)    ?  $erg.' ►' : '')."</td><td><span style='color:#D8033E;'>⬤ </span> &gt; 50,000 µSv/h</td></tr>
			<tr><td>".(($erg > 10 AND $erg <= 50)     ?  $erg.' ►' : '')."</td><td><span style='color:#B70563;'>⬤ </span> &gt; 10,000 µSv/h</td></tr>
			<tr><td>".(($erg >  1 AND $erg <= 50 )    ?  $erg.' ►' : '')."</td><td><span style='color:#980056;'>⬤ </span> &gt; 1,000 µSv/h</td></tr>
			<tr><td>".(($erg > 0.6 AND $erg <= 1)     ?  $erg.' ►' : '')."</td><td><span style='color:#8B008B;'>⬤ </span> &gt; 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> &gt; 0,400 µSv/h</td></tr>
			<tr><td>".(($erg > 0.2 AND $erg <= 0.4)   ?  $erg.' ►' : '')."</td><td><span style='color:#225EA8;'>⬤ </span> &gt; 0,200 µSv/h</td></tr>
			<tr><td>".(($erg > 0.17 AND $erg <= 0.2)  ?  $erg.' ►' : '')."</td><td><span style='color:#1D91C0;'>⬤ </span> &gt; 0,170 µSv/h</td></tr>
			<tr><td>".(($erg > 0.14 AND $erg <= 0.17) ?  $erg.' ►' : '')."</td><td><span style='color:#41B6C4;'>⬤ </span> &gt; 0,140 µSv/h</td></tr>
			<tr><td>".(($erg > 0.08 AND $erg <= 0.14) ?  $erg.' ►' : '')."</td><td><span style='color:#C7E9B4;'>⬤ </span> &gt; 0,080 µSv/h</td></tr>
			<tr><td>".(($erg <= 0.08 )                ?  $erg.' ►' : '')."</td><td><span style='color:#EDF8B1;'>⬤ </span> &lt; 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));
 
}
?>
Diese Website verwendet nur für den Betrieb notwendige Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer sowie den Datenschutzbestimmungen zu. Wenn Sie nicht einverstanden sind, verlassen Sie die Website. Weitere Information
programmieren:allgemein (41 views) · Zuletzt geändert: 27/05/2022 14:29 von conny