Fragen zur Eigenen Wetterseite

Warum die Meldung unterdrücken? Normaler weise ist sie beim nächsten Aufruf wieder weg. Bleibt sie länger stehen muss man mal nachschauen warum.

Ich nutze aber das IPSLogger Programm und das blendet diese Meldug so lange am oberen Bildschirmrand des Webfront ein bis man sich duch eie Klick bestätigt und das ist beliebig nervig zumal es ja eigentlich nur eine Info für mich ist.

na irgendwas ist ja immer, aber diese Entscheidung kann dir wohl niemand abnehmen.
Das alles, was du hier tun kannst, Vor- und Nachteile hat, wurde hja recht ausführlich beleuchtet.:wink:

Hä? :confused: Die Aussage hab ich jetzt nicht verstanden!

Ich suche eine Möglichkeit die Meldung zu unterdrücken das hat nur Vorteile :wink:

PS: Wenn ich wüsste wie man diese externe Seite debuggen kann, würde ich ja mal rein schauen.

Wie wäre es mit einem einfachen Counter? Nach X Fehlermeldungen Fehler werfen, wenn abrufen erfolgreich dann Counter zurücksetzen.

Ich hab den PHP Teil mal in IPS rein gezogen und kann es da ausführen.

Um eine saubere Verabeitung zu bekommen hab ich die Abfragen in einen Try-Catch Block gesetzt aber dann wird die Meldung im IPSLogger trotzdem ausgegeben. Das ist irgendwie nicht das, was ich erwartet hätte.

OK, werde ich das ganze also mit dem @ unterdrücken. Nicht schön aber wenn es denn so ist. Vor allem eil das Programm dann bei dem Fehler gar nicht in den Catch Teil springt :confused:

Hier mal die Funktion mit Try-Catch Block, vielleicht mache ich ja auch einen Denkfehler:

function website_wetter($plz, $land, $icons_src="/", $iconsAktuell="/", $sprache="de", $ort="")
{
    $icons_google = "/ig/images/weather/";

    if($ort != "")
    {
        $station = $ort;
    }
    else
    {
        $station = $plz."-".$land;
    }

    $api = simplexml_load_string(utf8_encode(Sys_GetURLContent("http://www.google.com/ig/api?weather1=".$station."&hl=".$sprache)));
//	print_r($api);
    $wetter = array();

	try
	{
	    // Aktuelles Wetter
	    $wetter[0]['zustand'] = @$api->weather->current_conditions->condition->attributes()->data;
	    $wetter[0]['temperatur'] = $api->weather->current_conditions->temp_c->attributes()->data;
	    $wetter[0]['luftfeuchtigkeit'] = $api->weather->current_conditions->humidity->attributes()->data;
	    $wetter[0]['luftfeuchtigkeit'] = str_replace("Feuchtigkeit", "rel.Luftfeuchte", $wetter[0]['luftfeuchtigkeit']);
	    $wetter[0]['wind'] = $api->weather->current_conditions->wind_condition->attributes()->data;
	    $wetter[0]['icon'] = str_replace($icons_google, $iconsAktuell, $api->weather->current_conditions->icon->attributes()->data);
		 $wetter[0]['icon'] = str_replace(".gif", ".png", $wetter[0]['icon']);

	    // Wettervorhersage heute, morgen, in zwei und in drei Tagen ($wetter[1] bis $wetter[4])
	    $i = 1;
	    foreach($api->weather->forecast_conditions as $weather)
	    {
	        $wetter[$i]['wochentag'] = $weather->day_of_week->attributes()->data;
	        $suchArr = array('Mo.','Di.','Mi.','Do.','Fr.','Sa.','So.');
	        $ersetzArr = array('Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag');
	        $wetter[$i]['wochentag'] = str_replace($suchArr, $ersetzArr, $wetter[$i]['wochentag']);
	        $wetter[$i]['zustand'] = $weather->condition->attributes()->data;
	        $wetter[$i]['tiefsttemperatur'] = $weather->low->attributes()->data;
	        $wetter[$i]['hoechsttemperatur'] = $weather->high->attributes()->data;
	        $wetter[$i]['icon'] = str_replace($icons_google, $icons_src, $weather->icon->attributes()->data);
	        $wetter[$i]['icon'] = str_replace(".gif", ".png", $wetter[$i]['icon']);
	        $i++;
			if($wetter[0]['icon'] == "")
			{
				$wetter[0]['icon'] = $wetter[1]['icon'];
				$wetter[0]['icon'] = str_replace($icons_google, $iconsAktuell, $weather->icon->attributes()->data);
				$wetter[0]['icon'] = str_replace(".gif", ".png", $wetter[0]['icon']);
			}
	    }
	}
	catch (Exception $e)
	{
	   $wetter = null;
	   print "catch".$e;
	}
   return $wetter;
}

Es scheint so als würde das Programm an der Stelle des Fehlers einfach beendet, es läuft def. nicht in den catch Block. Was ist das denn für ein Verhalten?

So nachdem das Wetter Skript eine ganze Weile problemlos gelaufen ist hab ich jetzt leider wieder ständig eine Meldung die da lautet:

Medlung.png

Diese Meldung wurde schon mal angesprochen in diesem Thread aber da ging es um einen falsch geschriebenen Ort. Bei mir funktionierte das Skript aber lange Zeit problemlos und ich benutzte schon von Anfang an die PLZ aber auch wenn ich irgend einen Ort eintrage bekomme ich die Meldung.

Kann mir jemand sagen, was das sein könnte? Es ist sehr nervig, da sich die Meldung dauernd in die oberste Zeile des Webfront legt und man sie jedes mal weg klicken muss :frowning: Der WAF ist da nicht sonderlich groß.

Übrigens, das ist die Ausgabe des Skriptes "ftpServerDWD, das in IPS gestartet wird, was ja sehr gut ausschaut:

Verbunden zu ftp-outgoing2.dwd.de mit Username gds23770
Aktuelles Verzeichnis: /gds/gds/specials/forecasts/text
Letzte Aktualisierung: 121334
VHDL50_DWEH_121334 wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\berichte\berichtHeute.txt geschrieben.
VHDL51_DWEH_121334 wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\berichte\berichtMorgen.txt geschrieben.
VHDL52_DWEH_121334 wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\berichte\berichtUebermorgen.txt geschrieben.
Aktuelles Verzeichnis: /gds/gds/specials/forecasts/maps/germany
West_morgen_frueh.jpg wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\karten\West_morgen_frueh.jpg geschrieben.
West_morgen_spaet.jpg wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\karten\West_morgen_spaet.jpg geschrieben.
West_ueberm_frueh.jpg wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\karten\West_ueberm_frueh.jpg geschrieben.
West_ueberm_spaet.jpg wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\karten\West_ueberm_spaet.jpg geschrieben.
West_tag4_frueh.jpg wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\karten\West_tag4_frueh.jpg geschrieben.
West_tag4_spaet.jpg wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\karten\West_tag4_spaet.jpg geschrieben.
Deutschland_morgen_spaet.jpg wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\karten\Deutschland_morgen_spaet.jpg geschrieben.
Deutschland_ueberm_spaet.jpg wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\karten\Deutschland_ueberm_spaet.jpg geschrieben.
Deutschland_tag4_spaet.jpg wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\karten\Deutschland_tag4_spaet.jpg geschrieben.
Aktuelles Verzeichnis: /gds/gds/specials/radar
Radarfilm_WEB_DL.gif wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\radarfilm\Radarfilm_WEB_DL.gif geschrieben.
Aktuelles Verzeichnis: /gds/gds/specials/radar/west
Webradar_West_20120812_1409.jpg wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\radarfilm\Webradar.jpg geschrieben.
Aktuelles Verzeichnis: /gds/gds/specials/observations/maps/germany
West_20120812_1610.jpg wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\karten\West.jpg geschrieben.
Deutschland_20120812_1610.jpg wurde erfolgreich nach C:\IP-Symcon\webfront\user\WetterFtpDWD\karten\Deutschland.jpg geschrieben.

Die Meldung kommt eher daher, das die Google-API nicht geladen wird.

Hallo Rainer,

danke für die schnelle Antwort aber wie bekomme ich ich die API geladen?

PS: Wenn ich den Aufruf http://www.google.com/ig/api?weather=53639-Germany&hl=de mal in den Browser gebe bekomme ich zumindes eine XML Datei geliefert, die wie folgt ausschaut:

<?xml version="undefined" encoding="undefined"?>
<xml_api_reply version="1" >
       <weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" >
              <forecast_information>
                     <city data="Königswinter, Nordrhein-Westfalen" />
                     <postal_code data="53639-Germany" />
                     <latitude_e6 data="" />
                     <longitude_e6 data="" />
                     <forecast_date data="2012-08-12" />
                     <current_date_time data="1970-01-01 00:00:00 +0000" />
                     <unit_system data="SI" />
                 </forecast_information>
              <current_conditions>
                     <condition data="Klar" />
                     <temp_f data="75" />
                     <temp_c data="24" />
                     <humidity data="Luftfeuchtigkeit: 36 %" />
                     <icon data="/ig/images/weather/sunny.gif" />
                     <wind_condition data="Wind: O mit 14 km/h" />
                 </current_conditions>
              <forecast_conditions>
                     <day_of_week data="So." />
                     <low data="12" />
                     <high data="24" />
                     <icon data="/ig/images/weather/mostly_sunny.gif" />
                     <condition data="Meist sonnig" />
                 </forecast_conditions>
              <forecast_conditions>
                     <day_of_week data="Mo." />
                     <low data="15" />
                     <high data="25" />
                     <icon data="/ig/images/weather/chance_of_rain.gif" />
                     <condition data="Vereinzelt Regen" />
                 </forecast_conditions>
              <forecast_conditions>
                     <day_of_week data="Di." />
                     <low data="17" />
                     <high data="26" />
                     <icon data="/ig/images/weather/chance_of_rain.gif" />
                     <condition data="Vereinzelt Regen" />
                 </forecast_conditions>
              <forecast_conditions>
                     <day_of_week data="Mi." />
                     <low data="19" />
                     <high data="28" />
                     <icon data="/ig/images/weather/mostly_sunny.gif" />
                     <condition data="Teils sonnig" />
                 </forecast_conditions>
          </weather>
   </xml_api_reply>

Und es wird ja auch scheinbar alles geladen, denn das Webfront zeigt ja alles wunderbar an.

Ersetz mal die Zeile 36 durch dieses und beobachte es mal.

$ch = curl_init();
     $timeout = 2; // 0 wenn kein Timeout
    curl_setopt($ch, CURLOPT_URL, "http://www.google.com/ig/api?weather=".$station."&hl=".$sprache);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file_content = curl_exec($ch);
    curl_close($ch);
    $api = simplexml_load_string(utf8_encode($file_content));

Das scheint erst mal zu laufen, bringt dann aber einen Hagel von Fehlermeldungen:

Setz mal den timeout etwas höher auf 5 oder 7.

Gleiches Ergebnis :frowning:

Bin ich denn der Einzige, der das Problem hat und das seit ca 2 Wochen.

Dann weis ich auch nicht, was bei dir schief läuft.

Bei den Meldungen, kann er die api doch gar nicht laden. Wo hast Du denn die Daten her, außerdem dürfte die Seite dann gar nicht angezeigt werden.

Wenn ich den String den er zusammenbaut in der URL des Browsers eingebe bekomme ich die XML Daten wunderbar geliefert, wie in einem der letzten Beiträge angezeigt.

Die Seite wird angezeigt, wenn ich die ursprüngliche Fassung der Zeile 36 verwende aber es wird eben auch die Fehlermeldung gezeigt. Mit der Fassung, die Du grade gepostet hast bekomme ich keine Wetterseite mehr angezeigt sondern nur die Latte an Meldungen. Wenn ich dann mit F5 aktualisiere bekomme ich mal die Meldungen und mal die Wetterseite. Also scheint er die Daten ab und an zu bekommen.

Wobei die Meldung der zuletzt geposteten Zeilen aber sagt, dass da ein " oder ein ’ fehlt. Kann es sein, dass die Befehle nicht richtig geschrieben sind?

Das Einzige was mir noch einfällt ist, wieder die Zeile 36 zu benutzen und ein @ davor zu schreiben. Aber ich weiß nicht, was dann an Folgefehlern kommt.

Ah jetzt sehe ich es, das hat zur Folge, dass die Wetterseite leer ist, wenn der Fehler kommt und wenn er nicht kommt sehe ich die Wettervorhersage. Das deutet darauf hin, dass die Übertragung wohl mal klappt und mal nicht. Kann das am Server vom DWD liegen?

Was mich aber wundert ist, dass die Ausgabe des IPS Skripes immer sagt, dass alles wunderbar geklappt hat. Oder hat das damit nichts zu tun?

PS: Kann man das Skript so ändern, dass es den letzten Wert wiedr schreibt oder sich wieder schlafen legt, wenn es keine Daten bekommen hat?

Das ganze hat mit DWD gar nichts zutun. Es liegt einzig und alleine an der API.

Ich hab das mal probiert, wenn ich 20 mal hintereinander die Seite lade, bekomme ich auch diesen Fehler.

Kann man das Skript so ändern, dass es den letzten Wert wiedr schreibt oder sich wieder schlafen legt, wenn es keine Daten bekommen hat?

Kann man, ich schreibs jetzt aber nicht um. Wenn ich die Woche dazu komme, schau ich es mir mal an.

Bau dir das noch mal ein zum besseren Fehlerhandling.

libxml_use_internal_errors(true);
    $api = simplexml_load_string(utf8_decode($file_content));
     if($api === false) 
     {
        echo "Laden des XML fehlgeschlagen
";
        foreach(libxml_get_errors() as $error) 
        {
        echo "	", $error->message;
        }
    }

Werd ich mal versuchen.

Ich hatte aber mehr daran gedacht den ganzen Prozess abzubrechen, wenn keine Daten kommen. Allerdings hab ich noch nicht raus bekommen, wie ich den Neuaufbau der Seite verhindern kann, denn das ist ja html in dem die Daten die das Skript erzeugt eingebaut werden.

Da würd ich mir an deiner Stelle keinen Kopf machen.

Ich werd das ganze umbauen, dann sollte das Problem hoffentlich behoben sein. :wink: