IP-Symcon-Unwetterzentrale

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

radar_wetteronline.jpg

regenradar.zip (31.4 KB)

Ich werde da mal versuchen, sieht gut aus.

Ich habe nur einfach dieses Bild bei mir in Designer eingebaut. Ich brauch kein Quadrat da die Millionen Weltstadt Luxemburg leicht zu finden ist, nicht? :smiley:
Nur dieses „Start“ stört ein wenig. :frowning:

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.

Das ist zwar super, nur gibt der Designer keine Töne von sich ! :frowning:

mfG Franz

Hallo,

also nachdem ich ja jetzt vergangene Woche im Garten geschuftet habe und es immer wieder regnete, habe ich festgestellt, dass man sich auf die Karte absolut nicht verlassen kann. Das ist einfach viel zu grob. Ca. 10 km entfernt war Sonnenschein, bei mir hats geregnet. Dann gabs Zeiten, da war es gerade andersherum. Ich will damit sagen, dass es in der letzten Zeit sogenannte Regenstreifen oder wie man das auch immer nennt, gibt. Und genau das kann die Karte nicht darstellen - leider. Deshalb konnte ich meine Bauplanung auch nicht auf das Wetter Radar des Niederschlages abstimmen, es stimmte einfach meistens nicht.

Konsequenz: Ich warte auf den selbstkalibrierenden 1-Wire Regenmelder, das duerfte ja nicht mehr lange dauern. Dann habe ich zumindest einen richtigen Wert, ob es regnet oder nicht.

Gruss Torro

Ahem, sowieso gibt diese Karte meiner Meinung nach nicht den Niederschlag wieder. Ich bin mir da eher sicher, dass diese Karte Regen-geladene Wolken wiedergibt die gerade vorbeiziehen. Ob die sich dann ergiessen ist 'ne andere Sache.

Torro, der 1-Wire Regensensor wird dir nur sagen „Es regnet jetzt“ aber er wird dir nicht sagen „Es wird wahrscheinlich Regen geben“ :smiley:

mfG Franz

:confused: dies hat nichts mir dem Designer oder 1Wire zu tun!
Der Witz hierbei ist, dass man vor dem Regenschauer eine Meldung bekommt.
Bei mir funktioniert es zuverlässig. Es reicht aus, um ein Velux-Fenster zu schließen
oder die Gartenauflagen rein zu nehmen.

MST

Sicher, aber Torro hat schon irgendwo recht. Wenn eine Regenwolke vorbei zieht, muss es nocht nicht unbedingt regnen. Des weiteren würde ich schon sagen, es könnte was mit dem Designer zu tun, denn mein IPS Rechner steht irgendwo in einer Ecke, wo nicht andernd einer vorbei läuft und irgendeine WAV-Datei hört.
Da wäre ein „Biepen“ im Designer schon hilfreich, denn da laufen bei mir andauernd Leute vorbei.

Trotzdem, Super Skript. Jetzt habe ich wieder was zum Spielen und zum Lernen um meine PHP vorwärts zu bringen. Danke

mfG Franz

Franz seine beitrage-counter bleibt stehen auf 999
Er ist anscheinend in die IPS aktions-woche einbegriffe (999,-) :wink:

Hallo steiner,

tja, heute wieder bei uns das beste „Negativbeispiel“: keine Regenwolke, aber es hat beim Betongiessen geregnet. Das hat vielleicht gepanscht dabei. Leider kann man da nicht den Fahrer ne halbe Stunde stehen lassen, bis es aufhoert. Und ich hatte extra vorher nochmal geschaut und es war nix von irgendwelchen Regenwolken (bzw. diese blauen pixel) zu sehen…

Aber wenn es bei Dir klappt, liegt das eher an der Flachheit des Gelaendes. Ich fuerchte, durch Becken, Taeler und Berge laesst sich das Niederschlagsgebiet leider eben nicht so genau vorhersagen.

Gruss Torro

hmm, werden diese Daten nicht von Doppler-Radaren geliefert? Hier handelt es sich nicht um Berechnungen !

mfG Franz

Jetzt hat’s sich geändert …
hihi -> jetzt kostet er mehr :wink:

Hallo GGGss,

haeh? Was meinste denn damit? Im Moment kann ich Dir nicht folgen…

Gruss Torro

Er spricht von meinen Posts !

mfG Franz

Hi,

@steiner: nette Idee. Find ich klasse.

@all: ich bekomme beim Aufruf des Scriptes folgende Fehlermeldung:

<br />
<b>Fatal error</b>:  Call to undefined function ImageCreateFromGIF() in <b>C:\Programme\IP-Symcon\scripts\.currentscript</b> on line <b>65</b><br />

Das ist folgende Zeile:

$im = ImageCreateFromGIF ($localImage);

Woran liegt das bzw. wie kann ich den Fehler abstellen?

Gruß

Jimmy

Ich könnte mich jetzt täuschen, aber ich glaube, man braucht die Extension-Datei php_gd2.dll im IPS Ordner.

mfG Franz

Sorry - richtig - diese gibt es hier: http://de3.php.net/get/php-5.1.5-Win32.zip/from/a/mirror

… und einen Eintrag in die PHP.ini:


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

MST

Ja es liegt daranl, dass GD2 nicht drin ist.

-Übrigens kann das Script keine Animierten GIF’s verarbieten
-Es ist nicht eingebaut, dass die „Region“ über den Rand rausgeht, d.h. Wenn ihr am Rand einer Karte wohnt müsst ihr das beachten.
-Evtl ist ein Radius von 10px zu klein. ´Wenn ihr Debug = True setzt, könnt ihr sehen, wie groß der Bereich ist den das Script vergleicht.

Die WetterOnline Bilder sind meisten mit 30 Minuten verspätung da, manchmal aber auch schon nach 15 Minuten… da könnte man das Script noch etwas verbessern oder intelligenter machen…

paresy

Hallo steiner,

der Link funzt net. …Download not found.

Gruß
Jimmy

http://www.php.net/get/php-5.1.5-Win32.zip/from/a/mirror

paresy

THX, paresy, Link funzt, Fehler tritt nicht mehr auf.

Gruß

Jimmy

Hallo Michael,
nettes Script, wurde auch gleich verarbeitet :smiley:

Wie könnte man den Debug-Modus so abwandeln, das nicht einfach ein schwarzer Kasten sondern ein z.B. roter Rahmen das „Zielgebiet“ markiert.
Hat da jemand eine Idee, wie das geht?

Doc