… Unwetterwarnung: WetterOnline Deutschland Blitze
Beschreibung wie: IP-Symcon-Unwetterzentrale
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Blitz_Melder.ips.php
Trigger :
Interval :
*/
$homeX = 160;
$homeY = 100;
$homeRadius = 20;
//Zum Testen der X,Y,Radion Angaben auf true setzen und Bild hinerher angucken
//$debug= False;
$debug = True;
$wait = 840 ; // 14 Minuten Wartezeit, leider kommen nanchmal die Bilder recht spät
$offset = (date("i") % 30) * 60 + date("s");
IPS_SetScriptTimer("Blitz_Melder", 900 +$wait - $offset);
//Zeit berechnen
$minute = Floor(date("i") / 30) * 30;
//echo "Minuten: $minute
";
$dateline=mktime(date("H"), $minute, 0, date("m"), date("d"), date("y"));
$year=gmdate("Y", $dateline);
$month=gmdate("m", $dateline);
$day=gmdate("d", $dateline);
$time=gmdate("Hi", $dateline);
$time = $time - 100;
echo "Time: $time
";
$gifname = "DL$day$time.gif";
//http://www.wetteronline.de/daten/blitze/2007/06/DL121730.gif?
$remoteImage = "http://www.wetteronline.de/daten/blitze/$year/$month/$gifname";
echo "RemoteImage: $remoteImage
";
$localImage = IPS_GetKernelDir()."\\blitze.gif";
//Radarbild Downloaden
$remoteFile = fopen("$remoteImage",'rb');
$localFile = fopen($localImage,'wb');
if(!$remoteFile || !$localFile) {
exit; //Error erzeugen!
}
while (!feof($remoteFile)) {
$chunk = fread($remoteFile,1024);
fwrite($localFile,$chunk);
}
fclose($localFile);
fclose($remoteFile);
//Radarbild auswerten
$im = ImageCreateFromGIF ($localImage);
//Stärken
$blitz[6] = imagecolorresolve ($im, 246, 150, 60); // hell
$blitz[5] = imagecolorresolve ($im, 230, 70, 20);
$blitz[4] = imagecolorresolve ($im, 246, 120, 50);
$blitz[3] = imagecolorresolve ($im, 255, 42, 0);
$blitz[2] = imagecolorresolve ($im, 83, 210, 255);
$blitz[1] = imagecolorresolve ($im, 170, 255, 255);
//Pixel durchgehen
$blitz_intensi = 0;
for($x=$homeX-$homeRadius; $x<=$homeX+$homeRadius; $x++) {
for($y=$homeY-$homeRadius; $y<=$homeY+$homeRadius; $y++) {
$found = array_search(imagecolorat($im, $x, $y), $blitz);
if(!($found === FALSE)) {
$blitz_intensi +=$found;
}
}
}
$blitz_intensi = (int)( $blitz_intensi / 10);
//SetValueInteger("Blitzintensität", $blitz_intensi ); // Wert "merken"
//Im DebugModus Rechteck einzeichnen
if($debug) {
$schwarz = ImageColorAllocate ($im, 0, 0, 0);
$rot = ImageColorAllocate ($im, 255, 0, 0);
imagerectangle($im, $homeX-$homeRadius, $homeY-$homeRadius, $homeX+$homeRadius, $homeY+$homeRadius, $rot);
imagesetpixel($im, $homeX, $homeY, $rot);
imagegif($im, $localImage);
}
imagedestroy($im);
//Regenmenge der jeweiligen Stärken im Radius aufsummiert
echo "Blitzintensität: $blitz_intensi
";
if ($blitz_intensi >= 5) {
// ALARM
}
?>
MST