Hallo,
anbei ein Beispiel für „Unwetterzentrale.ips.php“ in V2 mit Ausgabe des Status über Soundkarte (Links für Soundfile und Image für Wetterdaten sind entsprechend anzupassen).
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : UnwetterZentrale_V2.ips.php
Trigger :
Interval :
*/
//Einstellungen in px
$homeX = 208;
$homeY = 125;
$homeRadius = 15;
//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/dber/std.gif";
$remoteImage = "http://www.wetteronline.de/daten/radar/dber/$year/$month/$day/$time.gif";
//$localImage = IPS_GetKernelDir()."\\radar.gif";
$localImage = "C:/Programme/IP-Symcon_V2/IP-Symcon/Icons/Radarbild/radar_1.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_1.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 Staerken 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 >= 50) {
$id_status = 19518; //Statusvariable
//$id_visible = 3456; //Variable für Designer
$status = getvalue($id_status);
if ($status == 3) {
//setvalue($id_visible, false);
// include(IPS_GetScriptFile("Doorbell")); // DingDong-Sound
WAC_PlayFile(46056 /* ObjektID MediaPlayer */, "C:/Programme/IP-Symcon_V2/IP-Symcon/sounds/regenradar.wav");
WAC_SetVolume(46056, 100);
WAC_Play(46056 /*[regenradar.wav]*/);
}
}
if ($regenmenge >= 1000) {
SetValueString("WE_Unwetter", "Alle Schotten dicht!");
}
//gibt die Pixelanzahl aus
SetValueInteger ("Regenpixel" , $regenmenge);
?>