Wetterdaten - Wunderground API

Doch im Browser läuft es ohne Probleme. Sehr merkwürdig

So hab das jetzt auch mal integriert.

Folgender Aufbau funktioniert sehr gut.
Legt euch einen Ordner an, in dem kommen die beiden Scripte rein.

Script 1 legt euch alle Variablen an:

<?

 //Start writing your scripts between the brackets
$IDEigen    = $_IPS['SELF'];
$IDParent   = IPS_GetParent ($IDEigen);


$Kategorie = IPS_CreateCategory();         IPS_SetName($Kategorie, "Aktueller Zustand"); 		IPS_SetParent($Kategorie, $IDParent);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "WetterIcon");  	      IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(3);        IPS_SetName($variableid, "WetterText");      		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "TempAktuell");   	   IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "Feuchte");  	      	IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "WindSpeed");        	IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(3);        IPS_SetName($variableid, "WindRichtung");      	IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "Luftdruck");       		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(2);        IPS_SetName($variableid, "Sichtweite");      		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "UV Index");       		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "Mondstatus");  	      IPS_SetParent($variableid, $Kategorie);

$Kategorie = IPS_CreateCategory();         IPS_SetName($Kategorie, "Tag 1 Heute"); 		IPS_SetParent($Kategorie, $IDParent);
		$variableid = IPS_CreateVariable(3);        IPS_SetName($variableid, "TagBezeichnung");      IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "WetterIcon");  	      IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(3);        IPS_SetName($variableid, "WetterBezeichnung");   IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "TempMin");        		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "TempMax");        		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "WindMax");        		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "Schneefall cm");   		IPS_SetParent($variableid, $Kategorie);

$Kategorie = IPS_CreateCategory();         IPS_SetName($Kategorie, "Tag 2 Morgen"); 		IPS_SetParent($Kategorie, $IDParent);
		$variableid = IPS_CreateVariable(3);        IPS_SetName($variableid, "TagBezeichnung");      IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "WetterIcon");  	      IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(3);        IPS_SetName($variableid, "WetterBezeichnung");   IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "TempMin");        		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "TempMax");        		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "WindMax");        		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "Schneefall cm");   		IPS_SetParent($variableid, $Kategorie);
		
$Kategorie = IPS_CreateCategory();         IPS_SetName($Kategorie, "Tag 3 Übermorgen"); 		IPS_SetParent($Kategorie, $IDParent);
		$variableid = IPS_CreateVariable(3);        IPS_SetName($variableid, "TagBezeichnung");      IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "WetterIcon");  	      IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(3);        IPS_SetName($variableid, "WetterBezeichnung");   IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "TempMin");        		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "TempMax");        		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "WindMax");        		IPS_SetParent($variableid, $Kategorie);
		$variableid = IPS_CreateVariable(1);        IPS_SetName($variableid, "Schneefall cm");   		IPS_SetParent($variableid, $Kategorie);

Script 2 füllt dann die Variablen

<?
$api = "xxxxxxxxxxxxxxxxxx";
$ort = "Bamberg";

 //Start writing your scripts between the brackets
$IDEigen    = $_IPS['SELF'];
$IDParent   = IPS_GetParent ($IDEigen);

// IDs heraussuchen
$IDKat0Aktuell 		= IPS_GetCategoryIDByName ("Aktueller Zustand",		 $IDParent);
$IDKat1Tag 				= IPS_GetCategoryIDByName ("Tag 1 Heute",		 		 $IDParent);
$IDKat2Tag 				= IPS_GetCategoryIDByName ("Tag 2 Morgen",			 $IDParent);
$IDKat3Tag 				= IPS_GetCategoryIDByName ("Tag 3 Übermorgen",		 $IDParent);


// aktuelles Wetter
  $json_string = file_get_contents("http://api.wunderground.com/api/$api/geolookup/conditions/lang:DL/q/DL/$ort.json");
  $parsed_json = json_decode($json_string);
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"  	,$IDKat0Aktuell), IconCheck 	($parsed_json->{'current_observation'}->{'icon'}));
  setvalue ( IPS_GetVariableIDByName ("WetterText"  	,$IDKat0Aktuell), 				 $parsed_json->{'current_observation'}->{'weather'});
  setvalue ( IPS_GetVariableIDByName ("TempAktuell"  	,$IDKat0Aktuell), NurZahl 		($parsed_json->{'current_observation'}->{'temp_c'}));
  setvalue ( IPS_GetVariableIDByName ("Feuchte"  		,$IDKat0Aktuell), NurZahl		($parsed_json->{'current_observation'}->{'relative_humidity'}));
  setvalue ( IPS_GetVariableIDByName ("WindSpeed"  	,$IDKat0Aktuell), NurZahl 		($parsed_json->{'current_observation'}->{'wind_kph'}));
  setvalue ( IPS_GetVariableIDByName ("WindRichtung"  ,$IDKat0Aktuell), NurZahl 		($parsed_json->{'current_observation'}->{'wind_degrees'}));
  setvalue ( IPS_GetVariableIDByName ("Luftdruck"  	,$IDKat0Aktuell), NurZahl 		($parsed_json->{'current_observation'}->{'pressure_mb'}));
  setvalue ( IPS_GetVariableIDByName ("Sichtweite"  	,$IDKat0Aktuell), NurZahl 		($parsed_json->{'current_observation'}->{'visibility_km'}));
  setvalue ( IPS_GetVariableIDByName ("UV Index"  		,$IDKat0Aktuell), NurZahl 		($parsed_json->{'current_observation'}->{'UV'}));




// Vorhersage
	$json_fc_string = file_get_contents("http://api.wunderground.com/api/$api/forecast/lang:DL/q/Germany/$ort.json");
	$parsed_fc_json = json_decode($json_fc_string);
	$prognose = $parsed_fc_json->{'forecast'}->{'simpleforecast'}->{'forecastday'};

//heute
  setvalue ( IPS_GetVariableIDByName ("TagBezeichnung"  		,$IDKat1Tag), 					 $prognose[0]->date->weekday) ;
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"  			,$IDKat1Tag), IconCheck 	($prognose[0]->icon)) ;
  setvalue ( IPS_GetVariableIDByName ("WetterBezeichnung"  	,$IDKat1Tag), utf8_decode	($prognose[0]->conditions)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMin"  				,$IDKat1Tag), NurZahl 		($prognose[0]->low->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMax"  				,$IDKat1Tag), NurZahl 		($prognose[0]->high->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("WindMax"  				,$IDKat1Tag), NurZahl 		($prognose[0]->maxwind->kph)) ;
  setvalue ( IPS_GetVariableIDByName ("Schneefall cm"  		,$IDKat1Tag), NurZahl 		($prognose[0]->snow_allday->cm)) ;

//morgen
  setvalue ( IPS_GetVariableIDByName ("TagBezeichnung"  		,$IDKat2Tag), 					 $prognose[1]->date->weekday) ;
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"  			,$IDKat2Tag), IconCheck 	($prognose[1]->icon)) ;
  setvalue ( IPS_GetVariableIDByName ("WetterBezeichnung"  	,$IDKat2Tag), utf8_decode	($prognose[1]->conditions)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMin"  				,$IDKat2Tag), NurZahl 		($prognose[1]->low->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMax"  				,$IDKat2Tag), NurZahl 		($prognose[1]->high->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("WindMax"  				,$IDKat2Tag), NurZahl		($prognose[1]->maxwind->kph)) ;
  setvalue ( IPS_GetVariableIDByName ("Schneefall cm"  		,$IDKat2Tag), NurZahl 		($prognose[1]->snow_allday->cm)) ;

//übermorgen
  setvalue ( IPS_GetVariableIDByName ("TagBezeichnung"  		,$IDKat3Tag), 					 $prognose[2]->date->weekday) ;
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"  			,$IDKat3Tag), IconCheck 	($prognose[2]->icon)) ;
  setvalue ( IPS_GetVariableIDByName ("WetterBezeichnung"  	,$IDKat3Tag), utf8_decode	($prognose[2]->conditions)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMin"  				,$IDKat3Tag), NurZahl 		($prognose[2]->low->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMax"  				,$IDKat3Tag), NurZahl 		($prognose[2]->high->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("WindMax"  				,$IDKat3Tag), NurZahl 		($prognose[2]->maxwind->kph)) ;
  setvalue ( IPS_GetVariableIDByName ("Schneefall cm"  		,$IDKat3Tag), NurZahl 		($prognose[2]->snow_allday->cm)) ;





//Astronomie
	$json_ast_string = file_get_contents("http://api.wunderground.com/api/$api/astronomy/q/Germany/$ort.json");
	$parsed_ast_json = json_decode($json_ast_string);

  setvalue ( IPS_GetVariableIDByName ("Mondstatus"  	,$IDKat0Aktuell), $parsed_ast_json->{'moon_phase'}->{'percentIlluminated'});



  
  
function IconCheck ($Eingang){
	// Icon wird durch eine Zahl ersetzt
	switch ($Eingang){
		case "chanceflurries": 				$Ausgang = 01; break;
		case "chancerain": 					$Ausgang = 02; break;
		case "chancesleet": 					$Ausgang = 03; break;
		case "chancesnow": 					$Ausgang = 04; break;
		case "chancetstorms": 				$Ausgang = 05; break;
		case "clear": 							$Ausgang = 06; break;
		case "cloudy": 						$Ausgang = 07; break;
		case "flurries": 						$Ausgang = 08; break;
		case "fog": 							$Ausgang = 09; break;
		case "hazy": 							$Ausgang = 10; break;
		case "mostlycloudy": 				$Ausgang = 11; break;
		case "mostlysunny": 					$Ausgang = 12; break;
		case "partlycloudy": 				$Ausgang = 13; break;
		case "partlysunny": 					$Ausgang = 14; break;
		case "sleet": 							$Ausgang = 15; break;
		case "rain": 							$Ausgang = 16; break;
		case "snow": 							$Ausgang = 17; break;
		case "sunny": 							$Ausgang = 18; break;
		case "tstorms": 						$Ausgang = 19; break;
		case "nt_chanceflurries": 			$Ausgang = 20; break;
		case "nt_chancerain": 				$Ausgang = 21; break;
		case "nt_chancesleet": 				$Ausgang = 22; break;
		case "nt_chancesnow": 				$Ausgang = 23; break;
		case "nt_chancetstorms": 			$Ausgang = 24; break;
		case "nt_clear": 						$Ausgang = 25; break;
		case "nt_cloudy": 					$Ausgang = 26; break;
		case "nt_flurries": 					$Ausgang = 27; break;
		case "nt_fog": 						$Ausgang = 28; break;
		case "nt_hazy": 						$Ausgang = 29; break;
		case "nt_mostlycloudy": 			$Ausgang = 30; break;
		case "nt_mostlysunny": 				$Ausgang = 31; break;
		case "nt_partlycloudy": 			$Ausgang = 32; break;
		case "nt_partlysunny": 				$Ausgang = 33; break;
		case "nt_sleet": 						$Ausgang = 34; break;
		case "nt_rain": 						$Ausgang = 35; break;
		case "nt_snow": 						$Ausgang = 36; break;
		case "nt_sunny": 						$Ausgang = 37; break;
		case "nt_tstorms": 					$Ausgang = 38; break;
		default: $Ausgang = 0; break;
		}
return $Ausgang;}




function NurZahl ($Input){
	// Filtert aus dem String nur die Zahl heraus
	if ($Input == "N/A"){$Output = -1;
	}else{
	preg_match("/-?\d+(,|\.)?\d*/",$Input,$result);
	$Output = $result[0];}
return $Output;}



?>

jetzt fehlt nur noch ein Timer, der dieses Script beliebig oft startet.

Hey Stele99

habe genau diesen PHP Code 1:1 genutzt, es funktioniert
soweit auch allerdings zeigt er mir bei „Aktuell“ keine Werte
an weder Termperatur , Wind oder Niederschlag.

Hast du eine Idee an was das liegen könnte ?

Im Wounderground zeigt er Werte an !

Danke, Viele Grüße Alex

Hallo,

nachdem der DWD alles mögliche geändert hat und somit die „Eigene Wetterseite“ nicht mehr funktioniert und voraussichtlich auch nicht zeitnah korrigiert wird (ich selbst habs zwar versucht, es mag mir aber einfach nicht gelingen), habe ich mich nach einer Alternative umgeschaut.

Und hier bin ich nun gelandet. Ich finde das Projekt echt toll und sage schonmal DANKE an alle, die einen Beitrag geleistet haben.

Ich habe mich also durch die 9 Seiten gearbeitet, jedoch hakt es an ein paar Stellen mit meinem Verständnis.

Am einfachsten, effektivsten und auch für Andere am hilfreichsten wäre es, wenn jemand sein funktionierendes Script kurz hier als „Gesamtprojekt“ (inkl. 10-Tages-Vorschau, Warnmeldungen und stundenweiser Vorhersage) posten könnte.

Vielen vielen Dank an alle die sich hier wahnsinnige Mühe machen !!!

Gruß Proxima

Habe diesen Code nun mal probiert um eine Vorhersage in meiner Seite einzubinden.

 <?php
$api = "7f"; // key erhält man nach Registrierung bei http://www.wunderground.com/weather/api/
$ort = "51.038479,7.211760";
/* ZMW kann man ermitteln mit dem Längengrad und Breitengrad, nachdem man sich einen API-Key besorgt hat*
http://api.wunderground.com/api/.... API-KEY..../geolookup/q/48.03688878166352,8.930683135986328.json
*/


// Create own variables for
$cur_temp_var = true;
$cur_cludy_icon = true;

/* Daten von der eigenen Wetterstation in Aktuell einbeziehen
   Falls nicht vorhanden einfach auf 0 setzen */
$cur_temp = 0;
$cur_hum  = 0;
$cur_wind = 0;
$cur_rain = 0;

// ----------------------------
$tag[0] = "Sonntag";
$tag[1] = "Montag";
$tag[2] = "Dienstag";
$tag[3] = "Mittwoch";
$tag[4] = "Donnerstag";
$tag[5] = "Freitag";
$tag[6] = "Samstag";

//aktuelles Wetter
    $xmlWetter = file_get_contents("http://api.wunderground.com/api/$api/forecast/q/$ort.xml");
    $xmlWetterNow = file_get_contents("http://api.wunderground.com/api/$api/conditions/q/$ort.xml");

    $xml = simplexml_load_string($xmlWetter);
    $xmlNow = simplexml_load_string($xmlWetterNow);
    $x = 0;
    $html = "<table >
                <tr>";
    // Aktuell
    if($cur_temp != 0){
       $temp_now = getvalue($cur_temp);
    } else {
       $temp_now = $xmlNow->current_observation->temp_c;
    }

    if($cur_hum != 0){
       $hum_now = GetValueFormatted($cur_hum);
    } else {
       $hum_now = $xmlNow->current_observation->relative_humidity;
    }

    if($cur_wind != 0){
       $wind_now = GetValueFormatted($cur_wind);
    } else {
       $wind_now = $xmlNow->current_observation->wind_kph."km/h";
    }

    if($cur_rain != 0){
       $rain_now = GetValueFormatted($cur_rain);
    } else {
       $rain_now = ($xmlNow->current_observation->precip_1hr_metric * 10 ).' mm';
    }
    if($cur_cludy_icon){
        SetValue(CreateVariableByName($IPS_SELF, "Weather_Icon", 3, ""), strval($xmlNow->current_observation->icon_url));
    }
    $html.= '<td align="center" valign="top"  style="width:110px;padding-left:20px;">
                    Aktuell<br>
                    <img src="'.$xmlNow->current_observation->icon_url.'" style="float:left;">
                    <div style="float:right">
                    '.$temp_now.'°C<br>
                    '.$hum_now.'<br>
                    </div>
                    <div style="clear:both; font-size: 10px;">Ø Wind: '.$wind_now.'<br>
                    Regen 1h: '.$rain_now.'
                    </div>
                </td>';
    // Vorhersage
    foreach($xml->forecast->simpleforecast->forecastdays->forecastday as $name=> $day){
        if( isToday($day->date->epoch)){
            $Wochentag = "Heute";
        } else {
            $Wochentag =$tag[date("w",intval($day->date->epoch))];
        }
        $html.= '<td align="center" valign="top"  style="width:110px;padding-left:20px;">
                        '.$Wochentag.'<br>
                        <img src="'.$day->icon_url.'" style="float:left;">
                        <div style="float:right">
                        '.$day->low->celsius.'°C<br>
                        '.$day->high->celsius.'°C
                        </div>
                        <div style="clear:both; font-size: 10px;">Ø Wind: '.$day->avewind->kph.' km/h<br>
                        Niederschlag: '.($day->qpf_allday->mm).' mm
                        </div>
                    </td>';
    }
    $html .= "</tr>
                </table>";
   SetValue(CreateVariableByName($IPS_SELF, "Wetter", 3, "~HTMLBox"), $html);
      if($cur_temp_var){
          $cur_temp = floatval($xmlNow->current_observation->temp_c);
        SetValue(CreateVariableByName($IPS_SELF, "Aktuelle Temperatur", 2, "~Temperature"),$cur_temp );
    }

function CreateVariableByName($id, $name, $type, $profile = "")
{
    # type: 0=boolean, 1 = integer, 2 = float, 3 = string;
    global $IPS_SELF;
    $vid = @IPS_GetVariableIDByName($name, $id);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
        if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
    }
    return $vid;
}

function isToday($time)
{
  $begin = mktime(0, 0, 0);
  $end = mktime(23, 59, 59);
  // check if given time is between begin and end
  if($time >= $begin && $time <= $end)
  {
    return true;
  } else {
    return false;
  }
} 

Leider bekomme ich den Fehler
Fatal error: Call to undefined function SetValue() in /volume1/web/wetter4.php on line 63

Kann mir da einer weiterhelfen.

Du nutzt schon IPS?

MfG
Ralf

Ohhh total übersehen.

Nein.
Habe eine eigene Wetterstation die die Daten zu Weather Underground schickt.
Wollte nun eine Vorhersage von 3 Tagen in meiner Homepage einbinden.

Dachte, dieses Script kann das.

Total übersehen mit dem IPS.

Kürten-Bechen Wetterstation Bechen

Dort wollte ich das noch einbinden

Total übersehen das ich IPS brauche. Sorry

Hi, tommy86,

deine Version ist Super:D. Ich benutze die, weil du die Icons als Nummern in eine Variable hinterlegst. Das ist Perfekt um eigene Icons in IPSView zu verwenden.

Leider kommen oft falsche Werte bei den Icons :confused:

z.B: Jetzt um 6Uhr Morgens ist laut Wunderground.com auf der Seite „Teils Wolkig“ und als Bild „nt_partlycloudy“.
Laut deinem Script währe das Icon Nr.32. Ich bekomme aber die Nr.13 für „partlycloud“.
Wie es aussieht wird es nicht zwischen Tag und Nacht unterschieden.

Kann man da was machen?

Gruß

hat sich erledigt. Habe eine Lösung gefunden :slight_smile:

Gruß

Kannst du das Script zur Verfügung stellen?

Moin Sewo,

magst du dein Script mal posten. Bei mir läuft nicht mal das Variablen anlegen aus Script 1.

LG Izack

Nutze mittlerweile auch das Skript von tommy86, da genau die Möglichkeiten geboten werden, die ich brauche.
Leider habe ich immer wieder Fehlanzeigen; es werden die falschen Tage angezeigt oder die Werte stimmen nicht. Wenn ich das Skript ausführe, habe ich komischerweise nur ab und zu folgende Fehlermeldung:

27.05.2018 22:00:01 | ScriptEngine | Ergebnis für Ereignis 37526
<br />
<b>Notice</b>: Undefined offset: 0 in <b>/var/lib/symcon/scripts/28905.ips.php</b> on line <b>131</b><br />

Aktualisiere ich das Skript ein paar Sekunden darauf nochmals, kommt kein Fehler. Starte ich kurz darauf wieder, kommt ist er wieder da und es werden falsche Werte angezeigt.
Wer findet den Fehler?

Peter

Zur Sicherheit hier nochmals das Skript:

<?

$api = "********"; // ausgeblendet
$ort = "Linz";

$IDEigen    = $_IPS['SELF'];
$IDParent   = IPS_GetParent ($IDEigen);

// IDs heraussuchen
$IDKat0Aktuell         = IPS_GetCategoryIDByName ("Aktueller Zustand",         $IDParent);
$IDKat1Tag                 = IPS_GetCategoryIDByName ("Tag 1 Heute",                  $IDParent);
$IDKat2Tag                 = IPS_GetCategoryIDByName ("Tag 2 Morgen",             $IDParent);
$IDKat3Tag                 = IPS_GetCategoryIDByName ("Tag 3 Übermorgen",         $IDParent);


// aktuelles Wetter
  $json_string = file_get_contents("http://api.wunderground.com/api/$api/geolookup/conditions/lang:DL/q/DL/$ort.json");
  $parsed_json = json_decode($json_string);
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"      ,$IDKat0Aktuell), IconCheck     ($parsed_json->{'current_observation'}->{'icon'}));
  setvalue ( IPS_GetVariableIDByName ("WetterText"      ,$IDKat0Aktuell),                  $parsed_json->{'current_observation'}->{'weather'});
  setvalue ( IPS_GetVariableIDByName ("TempAktuell"      ,$IDKat0Aktuell), NurZahl         ($parsed_json->{'current_observation'}->{'temp_c'}));
  setvalue ( IPS_GetVariableIDByName ("Feuchte"          ,$IDKat0Aktuell), NurZahl        ($parsed_json->{'current_observation'}->{'relative_humidity'}));
  setvalue ( IPS_GetVariableIDByName ("WindSpeed"      ,$IDKat0Aktuell), NurZahl         ($parsed_json->{'current_observation'}->{'wind_kph'}));
  setvalue ( IPS_GetVariableIDByName ("WindRichtung"  ,$IDKat0Aktuell), NurZahl         ($parsed_json->{'current_observation'}->{'wind_degrees'}));
  setvalue ( IPS_GetVariableIDByName ("Luftdruck"      ,$IDKat0Aktuell), NurZahl         ($parsed_json->{'current_observation'}->{'pressure_mb'}));
  setvalue ( IPS_GetVariableIDByName ("Sichtweite"      ,$IDKat0Aktuell), NurZahl         ($parsed_json->{'current_observation'}->{'visibility_km'}));
  setvalue ( IPS_GetVariableIDByName ("UV Index"          ,$IDKat0Aktuell), NurZahl         ($parsed_json->{'current_observation'}->{'UV'}));




// Vorhersage
    $json_fc_string = file_get_contents("http://api.wunderground.com/api/$api/forecast/lang:DL/q/Germany/$ort.json");
    $parsed_fc_json = json_decode($json_fc_string);
    $prognose = $parsed_fc_json->{'forecast'}->{'simpleforecast'}->{'forecastday'};

//heute
  setvalue ( IPS_GetVariableIDByName ("TagBezeichnung"          ,$IDKat1Tag),                      $prognose[0]->date->weekday) ;
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"              ,$IDKat1Tag), IconCheck     ($prognose[0]->icon)) ;
  setvalue ( IPS_GetVariableIDByName ("WetterBezeichnung"      ,$IDKat1Tag), utf8_decode    ($prognose[0]->conditions)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMin"                  ,$IDKat1Tag), NurZahl         ($prognose[0]->low->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMax"                  ,$IDKat1Tag), NurZahl         ($prognose[0]->high->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("WindMax"                  ,$IDKat1Tag), NurZahl         ($prognose[0]->maxwind->kph)) ;
  setvalue ( IPS_GetVariableIDByName ("Schneefall cm"          ,$IDKat1Tag), NurZahl         ($prognose[0]->snow_allday->cm)) ;

//morgen
  setvalue ( IPS_GetVariableIDByName ("TagBezeichnung"          ,$IDKat2Tag),                      $prognose[1]->date->weekday) ;
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"              ,$IDKat2Tag), IconCheck     ($prognose[1]->icon)) ;
  setvalue ( IPS_GetVariableIDByName ("WetterBezeichnung"      ,$IDKat2Tag), utf8_decode    ($prognose[1]->conditions)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMin"                  ,$IDKat2Tag), NurZahl         ($prognose[1]->low->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMax"                  ,$IDKat2Tag), NurZahl         ($prognose[1]->high->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("WindMax"                  ,$IDKat2Tag), NurZahl        ($prognose[1]->maxwind->kph)) ;
  setvalue ( IPS_GetVariableIDByName ("Schneefall cm"          ,$IDKat2Tag), NurZahl         ($prognose[1]->snow_allday->cm)) ;

//übermorgen
  setvalue ( IPS_GetVariableIDByName ("TagBezeichnung"          ,$IDKat3Tag),                      $prognose[2]->date->weekday) ;
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"              ,$IDKat3Tag), IconCheck     ($prognose[2]->icon)) ;
  setvalue ( IPS_GetVariableIDByName ("WetterBezeichnung"      ,$IDKat3Tag), utf8_decode    ($prognose[2]->conditions)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMin"                  ,$IDKat3Tag), NurZahl         ($prognose[2]->low->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMax"                  ,$IDKat3Tag), NurZahl         ($prognose[2]->high->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("WindMax"                  ,$IDKat3Tag), NurZahl         ($prognose[2]->maxwind->kph)) ;
  setvalue ( IPS_GetVariableIDByName ("Schneefall cm"          ,$IDKat3Tag), NurZahl         ($prognose[2]->snow_allday->cm)) ;





//Astronomie
    $json_ast_string = file_get_contents("http://api.wunderground.com/api/$api/astronomy/q/Germany/$ort.json");
    $parsed_ast_json = json_decode($json_ast_string);

  setvalue ( IPS_GetVariableIDByName ("Mondstatus"      ,$IDKat0Aktuell), $parsed_ast_json->{'moon_phase'}->{'percentIlluminated'});



  
  
function IconCheck ($Eingang){
    // Icon wird durch eine Zahl ersetzt
    switch ($Eingang){
        case "chanceflurries":                 $Ausgang = 01; break;
        case "chancerain":                     $Ausgang = 02; break;
        case "chancesleet":                     $Ausgang = 03; break;
        case "chancesnow":                     $Ausgang = 04; break;
        case "chancetstorms":                 $Ausgang = 05; break;
        case "clear":                             $Ausgang = 06; break;
        case "cloudy":                         $Ausgang = 07; break;
        case "flurries":                         $Ausgang = 08; break;
        case "fog":                             $Ausgang = 09; break;
        case "hazy":                             $Ausgang = 10; break;
        case "mostlycloudy":                 $Ausgang = 11; break;
        case "mostlysunny":                     $Ausgang = 12; break;
        case "partlycloudy":                 $Ausgang = 13; break;
        case "partlysunny":                     $Ausgang = 14; break;
        case "sleet":                             $Ausgang = 15; break;
        case "rain":                             $Ausgang = 16; break;
        case "snow":                             $Ausgang = 17; break;
        case "sunny":                             $Ausgang = 18; break;
        case "tstorms":                         $Ausgang = 19; break;
        case "nt_chanceflurries":             $Ausgang = 20; break;
        case "nt_chancerain":                 $Ausgang = 21; break;
        case "nt_chancesleet":                 $Ausgang = 22; break;
        case "nt_chancesnow":                 $Ausgang = 23; break;
        case "nt_chancetstorms":             $Ausgang = 24; break;
        case "nt_clear":                         $Ausgang = 25; break;
        case "nt_cloudy":                     $Ausgang = 26; break;
        case "nt_flurries":                     $Ausgang = 27; break;
        case "nt_fog":                         $Ausgang = 28; break;
        case "nt_hazy":                         $Ausgang = 29; break;
        case "nt_mostlycloudy":             $Ausgang = 30; break;
        case "nt_mostlysunny":                 $Ausgang = 31; break;
        case "nt_partlycloudy":             $Ausgang = 32; break;
        case "nt_partlysunny":                 $Ausgang = 33; break;
        case "nt_sleet":                         $Ausgang = 34; break;
        case "nt_rain":                         $Ausgang = 35; break;
        case "nt_snow":                         $Ausgang = 36; break;
        case "nt_sunny":                         $Ausgang = 37; break;
        case "nt_tstorms":                     $Ausgang = 38; break;
        default: $Ausgang = 0; break;
        }
return $Ausgang;}




function NurZahl ($Input){
    // Filtert aus dem String nur die Zahl heraus
    if ($Input == "N/A"){$Output = -1;
    }else{
    preg_match("/-?\d+(,|\.)?\d*/",$Input,$result);
    $Output = $result[0];}
return $Output;}

?>

Hallo,
es ist schon ein paar Monate zurück wo ich auch das Problem hatte, deshalb habe ich nur noch eine vage Erinnerung.
Die Meldung <b>Notice</b>: Undefined offset: 0 in <b>/var/lib/symcon/scripts/28905.ips.php</b> on line <b>131</b><br /> verweißt auf ein Problem mit der Funktion „NurZahl“. Soweit ich noch weiß ist der Inhalt, der an die Funktion übergeben wird manchmal leer, was an den von Wunderground gelieferten Werten liegt.
In meinem Script wird deshalb die Funktion „NurZahl“ weniger oft benutzt, ich weiß aber nicht ob ich noch mehr abgeändert habe. Hier der Code ab Zeile 19:

  setvalue ( IPS_GetVariableIDByName ("WetterIcon"   ,$IDKat0Aktuell), IconCheck ($parsed_json->{'current_observation'}->{'icon'}));
  setvalue ( IPS_GetVariableIDByName ("WetterText"   ,$IDKat0Aktuell),            $parsed_json->{'current_observation'}->{'weather'});
  setvalue ( IPS_GetVariableIDByName ("TempAktuell"  ,$IDKat0Aktuell),            $parsed_json->{'current_observation'}->{'temp_c'});
  setvalue ( IPS_GetVariableIDByName ("Feuchte"      ,$IDKat0Aktuell), NurZahl   ($parsed_json->{'current_observation'}->{'relative_humidity'}));
  setvalue ( IPS_GetVariableIDByName ("WindSpeed"    ,$IDKat0Aktuell),            $parsed_json->{'current_observation'}->{'wind_kph'});
  setvalue ( IPS_GetVariableIDByName ("WindRichtung" ,$IDKat0Aktuell),            $parsed_json->{'current_observation'}->{'wind_dir'});
  setvalue ( IPS_GetVariableIDByName ("Luftdruck"    ,$IDKat0Aktuell),            $parsed_json->{'current_observation'}->{'pressure_mb'});
  setvalue ( IPS_GetVariableIDByName ("Sichtweite"   ,$IDKat0Aktuell), NurZahl   ($parsed_json->{'current_observation'}->{'visibility_km'}));
  setvalue ( IPS_GetVariableIDByName ("UV Index"     ,$IDKat0Aktuell),            $parsed_json->{'current_observation'}->{'UV'});
 

Mein eigenes Script entspricht nicht dem Original deshalb hier nur ein Auszug.

Hallo Klaus!

Ich habe mir deinen Teil des Skripts angesehen. Der Unterschied liegt beim Befehl „Nur Zahl“. Dieser wurde an einigen Stellen entfernt. Ich werde mein Skript dahingehend mal abändern und nochmals probieren.

Peter

Leider immer noch der gleiche Fehler. Kannst du bitte mal dein gesamtes Skript posten. Wenn deines funktioniert, übernehme ich es.

Hallo Leute,

hier mein Script. „wenns Hilft“
wird mit IPS4 werwendet! Unter IPS5 noch nicht getestet.

<?
$api = "xxxxxxxx";
$ort = "xxxxxxxx";

 //Start writing your scripts between the brackets
$IDEigen    = $_IPS['SELF'];
$IDParent   = IPS_GetParent ($IDEigen);

// IDs heraussuchen
$IDKat0Aktuell         = IPS_GetCategoryIDByName ("Aktueller Zustand",         $IDParent);
$IDKat1Tag                 = IPS_GetCategoryIDByName ("Tag 1 Heute",                  $IDParent);
$IDKat2Tag                 = IPS_GetCategoryIDByName ("Tag 2 Morgen",             $IDParent);
$IDKat3Tag                 = IPS_GetCategoryIDByName ("Tag 3 Übermorgen",         $IDParent);


// aktuelles Wetter
  $json_string = file_get_contents("http://api.wunderground.com/api/$api/geolookup/conditions/lang:DL/q/DL/$ort.json");
  $parsed_json = json_decode($json_string);
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"      ,$IDKat0Aktuell), IconCheck     ($parsed_json->{'current_observation'}->{'icon_url'}));
  setvalue ( IPS_GetVariableIDByName ("WetterText"      ,$IDKat0Aktuell),                  $parsed_json->{'current_observation'}->{'weather'});
  setvalue ( IPS_GetVariableIDByName ("IconText"      ,$IDKat0Aktuell),                  $parsed_json->{'current_observation'}->{'icon_url'});
  setvalue ( IPS_GetVariableIDByName ("TempAktuell"      ,$IDKat0Aktuell), NurZahl         ($parsed_json->{'current_observation'}->{'temp_c'}));
  setvalue ( IPS_GetVariableIDByName ("Feuchte"          ,$IDKat0Aktuell), NurZahl        ($parsed_json->{'current_observation'}->{'relative_humidity'}));
  setvalue ( IPS_GetVariableIDByName ("WindSpeed"      ,$IDKat0Aktuell), NurZahl         ($parsed_json->{'current_observation'}->{'wind_kph'}));
  setvalue ( IPS_GetVariableIDByName ("WindRichtung"  ,$IDKat0Aktuell), NurZahl         ($parsed_json->{'current_observation'}->{'wind_degrees'}));
  setvalue ( IPS_GetVariableIDByName ("WindAus"       ,$IDKat0Aktuell),                ($parsed_json->{'current_observation'}->{'wind_dir'}));
  setvalue ( IPS_GetVariableIDByName ("Luftdruck"      ,$IDKat0Aktuell), NurZahl         ($parsed_json->{'current_observation'}->{'pressure_mb'}));
  setvalue ( IPS_GetVariableIDByName ("Sichtweite"      ,$IDKat0Aktuell), NurZahl         ($parsed_json->{'current_observation'}->{'visibility_km'}));
  setvalue ( IPS_GetVariableIDByName ("UV Index"          ,$IDKat0Aktuell), NurZahl         ($parsed_json->{'current_observation'}->{'UV'}));




// Vorhersage
    $json_fc_string = file_get_contents("http://api.wunderground.com/api/$api/forecast/lang:DL/q/Germany/$ort.json");
    $parsed_fc_json = json_decode($json_fc_string);
    $prognose = $parsed_fc_json->{'forecast'}->{'simpleforecast'}->{'forecastday'};
    $prognose_2 = $parsed_fc_json->{'forecast'}->{'txt_forecast'}->{'forecastday'};

//heute
  setvalue ( IPS_GetVariableIDByName ("TagBezeichnung"          ,$IDKat1Tag),                      $prognose[0]->date->weekday) ;
  setvalue ( IPS_GetVariableIDByName ("Info Tag"   				       ,$IDKat1Tag),           $prognose_2[0]->fcttext_metric) ;
  setvalue ( IPS_GetVariableIDByName ("Info Nacht"   				       ,$IDKat1Tag),           $prognose_2[1]->fcttext_metric) ;
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"              ,$IDKat1Tag), IconCheck     ($prognose[0]->icon_url)) ;
  setvalue ( IPS_GetVariableIDByName ("WetterBezeichnung"       ,$IDKat1Tag), utf8_decode    ($prognose[0]->conditions)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMin"                  ,$IDKat1Tag), NurZahl         ($prognose[0]->low->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMax"                  ,$IDKat1Tag), NurZahl         ($prognose[0]->high->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("WindMax"                  ,$IDKat1Tag), NurZahl         ($prognose[0]->maxwind->kph)) ;
  setvalue ( IPS_GetVariableIDByName ("Schneefall cm"          ,$IDKat1Tag), NurZahl         ($prognose[0]->snow_allday->cm)) ;
  setvalue ( IPS_GetVariableIDByName ("RegenRisikoTag"          ,$IDKat1Tag), NurZahl         ($prognose_2[0]->pop)) ;
  setvalue ( IPS_GetVariableIDByName ("RegenRisikoNacht"          ,$IDKat1Tag), NurZahl         ($prognose_2[1]->pop)) ;

//morgen
  setvalue ( IPS_GetVariableIDByName ("TagBezeichnung"          ,$IDKat2Tag),                      $prognose[1]->date->weekday) ;
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"              ,$IDKat2Tag), IconCheck     ($prognose[1]->icon_url)) ;
  setvalue ( IPS_GetVariableIDByName ("WetterBezeichnung"      ,$IDKat2Tag), utf8_decode    ($prognose[1]->conditions)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMin"                  ,$IDKat2Tag), NurZahl         ($prognose[1]->low->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMax"                  ,$IDKat2Tag), NurZahl         ($prognose[1]->high->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("WindMax"                  ,$IDKat2Tag), NurZahl        ($prognose[1]->maxwind->kph)) ;
  setvalue ( IPS_GetVariableIDByName ("Schneefall cm"          ,$IDKat2Tag), NurZahl         ($prognose[1]->snow_allday->cm)) ;
  setvalue ( IPS_GetVariableIDByName ("RegenRisikoTag"          ,$IDKat2Tag), NurZahl         ($prognose_2[2]->pop)) ;
  setvalue ( IPS_GetVariableIDByName ("RegenRisikoNacht"          ,$IDKat2Tag), NurZahl         ($prognose_2[3]->pop)) ;

//übermorgen
  setvalue ( IPS_GetVariableIDByName ("TagBezeichnung"          ,$IDKat3Tag),                      $prognose[2]->date->weekday) ;
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"              ,$IDKat3Tag), IconCheck     ($prognose[2]->icon_url)) ;
  setvalue ( IPS_GetVariableIDByName ("WetterBezeichnung"      ,$IDKat3Tag), utf8_decode    ($prognose[2]->conditions)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMin"                  ,$IDKat3Tag), NurZahl         ($prognose[2]->low->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMax"                  ,$IDKat3Tag), NurZahl         ($prognose[2]->high->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("WindMax"                  ,$IDKat3Tag), NurZahl         ($prognose[2]->maxwind->kph)) ;
  setvalue ( IPS_GetVariableIDByName ("Schneefall cm"          ,$IDKat3Tag), NurZahl         ($prognose[2]->snow_allday->cm)) ;
  setvalue ( IPS_GetVariableIDByName ("RegenRisikoTag"          ,$IDKat3Tag), NurZahl         ($prognose_2[4]->pop)) ;
  setvalue ( IPS_GetVariableIDByName ("RegenRisikoNacht"          ,$IDKat3Tag), NurZahl         ($prognose_2[5]->pop)) ;





//Astronomie
    $json_ast_string = file_get_contents("http://api.wunderground.com/api/$api/astronomy/q/Germany/$ort.json");
    $parsed_ast_json = json_decode($json_ast_string);

  setvalue ( IPS_GetVariableIDByName ("Mondstatus"      ,$IDKat0Aktuell), $parsed_ast_json->{'moon_phase'}->{'percentIlluminated'});





function IconCheck ($Eingang){
    // Icon wird durch eine Zahl ersetzt
    switch ($Eingang){
        case "http://icons.wxug.com/i/c/k/chanceflurries.gif":                 $Ausgang = 01; break;
        case "http://icons.wxug.com/i/c/k/chancerain.gif":                     $Ausgang = 02; break;
        case "http://icons.wxug.com/i/c/k/chancesleet.gif":                     $Ausgang = 03; break;
        case "http://icons.wxug.com/i/c/k/chancesnow.gif":                     $Ausgang = 04; break;
        case "http://icons.wxug.com/i/c/k/chancetstorms.gif":                 $Ausgang = 05; break;
        case "http://icons.wxug.com/i/c/k/clear.gif":                             $Ausgang = 06; break;
        case "http://icons.wxug.com/i/c/k/cloudy.gif":                         $Ausgang = 07; break;
        case "http://icons.wxug.com/i/c/k/flurries.gif":                         $Ausgang = 08; break;
        case "http://icons.wxug.com/i/c/k/fog.gif":                             $Ausgang = 09; break;
        case "http://icons.wxug.com/i/c/k/hazy.gif":                             $Ausgang = 10; break;
        case "http://icons.wxug.com/i/c/k/mostlycloudy.gif":                 $Ausgang = 11; break;
        case "http://icons.wxug.com/i/c/k/mostlysunny.gif":                     $Ausgang = 12; break;
        case "http://icons.wxug.com/i/c/k/partlycloudy.gif":                 $Ausgang = 13; break;
        case "http://icons.wxug.com/i/c/k/partlysunny.gif":                     $Ausgang = 14; break;
        case "http://icons.wxug.com/i/c/k/sleet.gif":                             $Ausgang = 15; break;
        case "http://icons.wxug.com/i/c/k/rain.gif":                             $Ausgang = 16; break;
        case "http://icons.wxug.com/i/c/k/snow.gif":                             $Ausgang = 17; break;
        case "http://icons.wxug.com/i/c/k/sunny.gif":                             $Ausgang = 18; break;
        case "http://icons.wxug.com/i/c/k/tstorms.gif":                         $Ausgang = 19; break;
        case "http://icons.wxug.com/i/c/k/nt_chanceflurries.gif":             $Ausgang = 20; break;
        case "http://icons.wxug.com/i/c/k/nt_chancerain.gif":                 $Ausgang = 21; break;
        case "http://icons.wxug.com/i/c/k/nt_chancesleet.gif":                 $Ausgang = 22; break;
        case "http://icons.wxug.com/i/c/k/nt_chancesnow.gif":                 $Ausgang = 23; break;
        case "http://icons.wxug.com/i/c/k/nt_chancetstorms.gif":             $Ausgang = 24; break;
        case "http://icons.wxug.com/i/c/k/nt_clear.gif":                         $Ausgang = 25; break;
        case "http://icons.wxug.com/i/c/k/nt_cloudy.gif":                     $Ausgang = 26; break;
        case "http://icons.wxug.com/i/c/k/nt_flurries.gif":                     $Ausgang = 27; break;
        case "http://icons.wxug.com/i/c/k/nt_fog.gif":                         $Ausgang = 28; break;
        case "http://icons.wxug.com/i/c/k/nt_hazy.gif":                         $Ausgang = 29; break;
        case "http://icons.wxug.com/i/c/k/nt_mostlycloudy.gif":             $Ausgang = 30; break;
        case "http://icons.wxug.com/i/c/k/nt_mostlysunny.gif":                 $Ausgang = 31; break;
        case "http://icons.wxug.com/i/c/k/nt_partlycloudy.gif":             $Ausgang = 32; break;
        case "http://icons.wxug.com/i/c/k/nt_partlysunny.gif":                 $Ausgang = 33; break;
        case "http://icons.wxug.com/i/c/k/nt_sleet.gif":                         $Ausgang = 34; break;
        case "http://icons.wxug.com/i/c/k/nt_rain.gif":                         $Ausgang = 35; break;
        case "http://icons.wxug.com/i/c/k/nt_snow.gif":                         $Ausgang = 36; break;
        case "http://icons.wxug.com/i/c/k/nt_sunny.gif":                         $Ausgang = 37; break;
        case "http://icons.wxug.com/i/c/k/nt_tstorms.gif":                     $Ausgang = 38; break;
        default: $Ausgang = 0; break;
        }
return $Ausgang;}




function NurZahl ($Input){
    // Filtert aus dem String nur die Zahl heraus
    if ($Input == "N/A"){$Output = -1;
    }else{
    preg_match("/-?\d+(,|\.)?\d*/",$Input,$result);
    $Output = $result[0];}
return $Output;}



?>

Gruß

Hallo sewo!

Danke für dein Skript, hab dieses jetzt getestet. Jedoch wirft es mir einige Fehler aus. Ich hab gesehen, dass es bei dir ein paar Variablen mehr gibt, als vom „Installations-Skript“ angelegt werden. Hast du diese nachträglich manuell angelegt?

Hallo Loewenkönig,
ich habe Dein Script mal bei mir installiert und laufen lassen und kann den Fehler bestätigen.
Die Ursache liegt in der Zeile 26. Der Inhalt der Variable $parsed_json->{‚current_observation‘}->{‚visibility_km‘} ist leer, was zu dem Fehler in der Zeile 131 führt.
Ergänze doch mal die IF- Abrage der Funktion NurZahl und prüfe ob die Variable $Input leer ist. Es würde dann unter Sichtweite ein -1 erscheinen, was vermutl. nicht stört.

function NurZahl ($Input){
    
    // Filtert aus dem String nur die Zahl heraus
    if ($Input == "N/A" or empty($Input)){$Output = -1;
    }else{
    preg_match("/-?\d+(,|\.)?\d*/",$Input,$result);
    $Output = $result[0];}
return $Output;}

Hi,

ja den habe ich damals an meine bedürfnisse Angepasst:)
Du kannst die Fehlende Variable Händisch erstellen oder im Script auskommentieren die von mir zusätlich erstellt wurden.

Gruß

Habe dies jetzt geprüft. Genau so ist es, der Fehler ist jetzt weg und ab und zu kommt bei Sichtweite -1. Das Problem dabei ist weiterhin, dass gleichzeitig die Vorschau falsch befüllt wird. Zum Beispiel steht bei TagBezeichnung Heute „Mittwoch“ und die Temperaturen stimmen auch überhaupt nicht. Aktualisiere ich wenigen Sekunden darauf nochmals, werden die Variablen wieder richtig befüllt und alles stimmt wieder :confused: