Fragen zur Eigenen Wetterseite

Hört sich gu an, muss ich nur meine angepassten Dateien mal sichern, damit das nachher auch wieder auf dem Tablet otimal passt :slight_smile:

Hier eine Änderung für das auslesen der API.

Es wird kein Fehler mehr generiert. Die Datei wird abgespeichert und bei nicht erreichen die letzten Daten verwendet.

Nachteil, wenn 14 Tage nicht aktualisiert wurde, stehen die alten Daten drinnen. :eek: Ist bei mir bis jetzt noch nie vorgekommen.

Einfach im Script Wetterindex.php austauschen.

     $file_content = @utf8_encode(Sys_GetURLContent("http://www.google.com/ig/api?weather=".$station."&hl=".$sprache));

     if($file_content != false)
     {
        $apicache = IPS_GetKernelDir()."webfront\\user\\WetterFtpDWD\\warnungen\\wetterapi.xml";
        $fp = fopen($apicache, "wb+");
        fwrite($fp, $file_content);
        fclose($fp);
        $api = simplexml_load_string($file_content);
        //print_r($api);
     }
     else
     {
        $api = file_get_contents("warnungen/wetterapi.xml");
        $api = simplexml_load_string($api);
        //print_r($api);
     }
     $wetter = array();

Hallo,

irgendwie habe ich nach Installation der IPSLibary (oder vorher nicht gemerkt?) den folgenden Fehler:

Notice: Trying to get property of non-object
   Error in Script C:\IP-Symcon\webfront\user\WetterFtpDWD\WetterIndex.php on Line 41
  133 in IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   45 in IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
   41 in webfront\user\WetterFtpDWD\WetterIndex.php (call IPSLogger_PhpErrorHandler)
   21 in webfront\user\WetterFtpDWD\WetterIndex.php (call website_wetter)</message></event>

sowie.

Error: Call to a member function attributes() on a non-object
   Error in Script C:\IP-Symcon\webfront\user\WetterFtpDWD\WetterIndex.php on Line 41
  133 in IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   34 in IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
  100 in IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_PhpErrorHandler)

Leider werde ich aus der Zeilenangabe 41 nicht schlau und benötige bitte Hilfe.

WetterIndex.php

   <?
################################################################################

/* Zum aktivieren Bundesland und Region auswählen und // davor entfernen.
Es darf jeweils nur eine Kennung, Region, Warnung und Schilder ausgewählt
werden! */

################################################################################
/*----------------------------------------------------------------------------*/
################################################################################
$kennung = ""; //nicht ändern
################################################################################
/*------------------Wetterbericht Bundesländer Tag 1-4------------------------*/
$berichtanzahl = 2; // Anzahl Berichte auf der Übersichtsseite. 1-4
/*----------------------------------------------------------------------------*/
//$kennung = "DWEG_"; // Hessen
//$kennung = "DWEI_"; // Rheinland Pfalz und Saarland
//$kennung = "DWEH_"; // Nordrhein-Westfalen
//$kennung = "DWSG_"; // Baden-Würtemberg
//$kennung = "DWMG_"; // Bayern
//$kennung = "DWLG_"; // Sachsen
//$kennung = "DWLI_"; // Thüringen
//$kennung = "DWLH_"; // Sachsen-Anhalt
$kennung = "DWPG_"; // Brandenburg und Berlin
//$kennung = "DWPH_"; // Mecklenburg-Vorpommern
//$kennung = "DWHG_"; // Niedersachsen und Bremen
//$kennung = "DWHH_"; // Schleswig Holstein und Hamburg
################################################################################
/*----------------------------------------------------------------------------*/
################################################################################
$region = ""; // nicht ändern
################################################################################
/*-----------------------------Regionen---------------------------------------*/
################################################################################
//$region = "Mitte"; // Hessen, Rheinlandpfalz und Saarland
$region = "Nordost"; // Mecklenburg-Vorpommern, Berlin und Brandenburg
//$region = "West"; // Nordrhein-Westfalen
//$region = "Nordwest"; //Schleswig Holstein, Hamburg, Bremen und Niedersachsen
//$region = "Suedwest"; // Baden-Würtemberg
//$region = "Suedost"; // Bayern
//$region = "Ost"; // Sachsen, Sachsen-Anhalt und Thüringen
################################################################################
/*-----------------------------Wetterwarnungen--------------------------------*/
################################################################################
//$warnung = "OF_x_x_0.gif"; // Hessen
//$warnung = "MS_x_x_0.gif"; // Bayern
//$warnung = "SU_x_x_0.gif"; // Baden-Württemberg
//$warnung = "TR_x_x_0.gif"; // Rheinland Pfalz und Saarland
//$warnung = "EM_x_x_0.gif"; // Nordrhein-Westfalen
//$warnung = "HN_x_x_0.gif"; // Niedersachsen und Bremen
//$warnung = "SG_x_x_0.gif"; // Schleswig-Holstein und Hamburg
//$warnung = "RW_x_x_0.gif"; // Mecklenburg-Vorpommern
$warnung = "PD_x_x_0.gif"; // Berlin und Brandenburg
//$warnung = "LZ_x_x_0.gif"; // Sachsen
//$warnung = "MB_x_x_0.gif"; // Sachsen-Anhalt
//$warnung = "EF_x_x_0.gif"; // Thüringen
/*----------------------------------------------------------------------------*/
//$schilder = "SchilderOF.jpg"; // Hessen, Rheinlandpfalz und Saarland
//$schilder = "SchilderEM.jpg"; // Nordrhein-Westfalen
//$schilder = "SchilderHA.jpg"; // Schleswig Holstein, Hamburg, Bremen und Niedersachsen
//$schilder = "SchilderLZ.jpg"; // Sachsen, Sachsen-Anhalt und Thüringen
//$schilder = "SchilderMS.jpg"; // Bayern
$schilder = "SchilderPD.jpg"; // Mecklenburg-Vorpommern, Berlin und Brandenburg
//$schilder = "SchilderSU.jpg"; // Baden-Würtemberg
/*----------------------------------------------------------------------------*/
/*-----------------Einträge für Landkreis und SMS Warnungen-------------------*/
$posX = 109; // Position für SMS-Meldung, ungefähr die Mitte des Landkreises.
$posY = 196; // darauf achten das nur dass blaue Feld erfasst wird!

$warnRegion = "OF"; // entsprechend auswählen lt.Tabelle DWD
$landkreis = "FBX"; // es müssen 3 Buchstaben angegeben werden
/*----------------------------------------------------------------------------*/
$factorwarnung = 0.9; // Bildscalierung Schilder(Warnungen)
$factorWetterwarnung = 0.8; // Bildscalierung Wetterwarnungen(Übersichtsseite)
################################################################################
/*--------------------Name oder Plz eintragen---------------------------------*/
################################################################################
$ortGoogle = "Berlin";
/*---------------------------Anzeige Übersicht--------------------------------*/
$ort = "Wetter Berlin";
$ueberschriftKarte = "Wetterwarnungen Berlin";
################################################################################
/*----------------------------------------------------------------------------*/
################################################################################
/*------------------Username und Passwort eintragen---------------------------*/
################################################################################
$ftp_server = 'ftp-outgoing2.dwd.de'; // Adresse FTP-Server
$ftp_user_name = "XXXX"; // Username
$ftp_user_pass = "XXX"; // Passwort
################################################################################
/*----------------------------------------------------------------------------*/
$umlaute = array("ä","ö","ü","Ä","Ö","Ü","ß");
$replace = array("ä","ö","ü","Ä","Ö","Ü","ß");
$ueberschriftKarte = str_replace($umlaute, $replace, $ueberschriftKarte);
$ort = str_replace($umlaute, $replace, $ort);
?>

Vielen Dank. Gruß, Tom

Das ist nicht die Index sondern die Configdatei. Die Index liegt im user-Verzeichnis, sowie es dein Fehler auch besagt.

Super, vielen Dank, die Idee mit der Datei ist echt gut. Ich habs eingebaut und werde testen.

Sorry, aber der Tag war auch irgendwie nicht mein Tag.
Anbei nun die WetterIndex

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">


<link rel="stylesheet" type="text/css" href="wetterUser.css" />

</head><body>

<?php
require_once IPS_GetKernelDir()."scripts\konfigurationWetter.ips.php";

$wetter = website_wetter($ortGoogle, "Germany", "/user/WetterFtpDWD/icons/", "/user/WetterFtpDWD/icons/gross/");

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?weather=".$station."&hl=".$sprache)));
	//print_r($api);
    $wetter = array();

    // 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']);
		}
    }
    return $wetter;
}

$tableAktuell = "<table>";
$tableAktuell .= "<tr><td style='width:200px;'>";
$tableAktuell .= "<b>Aktuell:</b><br/>
";
$tableAktuell .= $wetter[0]['zustand']."<br/>
";
$tableAktuell .= "Temperatur: ".$wetter[0]['temperatur']." °C<br/>
";
$tableAktuell .= "min. ".$wetter[1]['tiefsttemperatur']." °C <br/> max. ".$wetter[1]['hoechsttemperatur']." °C<br/>";
$tableAktuell .= $wetter[0]['luftfeuchtigkeit']."<br/>";
$tableAktuell .= $wetter[0]['wind']."<br/>";
//$tableAktuell .= "Luftdruck: ".GetValueFormatted(40266)."<br/>";
$tableAktuell .= "Höhe NN: 131 m";
$tableAktuell .= "</td>";
$tableAktuell .= "<td style='width:80px;'><img src=\"".$wetter[0]['icon']."\" alt=\"".$wetter[0]['zustand']."\" />
";
$tableAktuell .= "</td></tr></table>";

$tableTage = "<table>";
$tableTage .= "<tr><td style='width:220px;'>";
$tableTage .= "<b>".$wetter[2]['wochentag']."</b><br/>
";
$tableTage .= $wetter[2]['zustand']."<br/>
";
$tableTage .= "min. ".$wetter[2]['tiefsttemperatur']." °C <br/> max. ".$wetter[2]['hoechsttemperatur']." °C<br/><br/>";
$tableTage .= "<img src=\"".$wetter[2]['icon']."\" alt=\"".$wetter[2]['zustand']."\" />
";
$tableTage .= "</td>";

$tableTage .= "<td style='width:220px;'>";
$tableTage .= "<b>".$wetter[3]['wochentag']."</b><br/>
";
$tableTage .= $wetter[3]['zustand']."<br/>
";
$tableTage .= "min. ".$wetter[3]['tiefsttemperatur']." °C <br/> max. ".$wetter[3]['hoechsttemperatur']." °C<br/><br/>";
$tableTage .= "<img src=\"".$wetter[3]['icon']."\" alt=\"".$wetter[3]['zustand']."\" />
";
$tableTage .= "</td>";

$tableTage .= "<td style='width:220px;'>";
$tableTage .= "<b>".$wetter[4]['wochentag']."</b><br/>
";
$tableTage .= $wetter[4]['zustand']."<br/>
";
$tableTage .= "min. ".$wetter[4]['tiefsttemperatur']." °C <br/> max. ".$wetter[4]['hoechsttemperatur']." °C<br/><br/>";
$tableTage .= "<img src=\"".$wetter[4]['icon']."\" alt=\"".$wetter[4]['zustand']."\" />
";
$tableTage .= "</td></tr></table>";

$imgKarte = Sys_GetURLContent("http://www.dwd.de/dyn/app/ws/maps/".$warnung);
$imagePfad = IPS_GetKernelDir()."webfront/user/WetterFtpDWD/warnungen/".$warnung;

$fp = fopen($imagePfad, "wb+");
fwrite($fp, $imgKarte);
fclose($fp);

$image = imagecreatefromgif($imagePfad);
list($width, $height) = getimagesize($imagePfad);
$newWidth = $width * $factorWetterwarnung;
$newHeight = $height * $factorWetterwarnung;

$imageResized = ImageCreateTrueColor($newWidth, $newHeight);
$transparenz = ImageColorTransparent($image, imagecolorexact($image, 255, 255, 255));
for($i=0; $i<$height; $i++)
{
	for($j=0; $j<$width; $j++)
	{
		$pos = imagecolorat($image, $j, $i);
		$index = imagecolorsforindex($image, $pos);
		$rgb = $index["red"] + $index["green"] + $index["blue"];
		if($rgb == "0")
		{
			$weiss = imagecolorresolve($image, 255, 255, 255);
			imagesetpixel($image, $j, $i, $weiss);
		}
	}
}
ImageColorTransparent($imageResized, $transparenz);
ImageCopyResampled($imageResized, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
/*
$normal[0] = imagecolorexact($imageResized, 102, 181, 255);
$pos = array_search(imagecolorat($imageResized, $posX, $posY), $normal);
if($pos === false)
{
	if(!($conn_id = ftp_connect($ftp_server)))
	{
		goto weiter;
	}
	if(!($login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)))
	{
		ftp_close($conn_id); 
	}
	if(!ftp_pasv($conn_id, true))
	{
		ftp_close($conn_id); 
	}  
	ftp_chdir($conn_id, "gds/specials/warnings/sms/".$warnRegion."/");
	$ftp_list = ftp_nlist($conn_id, ".");

	$h = date("d");
	$suche = "/(H[\w]{1}{$warnRegion}[\d]{2})_{$landkreis}[\w]{1}_({$h}[\d]{4})/";

	foreach($ftp_list as $lk => $v)
	{
		preg_match_all($suche, $v, $s, PREG_SET_ORDER);
		foreach($s as $sms)
		{
			$sim[] = $sms;
		}
	}
	if(!isset($sim))
	{
		SetValue(19695, "");
	}
	else
	{
		$smsMeldung = array_pop($sim);
		$letztesmsMeldung = array_shift($smsMeldung);
		$smsMeldung = IPS_GetKernelDir()."webfront/user/WetterFtpDWD/warnungen/smsWarnmeldung.txt";
		$handleSMS = @fopen($smsMeldung, 'wb+');
		if(!ftp_fget($conn_id, $handleSMS, $letztesmsMeldung, FTP_ASCII))
		{
			//Meldung
		}
		fclose($handleSMS);
	}
	ftp_close($conn_id);
	$smsWarnmeldung = file_get_contents("../WetterFtpDWD/warnungen/smsWarnmeldung.txt");
	SetValue(19695, $smsWarnmeldung);
}

else
{
	$color = imagecolorallocate($imageResized, 255, 0, 0);
	ImageRectangle($imageResized, $posX+1, $posY+1, $posX, $posY, $color);
}
weiter:*/
imagegif($imageResized, $imagePfad);
imagedestroy($image);
imagedestroy($imageResized);

$berichtHeute = file_get_contents("../WetterFtpDWD/berichte/berichtHeute.txt");
$berichtHeute = preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/', "", $berichtHeute);
$berichtMorgen = file_get_contents("../WetterFtpDWD/berichte/berichtMorgen.txt");
$berichtMorgen = preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/', "", $berichtMorgen);
$berichtUebermorgen = file_get_contents("../WetterFtpDWD/berichte/berichtUebermorgen.txt");
$berichtUebermorgen = preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/', "", $berichtUebermorgen);
$berichtTag4 = file_get_contents("../WetterFtpDWD/berichte/berichtTag4.txt");
$berichtTag4 = preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/', "", $berichtTag4);

$berichtGesamt = $berichtHeute;
if($berichtanzahl == 2) $berichtGesamt = $berichtHeute . $berichtMorgen;
if($berichtanzahl == 3) $berichtGesamt = $berichtHeute . $berichtMorgen . $berichtUebermorgen;
if($berichtanzahl == 4) $berichtGesamt = $berichtHeute . $berichtMorgen . $berichtUebermorgen . $berichtTag4;

if($berichtGesamt == "") 
{
	$berichtGesamt = "Der Wetterbericht steht momentan nicht zur Verfügung!";
}

?>

<div id="containerTopLeft">
	<div class="pos"><?php echo $ort;?></div>
	<div class="containerBorderAktuell">
		<div class="containerTableAktuell"><?php echo $tableAktuell;?></div>
	</div>
</div>
<div id="containerTopRight">
	<div class="pos">Vorhersage für die nächsten 3 Tage</div>
	<div class="containerBorderTage">
		<div class="containerTableTage"><?php echo $tableTage;?></div>
	</div>
</div>
<div id="containerBottomLeft">
	<div class="pos"><?php echo $ueberschriftKarte;?></div>
	<div class="containerWarnung">
		<div class="containerGif"><img src='/user/WetterFtpDWD/warnungen/<?php echo $warnung;?>' border="0" alt="karte" usemap="#karte">
			<div class="linkGif"><map name="karte">
			<area shape="poly" coords="76,186,83,186,83,183,82,181,88,178,99,179,99,184,117,185,121,180,121,177,124,177,125,182,131,186,143,182,143,198,138,201,133,210,118,210,104,204,100,212,98,219,94,222,93,221,96,216,87,202,84,192,75,188" href="Warnmeldung.php" alt="Wetteraukreis" title="Wetteraukreis"></map>
			</div>
			<div class="containerTextWarnung"><img src='/user/WetterFtpDWD/warnungen/containerTextWarnungen.png'></div>
		</div>
	</div>
</div>
<div id="containerBottomRight">
	<div class="pos">Wetterbericht</div>
	<div class="containerBericht">
		<div class="berichtText"><?php echo $berichtGesamt;?></div>
	</div>
</div>

<?php require "barBottom.php"; ?>


</body></html>

Zeile41

  $wetter[0]['zustand'] = $api->weather->current_conditions->condition->attributes()->data;

Danke, Tom

Tausch doch oben geposteten Fix aus, dann ist auch die Fehlermeldung weg.

Hallo,

wenn ich das richtig mitbekommen habe ging es ja hierbei um einen Fehler in Zeile 38, also habe ich auch diesen Passus durch den Fix ersetzt, soweit richtig?

Leider ohne Lösung, Problem ist ja auch nicht eine Fehlermeldung sondern das die Übersicht nichts mehr anzeigt und die anderen Daten sich nicht mehr aktualisieren. So ist z. Bsp. die Wetterwarnung vom 09.08.2012

Da es scheinbar nicht viele Probleme gibt, würde ich gern noch einmal von Null anfangen wollen. Was müsste denn wo alles gelöscht werden um noch einmal von vorn beginnen zu können?

Danke, Tom

Kopier dir das raus ich hab es dir eingefügt wie es gehört. Ansonsten, lösch den Wetter-Ordner und kopier es neu rein.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
 
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> 
<head> 
 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<meta http-equiv="Content-Style-Type" content="text/css"> 
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate"> 
<meta http-equiv="Pragma" content="no-cache"> 
<meta http-equiv="Expires" content="0"> 
 
 
<link rel="stylesheet" type="text/css" href="wetterUser.css" /> 
 
</head><body> 
 
<?php 
require_once IPS_GetKernelDir()."scripts\konfigurationWetter.ips.php"; 
 
$wetter = website_wetter($ortGoogle, "Germany", "/user/WetterFtpDWD/icons/", "/user/WetterFtpDWD/icons/gross/"); 
 
function website_wetter($plz, $land, $icons_src="/", $iconsAktuell="/", $sprache="de", $ort="") 
{ 
    $icons_google = "/ig/images/weather/"; 
 
    if($ort != "") 
    { 
        $station = $ort; 
    } 
    else 
    { 
        $station = $plz."-".$land; 
    } 
 
    $file_content = @utf8_encode(Sys_GetURLContent("http://www.google.com/ig/api?weather=".$station."&hl=".$sprache));

     if($file_content != false)
     {
       $apicache = IPS_GetKernelDir()."webfront\\user\\WetterFtpDWD\\warnungen\\wetterapi.xml";
       $fp = fopen($apicache, "wb+");
        fwrite($fp, $file_content);
        fclose($fp);
        $api = simplexml_load_string($file_content);
         //print_r($api);
     }
     else
     {
       $api = file_get_contents("warnungen/wetterapi.xml");
        $api = simplexml_load_string($api);
       //print_r($api);
    }
    $wetter = array(); 
 
    // 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']); 
        } 
    } 
    return $wetter; 
} 
 
$tableAktuell = "<table>"; 
$tableAktuell .= "<tr><td style='width:200px;'>"; 
$tableAktuell .= "<b>Aktuell:</b><br/>
"; 
$tableAktuell .= $wetter[0]['zustand']."<br/>
"; 
$tableAktuell .= "Temperatur: ".$wetter[0]['temperatur']." °C<br/>
"; 
$tableAktuell .= "min. ".$wetter[1]['tiefsttemperatur']." °C <br/> max. ".$wetter[1]['hoechsttemperatur']." °C<br/>"; 
$tableAktuell .= $wetter[0]['luftfeuchtigkeit']."<br/>"; 
$tableAktuell .= $wetter[0]['wind']."<br/>"; 
//$tableAktuell .= "Luftdruck: ".GetValueFormatted(40266)."<br/>"; 
$tableAktuell .= "Höhe NN: 131 m"; 
$tableAktuell .= "</td>"; 
$tableAktuell .= "<td style='width:80px;'><img src=\"".$wetter[0]['icon']."\" alt=\"".$wetter[0]['zustand']."\" />
"; 
$tableAktuell .= "</td></tr></table>"; 
 
$tableTage = "<table>"; 
$tableTage .= "<tr><td style='width:220px;'>"; 
$tableTage .= "<b>".$wetter[2]['wochentag']."</b><br/>
"; 
$tableTage .= $wetter[2]['zustand']."<br/>
"; 
$tableTage .= "min. ".$wetter[2]['tiefsttemperatur']." °C <br/> max. ".$wetter[2]['hoechsttemperatur']." °C<br/><br/>"; 
$tableTage .= "<img src=\"".$wetter[2]['icon']."\" alt=\"".$wetter[2]['zustand']."\" />
"; 
$tableTage .= "</td>"; 
 
$tableTage .= "<td style='width:220px;'>"; 
$tableTage .= "<b>".$wetter[3]['wochentag']."</b><br/>
"; 
$tableTage .= $wetter[3]['zustand']."<br/>
"; 
$tableTage .= "min. ".$wetter[3]['tiefsttemperatur']." °C <br/> max. ".$wetter[3]['hoechsttemperatur']." °C<br/><br/>"; 
$tableTage .= "<img src=\"".$wetter[3]['icon']."\" alt=\"".$wetter[3]['zustand']."\" />
"; 
$tableTage .= "</td>"; 
 
$tableTage .= "<td style='width:220px;'>"; 
$tableTage .= "<b>".$wetter[4]['wochentag']."</b><br/>
"; 
$tableTage .= $wetter[4]['zustand']."<br/>
"; 
$tableTage .= "min. ".$wetter[4]['tiefsttemperatur']." °C <br/> max. ".$wetter[4]['hoechsttemperatur']." °C<br/><br/>"; 
$tableTage .= "<img src=\"".$wetter[4]['icon']."\" alt=\"".$wetter[4]['zustand']."\" />
"; 
$tableTage .= "</td></tr></table>"; 
 
$imgKarte = Sys_GetURLContent("http://www.dwd.de/dyn/app/ws/maps/".$warnung); 
$imagePfad = IPS_GetKernelDir()."webfront/user/WetterFtpDWD/warnungen/".$warnung; 
 
$fp = fopen($imagePfad, "wb+"); 
fwrite($fp, $imgKarte); 
fclose($fp); 
 
$image = imagecreatefromgif($imagePfad); 
list($width, $height) = getimagesize($imagePfad); 
$newWidth = $width * $factorWetterwarnung; 
$newHeight = $height * $factorWetterwarnung; 
 
$imageResized = ImageCreateTrueColor($newWidth, $newHeight); 
$transparenz = ImageColorTransparent($image, imagecolorexact($image, 255, 255, 255)); 
for($i=0; $i<$height; $i++) 
{ 
    for($j=0; $j<$width; $j++) 
    { 
        $pos = imagecolorat($image, $j, $i); 
        $index = imagecolorsforindex($image, $pos); 
        $rgb = $index["red"] + $index["green"] + $index["blue"]; 
        if($rgb == "0") 
        { 
            $weiss = imagecolorresolve($image, 255, 255, 255); 
            imagesetpixel($image, $j, $i, $weiss); 
        } 
    } 
} 
ImageColorTransparent($imageResized, $transparenz); 
ImageCopyResampled($imageResized, $image, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); 
/* 
$normal[0] = imagecolorexact($imageResized, 102, 181, 255); 
$pos = array_search(imagecolorat($imageResized, $posX, $posY), $normal); 
if($pos === false) 
{ 
    if(!($conn_id = ftp_connect($ftp_server))) 
    { 
        goto weiter; 
    } 
    if(!($login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass))) 
    { 
        ftp_close($conn_id);  
    } 
    if(!ftp_pasv($conn_id, true)) 
    { 
        ftp_close($conn_id);  
    }   
    ftp_chdir($conn_id, "gds/specials/warnings/sms/".$warnRegion."/"); 
    $ftp_list = ftp_nlist($conn_id, "."); 
 
    $h = date("d"); 
    $suche = "/(H[\w]{1}{$warnRegion}[\d]{2})_{$landkreis}[\w]{1}_({$h}[\d]{4})/"; 
 
    foreach($ftp_list as $lk => $v) 
    { 
        preg_match_all($suche, $v, $s, PREG_SET_ORDER); 
        foreach($s as $sms) 
        { 
            $sim[] = $sms; 
        } 
    } 
    if(!isset($sim)) 
    { 
        SetValue(19695, ""); 
    } 
    else 
    { 
        $smsMeldung = array_pop($sim); 
        $letztesmsMeldung = array_shift($smsMeldung); 
        $smsMeldung = IPS_GetKernelDir()."webfront/user/WetterFtpDWD/warnungen/smsWarnmeldung.txt"; 
        $handleSMS = @fopen($smsMeldung, 'wb+'); 
        if(!ftp_fget($conn_id, $handleSMS, $letztesmsMeldung, FTP_ASCII)) 
        { 
            //Meldung 
        } 
        fclose($handleSMS); 
    } 
    ftp_close($conn_id); 
    $smsWarnmeldung = file_get_contents("../WetterFtpDWD/warnungen/smsWarnmeldung.txt"); 
    SetValue(19695, $smsWarnmeldung); 
} 
 
else 
{ 
    $color = imagecolorallocate($imageResized, 255, 0, 0); 
    ImageRectangle($imageResized, $posX+1, $posY+1, $posX, $posY, $color); 
} 
weiter:*/ 
imagegif($imageResized, $imagePfad); 
imagedestroy($image); 
imagedestroy($imageResized); 
 
$berichtHeute = file_get_contents("../WetterFtpDWD/berichte/berichtHeute.txt"); 
$berichtHeute = preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/', "", $berichtHeute); 
$berichtMorgen = file_get_contents("../WetterFtpDWD/berichte/berichtMorgen.txt"); 
$berichtMorgen = preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/', "", $berichtMorgen); 
$berichtUebermorgen = file_get_contents("../WetterFtpDWD/berichte/berichtUebermorgen.txt"); 
$berichtUebermorgen = preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/', "", $berichtUebermorgen); 
$berichtTag4 = file_get_contents("../WetterFtpDWD/berichte/berichtTag4.txt"); 
$berichtTag4 = preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/', "", $berichtTag4); 
 
$berichtGesamt = $berichtHeute; 
if($berichtanzahl == 2) $berichtGesamt = $berichtHeute . $berichtMorgen; 
if($berichtanzahl == 3) $berichtGesamt = $berichtHeute . $berichtMorgen . $berichtUebermorgen; 
if($berichtanzahl == 4) $berichtGesamt = $berichtHeute . $berichtMorgen . $berichtUebermorgen . $berichtTag4; 
 
if($berichtGesamt == "")  
{ 
    $berichtGesamt = "Der Wetterbericht steht momentan nicht zur Verfügung!"; 
} 
 
?> 
 
<div id="containerTopLeft"> 
    <div class="pos"><?php echo $ort;?></div> 
    <div class="containerBorderAktuell"> 
        <div class="containerTableAktuell"><?php echo $tableAktuell;?></div> 
    </div> 
</div> 
<div id="containerTopRight"> 
    <div class="pos">Vorhersage für die nächsten 3 Tage</div> 
    <div class="containerBorderTage"> 
        <div class="containerTableTage"><?php echo $tableTage;?></div> 
    </div> 
</div> 
<div id="containerBottomLeft"> 
    <div class="pos"><?php echo $ueberschriftKarte;?></div> 
    <div class="containerWarnung"> 
        <div class="containerGif"><img src='/user/WetterFtpDWD/warnungen/<?php echo $warnung;?>' border="0" alt="karte" usemap="#karte"> 
            <div class="linkGif"><map name="karte"> 
            <area shape="poly" coords="76,186,83,186,83,183,82,181,88,178,99,179,99,184,117,185,121,180,121,177,124,177,125,182,131,186,143,182,143,198,138,201,133,210,118,210,104,204,100,212,98,219,94,222,93,221,96,216,87,202,84,192,75,188" href="Warnmeldung.php" alt="Wetteraukreis" title="Wetteraukreis"></map> 
            </div> 
            <div class="containerTextWarnung"><img src='/user/WetterFtpDWD/warnungen/containerTextWarnungen.png'></div> 
        </div> 
    </div> 
</div> 
<div id="containerBottomRight"> 
    <div class="pos">Wetterbericht</div> 
    <div class="containerBericht"> 
        <div class="berichtText"><?php echo $berichtGesamt;?></div> 
    </div> 
</div> 
 
<?php require "barBottom.php"; ?> 
 
 
</body></html>

Hallo Rainer, ich habe jetzt auch diesen Fehler mit den attributes(). Ich hab schon Deinen Fix in die WetterIndex.php eingetragen. Ledernäher sich nichts geändert. Haben die beim DWD irgendwas verändert.
Es hat früher anstandslos funktioniert.
Nachtrag: Auf dem Ips Server funktioniert die Website. Auf den Terminals und dem IPad nicht. Dann habe ich das Abholescript wieder ausgeführt. Dann ging es Kurznachricht allen Devices und jetzt wieder nicht. Ich kann es mir nicht erklären.

Hallo,

also auch bei mir trotz des Fixes das gleiche Problem, jetzt aber line56.

Ich werde morgen mal versuchen zu löschen und neu einzuspielen. Ich erinnere mich aber das ich das Problem ähnlich schon mal hatte, dort hatte ich dann auch das Problem das Daten nicht mehr aktualisiert werden.

Gruß, Tom

Hallo,

bei mir auch in Zeile 56.

Bitte mal den Inhalt der wetterapi aus dem warnungenordner posten.

Hallo Rainer,

meinst Du diese?

Allerdings habe ich festgestellt das es jetzt wieder ging, der Fehler scheint nur sporadisch aufzutreten.

wetterapi.rar (581 Bytes)

Wenn der Fehler wieder auftritt, bitte mal die API vergleichen. so wie sie jetzt ist, ist sie OK.

OK danke, werde ich machen.

Hatte ebenfalls nach Einfügen des Patches den Fehler in Zeile 56:

-> „WetterIndex.php“ gelöscht -> komplett neu angelegt und mit Rainer’s Genialität aus #689 gefüllt -> alle vorher heruntergeladenen Berichte und Bitmaps gelöscht -> GEHT! :smiley:

Danke Rainer!

Hallo,

die hier aufgeführten Tipps brachten bei mir leider keine Lösung, also habe ich den Ordner webfront\user\WetterFtpDWD sowie die Kategorie WetterDatenDWD gelöscht und wollte dann einmal alles neu anlegen.
Habe mich auch definitiv an die Vorgehensweise gehalten und irgendwie ist der Wurm drin. Es scheint als werden die Daten nicht runtergeladen und keine Ordner erstellt. Die notwendigen Ordner etc. sollten doch aber vom Script angelegt werden oder?

Nach nunmehr 4mal neu angelegten Daten habe ich absolut keine Ahnung was ich falsch mache.

IPS_7.JPG

Habe ich ein Fehler im Kopf oder spinnt mein WHS?

Vielen Dank.
Gruß, Tom

Die Ordner wurden hier „erstellt“: Eigene Wetterseite - HTML-Seiten

Man bin ich blöd heute…vielen Dank für den Zaunpfahl. Ich erzähle nicht was ich schon alles systemseitig versuch habe.

Gruß, Tom

EDIT:
Ok, nach Neuanlage wieder der Fehler. Dann WetterIndex.php laut #689 geändert und erstmals keine Fehler.

Vielen Dank!