Fehler in WetterScript

Hallo zusammen,

ich bekomme bei meinem WetterScript folgenden Fehler angezeigt.

Parse error:  Invalid numeric literal in /var/lib/symcon/scripts/18950.ips.php on line 95

Hier das Script

<?
$api = "API-KEY";
$ort = "Neuss";

 //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);
$IDKat4Tag                 = IPS_GetCategoryIDByName ("Tag 4 Überü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 ("Regen mm"                 ,$IDKat1Tag), NurZahl         ($prognose[0]->qpf_allday->mm)) ;

//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 ("Regen mm"                 ,$IDKat2Tag), NurZahl         ($prognose[1]->qpf_allday->mm)) ;

//ü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 ("Regen mm"                ,$IDKat3Tag), NurZahl         ($prognose[2]->qpf_allday->mm)) ;

//überübermorgen
  setvalue ( IPS_GetVariableIDByName ("TagBezeichnung"          ,$IDKat4Tag),                      $prognose[3]->date->weekday) ;
  setvalue ( IPS_GetVariableIDByName ("WetterIcon"              ,$IDKat4Tag), IconCheck     ($prognose[3]->icon)) ;
  setvalue ( IPS_GetVariableIDByName ("WetterBezeichnung"      ,$IDKat4Tag), utf8_decode    ($prognose[3]->conditions)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMin"                  ,$IDKat4Tag), NurZahl         ($prognose[3]->low->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("TempMax"                  ,$IDKat4Tag), NurZahl         ($prognose[3]->high->celsius)) ;
  setvalue ( IPS_GetVariableIDByName ("WindMax"                  ,$IDKat4Tag), NurZahl         ($prognose[3]->maxwind->kph)) ;
  setvalue ( IPS_GetVariableIDByName ("Regen mm"                ,$IDKat4Tag), NurZahl         ($prognose[3]->qpf_allday->mm)) ;



//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;}



?>

IPS 5.0 läuft seit heute auf meiner Synology (Docker).

Kann mir jemand sagen was ich im Script ändern muss, damit es wieder funktioniert.

Besten Dank
Kai

Die führende 0 bei Zahlen ist ein Problem.

$Ausgang = 08;

Ist zwar nur bei 08 und 09 ein Fehler, aber ich würde generell keine führenden 0’en verwenden

Hallo Demel,

vielen Dank, klappt jetzt wieder :slight_smile:

Unter IPS 4.4 lief es mit der führenden 0… :confused:

Beste Grüße und einen schönen Abend
Kai