IP-Symcon-Unwetterzentrale

Hallo Steiner,

ich habe heute die Unwetterzentrale installiert.
Es funktioniert alles wunderbar. Ich habe das Script ein wenig im unteren Teil geändert. Da müste mir die Pixelzahl als VarRegenpixel ausgegeben werden.


//gibt die Pixelanzahl aus
SetValueInteger ("Regenpixel" , $regenmenge);

Auserdem aktualisiert mir das


//Designer update
IMGP_SendEvent("radar.gif");

mein Gif.

Mein Problem:
Wenn ich das Script starte wird mir immer „0“ ausgegeben obwohl ich die Koordinaten in ein Regengebiet gesetzt habe.
Irgendwie funktioniert bei mir diese Pixelauswertung nicht.

Kann jemand einen Anfänger helfen?

mfg Christian

Nochmals den ganzen Script:


<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File     : UnwetterZentrale.ips.php
Trigger  :
Interval :
*/

//Einstellungen in px

$homeX = 65;
$homeY = 70;
$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/dbay/std.gif";
$localImage = IPS_GetKernelDir()."\\Image\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);

//Designer update

IMGP_SendEvent("radar.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 Strken 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 >= 1000) {
      SetValueString("WE_Unwetter", "alle Schotten dicht");
}
//gibt die Pixelanzahl aus
SetValueInteger ("Regenpixel" , $regenmenge);


?>

Hallo,

bin auch gerade dabei das Script einzubinden…:slight_smile:

Saubere Arbeit Steiner.

Aber auch ich habe das Problem das meine Regenmenge bei 0 bleibt.

Irgendwie stimmt meine Zeit auch nicht. Wenn ich $time mit ausgebe
wir jetzt (0:30) 2145 angezeigt:confused:

Habe das letzte Script verwendet. Hat jemand vielleicht einen Tip
was bei mir falsch läuft.

Grüße

DVB-Freak

Hallo,

für IPS-User, die weniger als 100 km von Bonn entfernt ein Niederschlagsradar suchen, stellt das meteorologische Institut der Uni Bonn seit Jahren im 5 Minuten (!) Abstand Niederschlagsradarbilder ins Netz.

zB: http://www.meteo.uni-bonn.de/forschung/gruppen/radar/eaz_z.htm

Vorteil: die Auflösung ist wesentlich feiner
Nachteil: Störimpulse im Radar müssen softwaremäßig rausgefiltert werden

Falls Interesse besteht, stelle ich meine PHP - Scripts zum Auswerten hier mal rein.

Gruß Rolf

und ich muss mich leider mit dem 5 Minuten Abstand korrigieren (das war Gestern , bei dem Regenwetter):

Heute bei Sonneschein udn Null Regen Update Abstand von bis zu 2 Stunden.

Hoffe, dass das nur bei gutem Wetter so ist, sonst kann ich die Seite in die Tonne treten.

Gruß
Rolf

Hallo zusammen,

ich wollte das Script Unwetterzentrale auf meinem IPS realisieren. Beim fopen auf die Internet URL bekomme ich immer folgende Fehlermeldung:

Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\Program Files\IP-Symcon\scripts\53230.ips.php on line 50

Warning: fopen(http://www.wetteronline.de/daten/radar/dbay/2009/04/29/2000.gif) [function.fopen]: failed to open stream: No error in C:\Program Files\IP-Symcon\scripts\53230.ips.php on line 50

Ich Browser kann ich die URL ohne Probleme öffen. Habt ihr einen Tipp für mich, was ich tun kann.

Gruss
Icey

Hallo Icey,
hab gerade mal kurz getestet.
Kein Problem.

Bei mir tritt das Problem allerdings auf, wenn ich über einen Proxy auf die URL zugreife. Über den Browser dann kein Problem.

Grüße,
Neon

Hallo Neon,

danke für Deinen Tipp. Die Idee hatte ich auch schon und habe deshalb meine Firewall durchgeschaltet um den lokalen Proxy in meinem Netzwerk zu umgehen. Aber leider der selbe Effekt. Ich habe auch schon versucht mit fopen(„URL“) auf einen lokalen WEB-Server zuzugreifen. Aber leider auch hier bekomme ich immer wieder die Fehlermeldung:

Warning: fopen() [function.fopen]: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\Program Files\IP-Symcon\scripts\53230.ips.php on line 50

Sonstige IP-Symcon-Funktionen wie WWW Reader und anschließender Text Parser arbeiten absolut problemlos. Habe übrigens die V2 im Einsatz. Auch in den PHP Dokus bin ich leider nicht fündig geworden.

Gruss
Easy

Guten Abend :slight_smile:

Das ist ein Problemen mit der DNS-Auflösung.
Ersetz mal www.wetteronline.de durch die IP 81.20.95.100 zum testen.

Hm, läuft der WWW-Reader evtl. doch noch über den Proxy?

Hi Sysrun,

ohne Proxy und mit direkter Adresse geht es leider auch nicht.

Warning: fopen(81.20.95.100/daten/radar/dbay/2009/04/29/2000.gif) [function.fopen]: failed to open stream: No such file or directory in C:\Program Files\IP-Symcon\scripts\40246.ips.php on line 4

Warning: fclose(): supplied argument is not a valid stream resource in C:\Program Files\IP-Symcon\scripts\40246.ips.php on line 5

Im Browser wird es sofort geladen.

Gruss
Easy

„http://“ muss schon noch vor die IP sonst weiss fopen nicht welcher Port (80) geöffnet werden soll :slight_smile:

den Fehler hatte ich heute auch bei mir wars ein Verbindungs fehler die -webseite war nicht erreichbar

Danke sysrun,

mit der direkten IP-Adresse und ohne Proxy klappt es jetzt.

$remoteImage = „http://81.20.95.100/daten/radar/dbay/$year/$month/$day/$time.gif“;

Warum das Script die Adresse nicht auflösen kann, ist mir schleierhaft. Leider geht es auch nicht mit Proxy. Na ja, muss ich halt noch ein weiteres Loch in die Firewall schneiden.

Dank an alle und Gruss
Easy

Hallo zusammen,
sagt mal, wo findet man eigentlich das radarbild ?
Ich würde gerne mal den debug Modus nutzen, um meinen Standort und somit die Pixel einzustellen.

Irgendwie finde ich da aber nix…habe ich da was falsch verstanden ?

Gruss
B71

Bild gibts unter WetterOnline Deutschland zu sehen. Per Klick geht es ins jeweilige Bundesland.

Hallo Horst,

und wie stelle ich dann meine Pixel für meinen Wohnort ein ?

Ich stehe da etwas auf dem Schlauch ehrlich gesagt.

Gruss
B71

Du lädst dir dort erst mal ein Bild aus deinem Bereich herunter, öffnest es dann in MS Paint und zeigst mit dem Mauszeiger auf deinen Wohnort. Im MS Paint werden dir dann die benötigten Koordinaten unten rechts angezeigt. Die trägst du dann im Skript ein.

P.S.: Ich habe mir das Skript etwas angepasst, so das das Bild sofort geladen wird, wenn es ein Neues gibt und nicht erst mit 30 Minuten Verzögerung. Scheint bisher auch ganz gut zu funktionieren. Kann zwar bei dem manuellen Ausführen des Skripts zu einem Fehler führen, synchronisiert sich aber bei dem ersten Timerlauf wieder.

//Auf 15 Minuten Takt Synchronisieren

$offset = (integer)date("s") + ((integer)date("i") % 15) * 60;
//echo $offset."
";
if($offset != 0) {
   IPS_SetScriptTimer("UnwetterZentrale",1200 - $offset);
} else {
    IPS_SetScriptTimer("UnwetterZentrale",1200);
}

//Zeit berechnen

//$minute=Floor(date("i") / 15) * 15 - 30;
$minute=Floor(date("i") / 15) * 15;
$dateline=mktime(date("H"), $minute, 0, date("m"), date("d"), date("y"));

@OBI

DANKE für dieses Licht in meiner dunklen Ecke :slight_smile:

Und ASCHE auf mein Haupt…das steht ja in Zeile 4 von @Steiners Posting !! mann, mann, mann…

Gruss
B71

Hallo zusammen,

warum ist die $time Variable eigentlich um 2 Stunden verschoben wenn ich diese ausgebe ?

Das habe ich selbst bei mehrmaligem Lesen des gesamten Posts nicht verstanden.

2-3 haben diese Frage ja auch schon gestellt, aber die Antwort nach dem WARUM habe ich irgendwie nicht gefunden.

Bitte um Erleuchtung :slight_smile:

Weil $time als GMT angegeben wird. Erst die date() Funktion fügt unsere Zeitzone + Sommerzeit hinzu.

paresy