Für alle, die keinen FS20-Regenmelder haben, aber dennoch nicht im Regen stehen wollen,
hier der ultimative Tipp: die IP-Symcon-Unwetterzentrale
Es müssen lediglich die Koordinaten angepaßt werden. Dazu wird das Radar-Bild über die
Zwischenablage in z.B. „Paint“ kopiert und die X-Y- Koordinaten (mit dem Mauszeiger)
über dem Heimatort ablesen und in das Skript ($homeX, $homeY) übernehmen (Oben-Links ist 0,0).
Da nicht alle IP-Symcon-User im schönen Schleswig-Holstein wohnen, müssen die
z.B. die Bayern darauf achten: „dbay“ satt „dsch“ in „$remoteImage = "http:…“ einzutragen (verschiedene Regionen).
Was macht das Skript?
Im Regenradar von „Wetteronline“ werden Pixels in einem bestimmten Bereich mit der
Funktion: „ImageColorAt“ auf ihen Farbwert hin verglichen.
Nähert sich eine Regenwolke dem „Zielgebiet“, so wird Alarm ausgelöst.
- Es wird keine Haftung übernommen – :rolleyes:
MST
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : UnwetterZentrale.ips.php
Trigger :
Interval :
*/
//Einstellungen in px
$homeX = 324;
$homeY = 179;
$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/dsch/$year/$month/$day/$time.gif";
$localImage = IPS_GetKernelDir()."\\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);
//Radarbild auswerten
$im = ImageCreateFromGIF ($localImage);
//Stärken
$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 Stärken im Radius aufsummiert
echo $regenmenge;
if ($regenmenge >= 50) {
// include(IPS_GetScriptFile("Doorbell")); // DingDong-Sound
DXMedia_Open(62704, "d:/daten/sounds/regenradar.wav");
DXMedia_SetVolume(62704, 100);
DXMedia_Play(62704);
}
?>
Voraussetzung:
„php_gd2.dll“ - Download: GidF.de, da wechselnde Links
… und einen Eintrag in die PHP.ini:
.
.
.
extension_dir = "D:\Source\IPSExport\"
max_execution_time = 150
extension = "php_gd2.dll"
.
.
.
Anlage: Sound-Datei
regenradar.zip (31.4 KB)