… ein „IPS-Klassiker“ im neuen Gewand:
//Einstellungen in px - Oben-Links ist 0,0
$homeX = 250; // 250
$homeY = 140; // 140
$homeRadius = 15;
$remoteImage = "http://www.dwd.de/bvbw/portlets/WarnPortlet/jsp/getwarningmaps.jsp?src=SG_x_x_0.gif&mimeType=image/gif";
$localImage = IPS_GetKernelDir()."\\media\\unwetter.gif";
$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);
$warnung[4] = imagecolorresolve ($im, 175, 0, 100); // dunkel rot
$warnung[3] = imagecolorresolve ($im, 255, 255, 0); // rot
$warnung[2] = imagecolorresolve ($im, 250, 150, 0); // orang
$warnung[1] = imagecolorresolve ($im, 255, 255, 0); // gelb
//Pixel durchgehen
$warnstufe = 0;
for($x=$homeX-$homeRadius; $x<=$homeX+$homeRadius; $x++) {
for($y=$homeY-$homeRadius; $y<=$homeY+$homeRadius; $y++) {
$found = array_search(imagecolorat($im, $x, $y), $warnung);
if(!($found === FALSE)) {
$warnstufe+=$found;
}
}
}
SetValue(40729 /*[Wetter\Unwetterwarnung]*/, $warnstufe);
// Bereich zeichnen
$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);
echo "Unwetter: $warnstufe
";
if ($warnstufe > 100){
// ALARM
}
MST