PHP-Code:
<?
/*
dwddg = Deutschland
dbad = Baden-Württemberg
dbay = Bayern
dber = Brandenburg/Berlin
dhes = Hessen
dmec = Mecklenburg-Vorpommern
dnie = Niedersachsen/Bremen
dnrw = NRW
drlp = Rheinland-Pfalz/Saarland
dsac = Sachsen
dsan = Sachsen-Anhalt
dsch = Schleswig-Holstein/Hamburg
dtue = Thüringen
*/
$area = "dsch";
/*
Die Koordinaten könnt ihr am einfachsten herausfinden, indem ihr das Bild in Paint öffnet und mit dem Cursor auf euren Punkt geht. Dann könnt ihr in der Statuszeile von Paint die X/Y Koordinaten ablesen.
*/
$homeX = 324;
$homeY = 179;
/*
Der Radius gibt an, wie viele Pixel um euren Ort zur Berechnung des Regenwertes genutzt werden sollen
*/
$homeRadius = 10;
//Ab hier nichts mehr ändern
$object = IPS_GetObject($IPS_SELF);
$parentID = $object['ParentID'];
//Installer
if ($IPS_SENDER == "Execute") {
IPS_SetHidden($IPS_SELF, true);
IPS_SetName($IPS_SELF, "Auslese-Skript");
$parentObject = IPS_GetObject($parentID);
if ($parentObject['ObjectType'] !== 1)
{
$instanceID = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetParent($instanceID, $parentID);
$parentID = $instanceID;
IPS_SetParent($IPS_SELF, $parentID);
IPS_SetName($instanceID, "Unwetterzentrale");
}
IPS_SetScriptTimer($IPS_SELF, 3600);
}
//Auf 15 Minuten Takt Synchronisieren
$offset = (integer)date("s") + ((integer)date("i") % 15) * 60;
if($offset != 0) {
IPS_SetScriptTimer($IPS_SELF,900 - $offset);
} else {
IPS_SetScriptTimer($IPS_SELF,900);
}
//Zeit berechnen
$minute=floor(date("i") / 15) * 15;
$dateline=mktime(date("H"), $minute, 0, date("m"), date("d"), date("y"));
//Radarbild Downloaden
$opts = array(
'http'=>array(
'method'=>"GET",
'max_redirects'=>1
)
);
$context = stream_context_create($opts);
$localImage = IPS_GetKernelDir()."\\radar.gif";
$remoteImage = "http://www.wetteronline.de/daten/radar/$area/".gmdate("Y", $dateline)."/".gmdate("m", $dateline)."/".gmdate("d", $dateline)."/".gmdate("Hi", $dateline).".gif";
$data = @file_get_contents($remoteImage, false, $context);
if($data === false) {
//Altes Bild laden
$dateline -= 15*60;
$remoteImage = "http://www.wetteronline.de/daten/radar/$area/".gmdate("Y", $dateline)."/".gmdate("m", $dateline)."/".gmdate("d", $dateline)."/".gmdate("Hi", $dateline).".gif";
$data = @file_get_contents($remoteImage, false, $context);
if($data === false) {
return;
}
}
if((strpos($http_response_header[0], "200") === false)) {
return;
}
file_put_contents($localImage, $data);
//Radarbild auswerten
$im = ImageCreateFromGIF ($localImage);
//Stärken
$regen[6] = imagecolorresolve ($im, 250,2,250);
$regen[5] = imagecolorresolve ($im, 156,50,156);
$regen[4] = imagecolorresolve ($im, 28,126,220);
$regen[3] = imagecolorresolve ($im, 44,170,252);
$regen[2] = imagecolorresolve ($im, 84,210,252);
$regen[1] = imagecolorresolve ($im, 172,254,252);
//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;
}
}
}
// 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);
$mid = CreateImageByName($parentID, "Radarbild", "radar.gif");
IPS_SendMediaEvent($mid);
$vid = CreateVariableByName($parentID, "Regenwert", 1);
SetValue($vid, $regenmenge);
function CreateVariableByName($id, $name, $type, $profile = "") {
global $IPS_SELF;
$vid = @IPS_GetVariableIDByName($name, $id);
if($vid === false) {
$vid = IPS_CreateVariable($type);
IPS_SetParent($vid, $id);
IPS_SetName($vid, $name);
IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
}
return $vid;
}
function CreateImageByName($id, $name, $filename) {
global $IPS_SELF;
$mid = @IPS_GetMediaIDByName($name, $id);
if($mid === false) {
$mid = IPS_CreateMedia(1);
IPS_SetParent($mid, $id);
IPS_SetName($mid, $name);
IPS_SetInfo($mid, "this media was created by script #$IPS_SELF");
IPS_SetMediaFile($mid, $filename, true);
}
return $mid;
}
?>
paresy