Nochmals den ganzen Script:
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : UnwetterZentrale.ips.php
Trigger :
Interval :
*/
//Einstellungen in px
$homeX = 65;
$homeY = 70;
$homeRadius = 10;
//Zum testen der X,Y,Radion Angaben auf true setzen und Bild hinerher angucken
$debug= false;
//$debug = True;
//Auf 15 Minuten Takt Synchronisieren
$offset = (integer)date("s") + ((integer)date("i") % 15) * 60;
if($offset != 0) {
IPS_SetScriptTimer("UnwetterZentrale",900 - $offset);
} else {
IPS_SetScriptTimer("UnwetterZentrale",900);
}
//Zeit berechnen
$minute=Floor(date("i") / 15) * 15 - 30;
$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);
$remoteImage = "http://www.wetteronline.de/daten/radar/dbay/std.gif";
$localImage = IPS_GetKernelDir()."\\Image\Radar.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);
//Designer update
IMGP_SendEvent("radar.gif");
//Radarbild auswerten
$im = ImageCreateFromGIF ($localImage);
//Strken
$regen[6] = imagecolorresolve ($im, 255, 0, 255);
$regen[5] = imagecolorresolve ($im, 153, 51, 153);
$regen[4] = imagecolorresolve ($im, 28, 126, 217);
$regen[3] = imagecolorresolve ($im, 42, 170, 255);
$regen[2] = imagecolorresolve ($im, 83, 210, 255);
$regen[1] = imagecolorresolve ($im, 170, 255, 255);
//Pixel durchgehen
$regenmenge = 0;
for($x=$homeX-$homeRadius; $x<=$homeX+$homeRadius; $x++) {
for($y=$homeY-$homeRadius; $y<=$homeY+$homeRadius; $y++) {
$found = array_search(imagecolorat($im, $x, $y), $regen);
if(!($found === FALSE)) {
$regenmenge+=$found;
}
}
}
//Im DebugModus Rechteck einzeichnen
if($debug) {
$schwarz = ImageColorAllocate ($im, 0, 0, 0);
$rot = ImageColorAllocate ($im, 255, 0, 0);
imagefilledrectangle($im, $homeX-$homeRadius, $homeY-$homeRadius, $homeX+$homeRadius, $homeY+$homeRadius, $schwarz);
imagesetpixel($im, $homeX, $homeY, $rot);
imagegif($im, $localImage);
}
imagedestroy($im);
//Regenmenge der jeweiligen Strken im Radius aufsummiert
echo $regenmenge;
if ($regenmenge == 0) {
SetValueString("WE_Unwetter", "kein Regen in Anmarsch");
}
if ($regenmenge >= 1) {
SetValueString("WE_Unwetter", "Regen naht!");
}
if ($regenmenge >= 1000) {
SetValueString("WE_Unwetter", "alle Schotten dicht");
}
//gibt die Pixelanzahl aus
SetValueInteger ("Regenpixel" , $regenmenge);
?>