Gewitter / Blitze

… Unwetterwarnung: WetterOnline Deutschland Blitze

Beschreibung wie: IP-Symcon-Unwetterzentrale


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Blitz_Melder.ips.php
Trigger  : 
Interval : 
*/
$homeX = 160;
$homeY = 100;
$homeRadius = 20;

//Zum Testen der X,Y,Radion Angaben auf true setzen und Bild hinerher angucken
//$debug= False;
$debug = True;

$wait = 840 ; // 14 Minuten Wartezeit, leider kommen nanchmal die Bilder recht spät
$offset = (date("i") % 30) * 60 + date("s");
IPS_SetScriptTimer("Blitz_Melder", 900 +$wait - $offset);

//Zeit berechnen
$minute = Floor(date("i") / 30) * 30;
//echo "Minuten: $minute
";
$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);
$time =  $time - 100;
echo "Time: $time
";
$gifname = "DL$day$time.gif";
//http://www.wetteronline.de/daten/blitze/2007/06/DL121730.gif?
$remoteImage = "http://www.wetteronline.de/daten/blitze/$year/$month/$gifname";
echo "RemoteImage: $remoteImage
";
$localImage = IPS_GetKernelDir()."\\blitze.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
$blitz[6] = imagecolorresolve  ($im, 246, 150, 60);     // hell
$blitz[5] = imagecolorresolve  ($im, 230, 70, 20);
$blitz[4] = imagecolorresolve  ($im, 246, 120, 50);
$blitz[3] = imagecolorresolve  ($im, 255, 42, 0);
$blitz[2] = imagecolorresolve  ($im,  83,  210, 255);
$blitz[1] = imagecolorresolve  ($im, 170,  255, 255);

//Pixel durchgehen
$blitz_intensi = 0;

for($x=$homeX-$homeRadius; $x<=$homeX+$homeRadius; $x++) {
   for($y=$homeY-$homeRadius; $y<=$homeY+$homeRadius; $y++) {
      $found = array_search(imagecolorat($im, $x, $y), $blitz);
      if(!($found === FALSE)) {
         $blitz_intensi +=$found;
      }
   }
}

$blitz_intensi = (int)( $blitz_intensi  / 10);
//SetValueInteger("Blitzintensität", $blitz_intensi );    // Wert "merken"

//Im DebugModus Rechteck einzeichnen
if($debug) {
   $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);

//Regenmenge der jeweiligen Stärken im Radius aufsummiert
echo "Blitzintensität: $blitz_intensi
";

if ($blitz_intensi >= 5) {
   // ALARM
}
?>

MST

Mehr off-topic und noch mehr showcase
meine blitzortung : http://www.weerstationroeselare.be und auf 's bildchen klicken „Nieuw“.

Habe mir den Bolteck lightning detector gekauft und stormvue nutzt diese PCI karte um es graphisch auf eine karte ein zu tragen.

Viel spass beim gucken

Klasse Script! Läuft, wie immer ausgezeichnet.

Mann sollte nur noch die Zeile

$time =  $time - 100;

durch

$time =  sprintf("%04d", $time - 100);

ersetzen, da beim Subtrahieren die führende „0“ (in Worten: null :slight_smile: ) abgeschnitten wird. Probleme gibt das dann von 00:00 Uhr bis 09:59 Uhr.

Gruß Marcel

Der Script ist klasse.
Ich habe ein ähnliches Problem bei mir zwischen 02 und ca 05 Uhr
und werde das mal mit der Formatierung versuchen.

Bekomme beim ausführen von Blitz_Melder.ips.php folgenden Fehler:

Time: 1800
RemoteImage: http://www.wetteronline.de/daten/blitze/2007/07/DL011800.gif
<br />
<b>Fatal error</b>:  Call to undefined function ImageCreateFromGIF() in <b>C:\Programme\IP-Symcon\scripts\.currentscript</b> on line <b>56</b><br />

Nun meine Fragen:

  1. Suche die php_gd2.dll
    der Link in diesem Beitrag fkt. leider nicht mehr:
    http://www.ipsymcon.de/forum/showthread.php?t=1974
  2. habe keine php.ini
    reicht es wenn ich mir eine leere ini. ins IP-Symcon Vz. lege und den folgenden Code einfüge?
    Das extension_dir Vz. sollte dann wohl irgend ein Vz. mit der php_gd2.dll sein?

extension_dir = "D:\Source\IPSExport\" 
max_execution_time = 150 
extension = "php_gd2.dll" 

Thomas