Wetter APIXU Script

Hallo,
ich möchte euch heute mal meine „eigene“ Version eines Wetter Scriptes vorstellen. Mein haupt Augenmerk lag hierbei auf der Bereitstellung der Daten und der anschließenden Verwendung in IPS View.

Aber zunächst mal das Ergebnis:

Preview.png

Angezeigt wird wie im Preview das aktuelle Wetter, welches ich später, wenn meine Wetterstation da ist ersetzt wird, die vorhersage von Heute (unterhalb des Icons Max/Min Temp) sowie bei mir 4 Vorhersagetage. Dies ist im API Aufruf erweiterbar und muss im Script entsprechend angepasst werden.

Desweiteren habe ich noch zwei Buttons benutzt, welche den Ort der Vorhersage/Wetter umswitchen können. So kann ich beispielsweise das Wetter an meinem Arbeitsort einstellen. Hierfür muss entsprechend der Ort oder Länge und Breitengrad angegeben werden. Dies löse ich über eine vordefinierte Switch/Case Struktur. An jedem Button ist je ein Script angeschlossen, in welchem ich eine Indexvariable hoch bzw runter zähle. Mein Wetterscript wird entsprechend includet.

Die Windgeschwindigkeit habe ich in zwei Funktionen gepackt. Entweder nutzt man die originalen Daten, wie im Bild dargestellt, oder die lange Version statt 19,1 km/h, W => 19,1 km/h, West. Oder man kann auch den Typ des Windes ausgeben zB Leichte Briese. Hier habe ich mich allerdings an Daten aus dem Internet orientiert und kann nicht sagen, ob die Geschwindigkeiten tatsächlich stimmen.

Anbei mein Script, wobei ich deutlich sagen muss, dass ich mich am Wundergroundscript hier aus dem Forum bedient habe und dies etwas erweitert habe. Jeder Tag wird in eine eigene Kategorie verpackt, diese wird angelegt… Eben um es für mich etwas zu strukturieren.

Da meine PHP Kenntnisse aber recht klein sind weiß ich nicht, ob manche Funktionen besser zu Programmieren wären.
Für jede Kritik bin ich offen.

<?
//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//

 // Key und Ort müssen eingetragen werden
$api       = ;                     // API wird angezeigt nach Anmeldung bei https://www.apixu.com
$valCityID = GetValue(17329);  // Laufvariable
$cnt       = 5;                                                     // Anzahl Tage Vorhersage





//------------------------------------------------------------------------------------------//
// CITY ID WÄHLEN
// https://www.apixu.com/api-explorer.aspx?key=
switch ($valCityID) {
   case 0:
      $latlon = "49.95,7.12";    // Traben-Trarbach
      break;
   case 1:
      .....
      break;
    case 2:
      ....
      break;
}




//------------------------------------------------------------------------------------------//
// API JSON Response

$json_string_act_ = file_get_contents("http://api.apixu.com/v1/forecast.json?key=$api&q=$latlon&days=$cnt&lang=de");

//var_dump($json_string_act_);
$parsed_json = json_decode($json_string_act_);
//var_dump($parsed_json);

$location            = $parsed_json->{'location'}->{'name'};  

//------------------------------------------------------------------------------------------//
// ANPASSUNGEN

// Anpassung location => Palma wird zu Palma de Mallorca
$find = 'Palma';
$pos  = strpos($location, $find);

if ($pos !== false) { $location = str_replace("Palma", "Palma de Mallorca", $location); }  



//------------------------------------------------------------------------------------------//
// Variablen anlegen: Allgemein
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;

SetValue(CreateVariableByName($_IPS['SELF'], "Location", 3, ""), $location);



//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//


// AKTUELLES WETTER


// Aktuelles Wetter
$current_temp            = $parsed_json->{'current'}->{'temp_c'};    
$current_feelslike_c     = $parsed_json->{'current'}->{'feelslike_c'};  
$current_condition_text  = $parsed_json->{'current'}->{'condition'}->{'text'};  
$current_condition_icon  = $parsed_json->{'current'}->{'condition'}->{'icon'};     
$current_condition_code  = $parsed_json->{'current'}->{'condition'}->{'code'};   
$current_is_day          = $parsed_json->{'current'}->{'is_day'};         
$current_wind_kph        = $parsed_json->{'current'}->{'wind_kph'};
$current_wind_degree     = $parsed_json->{'current'}->{'wind_degree'};
$current_wind_dir        = $parsed_json->{'current'}->{'wind_dir'};
$current_pressure_mb     = $parsed_json->{'current'}->{'pressure_mb'}; 
$current_humidity        = $parsed_json->{'current'}->{'humidity'}; 
$current_cloud           = $parsed_json->{'current'}->{'cloud'}; 
$current_precip_mm       = $parsed_json->{'current'}->{'precip_mm'}; 

//------------------------------------------------------------------------------------------//
// ANPASSUNGEN

// Anpassung condition text => Regenfall wird zu Regen
$find = 'Regenfall';
$pos  = strpos($current_condition_text, $find);

if ($pos !== false) { $current_condition_text = str_replace("Regenfall", "Regen", $current_condition_text); }

// Iconsubstring 
if ($current_is_day == 1) { $current_icon = icon_substr($current_condition_icon); }
else { $current_icon = icon_substr($current_condition_icon) + 9000; } 
// Für die Unterscheidung der IPS View Assoziation Bilder bei Tag original Nummer
// Für die Unterscheidung der IPS View Assoziation Bilder bei Nacht mit führender 9

// Anpassung/Auswertung der Windgeschwindigkeit
$current_wind_class = wind_classes($current_wind_kph);

// Anpassung/Auswertung der Windrichtung
$current_wind_direction = wind_directions($current_wind_degree) . " (" .$current_wind_degree."°)";

// Anpassung Windgeschwindigkeit und Richtung
$current_wind = $current_wind_kph ."km/h, ". $current_wind_dir;




//------------------------------------------------------------------------------------------//
// Test-Ausgabe

/*
echo "Temperatur: ${current_temp}°
";
echo "Gefühlt wie: ${current_feelslike_c}°
";
echo "Wetterkondition: ${current_condition_text}
";
echo "Wetterkondition Icon: ${current_condition_icon}
";
echo "Wetterkondition Code: ${current_condition_code}
";
echo "Ist Tag: ${current_is_day}
";
echo "Windgeschwindigkeit: ${current_wind_kph} km/h " .$current_wind_class. "
";
echo "Windrichtung lang: " .$current_wind_direction. "
";
echo "Windrichtung kurz: ${current_wind_dir}
";
echo "Wind: ${current_wind}
";
echo "Luftdruck: ${current_pressure_mb}hPa
";
echo "Luftfeuchte: ${current_humidity}
";
echo "Bewölkung: ${current_cloud}%
";
echo "Niederschlag: ${current_precip_mm}mm
";
*/


//------------------------------------------------------------------------------------------//
// Variablen anlegen: Aktuelles Wetter
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;

SetValue(CreateVariableByName('Aktuell', "01 Temperatur",           2, "~Temperature"),     $current_temp);
SetValue(CreateVariableByName('Aktuell', "02 Gefühlt wie",          2, "~Temperature"),     $current_feelslike_c);
SetValue(CreateVariableByName('Aktuell', "03 Wetterkondition",      3, ""),                 $current_condition_text);
SetValue(CreateVariableByName('Aktuell', "04 Wetterkondition Icon", 1, ""),                 $current_icon);
SetValue(CreateVariableByName('Aktuell', "05 Wetterkondition Code", 1, ""),                 $current_condition_code);
SetValue(CreateVariableByName('Aktuell', "06 Ist Tag",              0, ""),                 $current_is_day);
SetValue(CreateVariableByName('Aktuell', "07 Windgeschwindigkeit",  2, "~WindSpeed.kmh"),   $current_wind_kph);
SetValue(CreateVariableByName('Aktuell', "08 Windrichtung",         3, ""),                 $current_wind_direction);
SetValue(CreateVariableByName('Aktuell', "09 Wind",                 3, ""),                 $current_wind);
SetValue(CreateVariableByName('Aktuell', "10 Luftdruck",            2, "~AirPressure.F"),   $current_pressure_mb);
SetValue(CreateVariableByName('Aktuell', "11 Luftfeuchte",          2, "~Humidity.F"),      $current_humidity);
SetValue(CreateVariableByName('Aktuell', "12 Bewölkung",            2, "Clouds"),           $current_cloud);
SetValue(CreateVariableByName('Aktuell', "13 Niederschlag",         2, "~Rainfall"),        $current_precip_mm);





//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//


//VORHERSAGE

//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//


// Vorhersage - Heute
$forecast_heute_weekday         = day_of_week( $parsed_json->{'forecast'}->{'forecastday'}[0]->{'date_epoch'});
$forecast_heute_maxtemp         = $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'maxtemp_c'};   
$forecast_heute_mintemp         = $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'mintemp_c'}; 
$forecast_heute_avgtemp         = $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'avgtemp_c'}; 
$forecast_heute_condition_text  = $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'condition'}->{'text'};  
$forecast_heute_condition_icon  = $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'condition'}->{'icon'};     
$forecast_heute_condition_code  = $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'condition'}->{'code'};   
$forecast_heute_max_wind_kph    = $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'maxwind_kph'};
$forecast_heute_avghumidity     = $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'avghumidity'}; 
$forecast_heute_totalprecip_mm  = $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'totalprecip_mm'};

// Iconsubstring 
$forecast_heute_icon = icon_substr($forecast_heute_condition_icon);

// MaxMinTemperatur
$forecast_heute_maxmintemp = round($forecast_heute_maxtemp) ."° / ". round($forecast_heute_mintemp) ."°";


//------------------------------------------------------------------------------------------//
// Test-Ausgabe Heute

/*
echo "Wochentag: ${forecast_heute_weekday}
";
echo "MaxTemperatur: ${forecast_heute_maxtemp}°
";
echo "MinTemperatur: ${forecast_heute_mintemp}°
";
echo "AvgTemperatur: ${forecast_heute_avgtemp}°
";
echo "Wetterkondition: ${forecast_heute_condition_text}
";
echo "Wetterkondition Icon: ${forecast_heute_condition_icon}
";
echo "Wetterkondition Code: ${forecast_heute_condition_code}
";
echo "MaxWindgeschwindigkeit: ${forecast_heute_max_wind_kph} km/h
";
echo "AvgLuftfeuchte: ${forecast_heute_avghumidity}
";
echo "TotalNiederschlag: ${forecast_heute_totalprecip_mm}mm
";
*/


//------------------------------------------------------------------------------------------//
// Variablen anlegen: Heute
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;

SetValue(CreateVariableByName('Heute', "Wochentag",                    3, ""),                 $forecast_heute_weekday);
SetValue(CreateVariableByName('Heute', "01 MaxTemperatur",             2, "~Temperature"),     $forecast_heute_maxtemp);
SetValue(CreateVariableByName('Heute', "02 MinTemperatur",             2, "~Temperature"),     $forecast_heute_mintemp);
SetValue(CreateVariableByName('Heute', "03 AvgTemperatur",             2, "~Temperature"),     $forecast_heute_avgtemp);
SetValue(CreateVariableByName('Heute', "04 Wetterkondition",           3, ""),                 $forecast_heute_condition_text);
SetValue(CreateVariableByName('Heute', "05 Wetterkondition Icon",      1, ""),                 $forecast_heute_icon);
SetValue(CreateVariableByName('Heute', "06 Wetterkondition Code",      1, ""),                 $forecast_heute_condition_code);
SetValue(CreateVariableByName('Heute', "07 MaxWindgeschwindigkeit",    2, "~WindSpeed.kmh"),   $forecast_heute_max_wind_kph);
SetValue(CreateVariableByName('Heute', "08 AvgLuftfeuchte",            2, "~Humidity.F"),      $forecast_heute_avghumidity);
SetValue(CreateVariableByName('Heute', "09 TotalNiederschlag",         2, "~Rainfall"),        $forecast_heute_totalprecip_mm);
SetValue(CreateVariableByName('Heute', "10 MaxMinTemperatur",          3, ""),                 $forecast_heute_maxmintemp);





//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//



// Vorhersage - Tag 1
$forecast_1_weekday         = day_of_week( $parsed_json->{'forecast'}->{'forecastday'}[1]->{'date_epoch'});
$forecast_1_maxtemp         = $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'maxtemp_c'};   
$forecast_1_mintemp         = $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'mintemp_c'}; 
$forecast_1_avgtemp         = $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'avgtemp_c'}; 
$forecast_1_condition_text  = $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'condition'}->{'text'};  
$forecast_1_condition_icon  = $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'condition'}->{'icon'};     
$forecast_1_condition_code  = $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'condition'}->{'code'};   
$forecast_1_max_wind_kph    = $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'maxwind_kph'};
$forecast_1_avghumidity     = $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'avghumidity'}; 
$forecast_1_totalprecip_mm  = $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'totalprecip_mm'};

// Iconsubstring 
$forecast_1_icon = icon_substr($forecast_1_condition_icon);

// MaxMinTemperatur
$forecast_1_maxmintemp = round($forecast_1_maxtemp) ."° / ". round($forecast_1_mintemp) ."°";


//------------------------------------------------------------------------------------------//
// Test-Ausgabe Vorhersage 1

/*
echo "Wochentag: ${forecast_1_weekday}
";
echo "MaxTemperatur: ${forecast_1_maxtemp}°
";
echo "MinTemperatur: ${forecast_1_mintemp}°
";
echo "AvgTemperatur: ${forecast_1_avgtemp}°
";
echo "Wetterkondition: ${forecast_1_condition_text}
";
echo "Wetterkondition Icon: ${forecast_1_condition_icon}
";
echo "Wetterkondition Code: ${forecast_1_condition_code}
";
echo "MaxWindgeschwindigkeit: ${forecast_1_max_wind_kph} km/h
";
echo "AvgLuftfeuchte: ${forecast_1_avghumidity}
";
echo "TotalNiederschlag: ${forecast_1_totalprecip_mm}mm
";
*/


//------------------------------------------------------------------------------------------//
// Variablen anlegen: Vorhersage 1
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;

SetValue(CreateVariableByName('Forecast_1', "Wochentag",                    3, ""),                 $forecast_1_weekday);
SetValue(CreateVariableByName('Forecast_1', "01 MaxTemperatur",             2, "~Temperature"),     $forecast_1_maxtemp);
SetValue(CreateVariableByName('Forecast_1', "02 MinTemperatur",             2, "~Temperature"),     $forecast_1_mintemp);
SetValue(CreateVariableByName('Forecast_1', "03 AvgTemperatur",             2, "~Temperature"),     $forecast_1_avgtemp);
SetValue(CreateVariableByName('Forecast_1', "04 Wetterkondition",           3, ""),                 $forecast_1_condition_text);
SetValue(CreateVariableByName('Forecast_1', "05 Wetterkondition Icon",      1, ""),                 $forecast_1_icon);
SetValue(CreateVariableByName('Forecast_1', "06 Wetterkondition Code",      1, ""),                 $forecast_1_condition_code);
SetValue(CreateVariableByName('Forecast_1', "07 MaxWindgeschwindigkeit",    2, "~WindSpeed.kmh"),   $forecast_1_max_wind_kph);
SetValue(CreateVariableByName('Forecast_1', "08 AvgLuftfeuchte",            2, "~Humidity.F"),      $forecast_1_avghumidity);
SetValue(CreateVariableByName('Forecast_1', "09 TotalNiederschlag",         2, "~Rainfall"),        $forecast_1_totalprecip_mm);
SetValue(CreateVariableByName('Forecast_1', "10 MaxMinTemperatur",          3, ""),                 $forecast_1_maxmintemp);





//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//


// Vorhersage - Tag 2
$forecast_2_weekday         = day_of_week( $parsed_json->{'forecast'}->{'forecastday'}[2]->{'date_epoch'});
$forecast_2_maxtemp         = $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'maxtemp_c'};   
$forecast_2_mintemp         = $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'mintemp_c'}; 
$forecast_2_avgtemp         = $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'avgtemp_c'}; 
$forecast_2_condition_text  = $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'condition'}->{'text'};  
$forecast_2_condition_icon  = $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'condition'}->{'icon'};     
$forecast_2_condition_code  = $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'condition'}->{'code'};   
$forecast_2_max_wind_kph    = $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'maxwind_kph'};
$forecast_2_avghumidity     = $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'avghumidity'}; 
$forecast_2_totalprecip_mm  = $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'totalprecip_mm'};

// Iconsubstring 
$forecast_2_icon = icon_substr($forecast_2_condition_icon);

// MaxMinTemperatur
$forecast_2_maxmintemp = round($forecast_2_maxtemp) ."° / ". round($forecast_2_mintemp) ."°";


//------------------------------------------------------------------------------------------//
// Test-Ausgabe Vorhersage 2

/*
echo "MaxTemperatur: ${forecast_2_maxtemp}°
";
echo "MinTemperatur: ${forecast_2_mintemp}°
";
echo "AvgTemperatur: ${forecast_2_avgtemp}°
";
echo "Wetterkondition: ${forecast_2_condition_text}
";
echo "Wetterkondition Icon: ${forecast_2_condition_icon}
";
echo "Wetterkondition Code: ${forecast_2_condition_code}
";
echo "MaxWindgeschwindigkeit: ${forecast_2_max_wind_kph} km/h
";
echo "AvgLuftfeuchte: ${forecast_2_avghumidity}
";
echo "TotalNiederschlag: ${forecast_2_totalprecip_mm}mm
";
*/


//------------------------------------------------------------------------------------------//
// Variablen anlegen: Vorhersage 2
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;

SetValue(CreateVariableByName('Forecast_2', "Wochentag",                    3, ""),                 $forecast_2_weekday);
SetValue(CreateVariableByName('Forecast_2', "01 MaxTemperatur",             2, "~Temperature"),     $forecast_2_maxtemp);
SetValue(CreateVariableByName('Forecast_2', "02 MinTemperatur",             2, "~Temperature"),     $forecast_2_mintemp);
SetValue(CreateVariableByName('Forecast_2', "03 AvgTemperatur",             2, "~Temperature"),     $forecast_2_avgtemp);
SetValue(CreateVariableByName('Forecast_2', "04 Wetterkondition",           3, ""),                 $forecast_2_condition_text);
SetValue(CreateVariableByName('Forecast_2', "05 Wetterkondition Icon",      1, ""),                 $forecast_2_icon);
SetValue(CreateVariableByName('Forecast_2', "06 Wetterkondition Code",      1, ""),                 $forecast_2_condition_code);
SetValue(CreateVariableByName('Forecast_2', "07 MaxWindgeschwindigkeit",    2, "~WindSpeed.kmh"),   $forecast_2_max_wind_kph);
SetValue(CreateVariableByName('Forecast_2', "08 AvgLuftfeuchte",            2, "~Humidity.F"),      $forecast_2_avghumidity);
SetValue(CreateVariableByName('Forecast_2', "09 TotalNiederschlag",         2, "~Rainfall"),        $forecast_2_totalprecip_mm);
SetValue(CreateVariableByName('Forecast_2', "10 MaxMinTemperatur",          3, ""),                 $forecast_2_maxmintemp);





//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//


// Vorhersage - Tag 3
$forecast_3_weekday         = day_of_week( $parsed_json->{'forecast'}->{'forecastday'}[3]->{'date_epoch'});
$forecast_3_maxtemp         = $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'maxtemp_c'};   
$forecast_3_mintemp         = $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'mintemp_c'}; 
$forecast_3_avgtemp         = $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'avgtemp_c'}; 
$forecast_3_condition_text  = $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'condition'}->{'text'};  
$forecast_3_condition_icon  = $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'condition'}->{'icon'};     
$forecast_3_condition_code  = $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'condition'}->{'code'};   
$forecast_3_max_wind_kph    = $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'maxwind_kph'};
$forecast_3_avghumidity     = $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'avghumidity'}; 
$forecast_3_totalprecip_mm  = $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'totalprecip_mm'};

// Iconsubstring 
$forecast_3_icon = icon_substr($forecast_3_condition_icon);

// MaxMinTemperatur
$forecast_3_maxmintemp = round($forecast_3_maxtemp) ."° / ". round($forecast_3_mintemp) ."°";


//------------------------------------------------------------------------------------------//
// Test-Ausgabe Vorhersage 3

/*
echo "MaxTemperatur: ${forecast_3_maxtemp}°
";
echo "MinTemperatur: ${forecast_3_mintemp}°
";
echo "AvgTemperatur: ${forecast_3_avgtemp}°
";
echo "Wetterkondition: ${forecast_3_condition_text}
";
echo "Wetterkondition Icon: ${forecast_3_condition_icon}
";
echo "Wetterkondition Code: ${forecast_3_condition_code}
";
echo "MaxWindgeschwindigkeit: ${forecast_3_max_wind_kph} km/h
";
echo "AvgLuftfeuchte: ${forecast_3_avghumidity}
";
echo "TotalNiederschlag: ${forecast_3_totalprecip_mm}mm
";
*/


//------------------------------------------------------------------------------------------//
// Variablen anlegen: Vorhersage 3
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;

SetValue(CreateVariableByName('Forecast_3', "Wochentag",                    3, ""),                 $forecast_3_weekday);
SetValue(CreateVariableByName('Forecast_3', "01 MaxTemperatur",             2, "~Temperature"),     $forecast_3_maxtemp);
SetValue(CreateVariableByName('Forecast_3', "02 MinTemperatur",             2, "~Temperature"),     $forecast_3_mintemp);
SetValue(CreateVariableByName('Forecast_3', "03 AvgTemperatur",             2, "~Temperature"),     $forecast_3_avgtemp);
SetValue(CreateVariableByName('Forecast_3', "04 Wetterkondition",           3, ""),                 $forecast_3_condition_text);
SetValue(CreateVariableByName('Forecast_3', "05 Wetterkondition Icon",      1, ""),                 $forecast_3_icon);
SetValue(CreateVariableByName('Forecast_3', "06 Wetterkondition Code",      1, ""),                 $forecast_3_condition_code);
SetValue(CreateVariableByName('Forecast_3', "07 MaxWindgeschwindigkeit",    2, "~WindSpeed.kmh"),   $forecast_3_max_wind_kph);
SetValue(CreateVariableByName('Forecast_3', "08 AvgLuftfeuchte",            2, "~Humidity.F"),      $forecast_3_avghumidity);
SetValue(CreateVariableByName('Forecast_3', "09 TotalNiederschlag",         2, "~Rainfall"),        $forecast_3_totalprecip_mm);
SetValue(CreateVariableByName('Forecast_3', "10 MaxMinTemperatur",          3, ""),                 $forecast_3_maxmintemp);





//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//


// Vorhersage - Tag 4
$forecast_4_weekday         = day_of_week( $parsed_json->{'forecast'}->{'forecastday'}[4]->{'date_epoch'});
$forecast_4_maxtemp         = $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'maxtemp_c'};   
$forecast_4_mintemp         = $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'mintemp_c'}; 
$forecast_4_avgtemp         = $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'avgtemp_c'}; 
$forecast_4_condition_text  = $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'condition'}->{'text'};  
$forecast_4_condition_icon  = $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'condition'}->{'icon'};     
$forecast_4_condition_code  = $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'condition'}->{'code'};   
$forecast_4_max_wind_kph    = $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'maxwind_kph'};
$forecast_4_avghumidity     = $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'avghumidity'}; 
$forecast_4_totalprecip_mm  = $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'totalprecip_mm'};

// Iconsubstring 
$forecast_4_icon = icon_substr($forecast_4_condition_icon);

// MaxMinTemperatur
$forecast_4_maxmintemp = round($forecast_4_maxtemp) ."° / ". round($forecast_4_mintemp) ."°";


//------------------------------------------------------------------------------------------//
// Test-Ausgabe Vorhersage 4

/*
echo "MaxTemperatur: ${forecast_4_maxtemp}°
";
echo "MinTemperatur: ${forecast_4_mintemp}°
";
echo "AvgTemperatur: ${forecast_4_avgtemp}°
";
echo "Wetterkondition: ${forecast_4_condition_text}
";
echo "Wetterkondition Icon: ${forecast_4_condition_icon}
";
echo "Wetterkondition Code: ${forecast_4_condition_code}
";
echo "MaxWindgeschwindigkeit: ${forecast_4_max_wind_kph} km/h
";
echo "AvgLuftfeuchte: ${forecast_4_avghumidity}
";
echo "TotalNiederschlag: ${forecast_4_totalprecip_mm}mm
";
*/


//------------------------------------------------------------------------------------------//
// Variablen anlegen: Vorhersage 4
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;

SetValue(CreateVariableByName('Forecast_4', "Wochentag",                    3, ""),                 $forecast_4_weekday);
SetValue(CreateVariableByName('Forecast_4', "01 MaxTemperatur",             2, "~Temperature"),     $forecast_4_maxtemp);
SetValue(CreateVariableByName('Forecast_4', "02 MinTemperatur",             2, "~Temperature"),     $forecast_4_mintemp);
SetValue(CreateVariableByName('Forecast_4', "03 AvgTemperatur",             2, "~Temperature"),     $forecast_4_avgtemp);
SetValue(CreateVariableByName('Forecast_4', "04 Wetterkondition",           3, ""),                 $forecast_4_condition_text);
SetValue(CreateVariableByName('Forecast_4', "05 Wetterkondition Icon",      1, ""),                 $forecast_4_icon);
SetValue(CreateVariableByName('Forecast_4', "06 Wetterkondition Code",      1, ""),                 $forecast_4_condition_code);
SetValue(CreateVariableByName('Forecast_4', "07 MaxWindgeschwindigkeit",    2, "~WindSpeed.kmh"),   $forecast_4_max_wind_kph);
SetValue(CreateVariableByName('Forecast_4', "08 AvgLuftfeuchte",            2, "~Humidity.F"),      $forecast_4_avghumidity);
SetValue(CreateVariableByName('Forecast_4', "09 TotalNiederschlag",         2, "~Rainfall"),        $forecast_4_totalprecip_mm);
SetValue(CreateVariableByName('Forecast_4', "10 MaxMinTemperatur",          3, ""),                 $forecast_4_maxmintemp);





//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//







//------------------------------------------------------------------------------------------//
// Icon Substring (der bereitgestellte String ist zu lang und wird auf die Bildnummer reduziert)
function icon_substr($string) {
    $find   = '.png';
    $pos = strpos($string, $find);

    return substr($string, ($pos-3), 3);
}






//------------------------------------------------------------------------------------------//
// Wochentag
function day_of_week($timestamp) {

    $weekday = date('N', $timestamp);

    switch ($weekday) {
    case 1:
        $dayOfWeek = "Montag";
        break;
    case 2:
        $dayOfWeek = "Dienstag";
        break;
    case 3:
        $dayOfWeek = "Mittwoch";
        break;
    case 4:
        $dayOfWeek = "Donerstag";
        break;
    case 5:
        $dayOfWeek = "Freitag";
        break;
    case 6:
        $dayOfWeek = "Samstag";
        break;
    case 7:
        $dayOfWeek = "Sonntag";
        break;                                
    }

    return $dayOfWeek;
}






//------------------------------------------------------------------------------------------//
// Windrichtung
function wind_directions($deg) {
	$windDirections = array(
		'Nord'          => array(348.75, 360),
		'Nord2'         => array(0, 11.25),
		'Nord-Nordost'  => array(11.25, 33.75),
		'Nordost'       => array(33.75, 56.25),
		'Ost-Nordost'   => array(56.25, 78.75),
		'Ost'           => array(78.75, 101.25),
		'Ost-Südost'    => array(101.25, 123.75),
		'Südost'        => array(123.75, 146.25),
		'Süd-Südost'    => array(146.25, 168.75),
		'Süd'           => array(168.75, 191.25),
		'Süd-SüdWest'   => array(191.25, 213.75),
		'Südwest'       => array(213.75, 236.25),
		'West-Südwest'  => array(236.25, 258.75),
		'West'          => array(258.75, 281.25),
		'West-Nordwest' => array(281.25, 303.75),
		'Nordwest'      => array(303.75, 326.25),
		'Nord-Nordwest' => array(326.25, 348.75)
	);
	foreach ($windDirections as $dir => $angles) {
			if ($deg >= $angles[0] && $deg < $angles[1]) {
				$direction = str_replace("2", "", $dir);
			}
		}
		return $direction;
}





//------------------------------------------------------------------------------------------//
// Windklassifizierung

function wind_classes($windSpeed){
    $windClasses = array(
        'Windstille'                    => array(0,1.9),
        'leiser Zug'                    => array(2,9.9),
        'leichte Brise'                 => array(10,19.9),
        'schwache Brise'                => array(20,28.9),	
        'mäßige Brise'                  => array(29,37.9),
        'frische Brise'                 => array(38,46.9),
        'starker Wind'                  => array(47,56.9),
        'starker bis stürmischer Wind'  => array(57,65.9),
        'stürmischer Wind'              => array(66,74.9),
        'Sturm'                         => array(75,83.9),
        'Sturm bis schwerer Sturm'      => array(84,93.9),
        'schwerer Sturm'                => array(94,102.9),
        'orkanartiger Sturm'            => array(103,111.9),
        'Orkan'                         => array(112,194.9),

    );
	foreach ($windClasses as $class => $speed) {
			if ($windSpeed >= $speed[0] && $windSpeed < $speed[1]) {
				$wind_class = $class;
			}
		}
		return $wind_class;   
}
//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//





//------------------------------------------------------------------------------------------//
function CreateVariableByName($id, $name, $type, $profile = "") //$category
{
    # type: 0=boolean, 1 = integer, 2 = float, 3 = string;
    global $IPS_SELF;

    // Anlegen von Kategorien "Aktuell, Heute, Morgen, Uebermorgen, Ueberuebermorgen"
    $NewCatID = @IPS_GetCategoryIDByName("Aktuell", $_IPS['SELF']);
    if ($NewCatID === false)
        {
            $NewCatID = IPS_CreateCategory();
            IPS_SetName($NewCatID, "Aktuell");
            IPS_SetParent($NewCatID, $_IPS['SELF']);
        }

    $NewCatID = @IPS_GetCategoryIDByName("Heute", $_IPS['SELF']);
    if ($NewCatID === false)
        {
            $NewCatID = IPS_CreateCategory();
            IPS_SetName($NewCatID, "Heute");
            IPS_SetParent($NewCatID, $_IPS['SELF']);
        } 

    $NewCatID = @IPS_GetCategoryIDByName("Forecast_1", $_IPS['SELF']);
    if ($NewCatID === false)
        {
            $NewCatID = IPS_CreateCategory();
            IPS_SetName($NewCatID, "Forecast_1");
            IPS_SetParent($NewCatID, $_IPS['SELF']);
        }        

    $NewCatID = @IPS_GetCategoryIDByName("Forecast_2", $_IPS['SELF']);
    if ($NewCatID === false)
        {
            $NewCatID = IPS_CreateCategory();
            IPS_SetName($NewCatID, "Forecast_2");
            IPS_SetParent($NewCatID, $_IPS['SELF']);
        } 

    $NewCatID = @IPS_GetCategoryIDByName("Forecast_3", $_IPS['SELF']);
    if ($NewCatID === false)
        {
            $NewCatID = IPS_CreateCategory();
            IPS_SetName($NewCatID, "Forecast_3");
            IPS_SetParent($NewCatID, $_IPS['SELF']);
        }   

    $NewCatID = @IPS_GetCategoryIDByName("Forecast_4", $_IPS['SELF']);
    if ($NewCatID === false)
        {
            $NewCatID = IPS_CreateCategory();
            IPS_SetName($NewCatID, "Forecast_4");
            IPS_SetParent($NewCatID, $_IPS['SELF']);
        }    


    if ($id <> $_IPS['SELF']) { $CatID = @IPS_GetCategoryIDByName($id, $_IPS['SELF']); }
    else { $CatID = $id; }

    // Anlegen der Variablen
    $VarID = @IPS_GetVariableIDByName($name, $CatID);
    if($VarID === false)
    {
        $VarID = IPS_CreateVariable($type);
        IPS_SetParent($VarID, $CatID);
        IPS_SetName($VarID, $name);
        IPS_SetInfo($VarID, "this variable was created by script #$IPS_SELF");
        if($profile !== "") { IPS_SetVariableCustomProfile($VarID, $profile); }
    }
    return $VarID;
}
?>

Hallo,

was ist das für eine Variable?

$valCityID = GetValue(17329);  // Laufvariable 

So wie es aussieht gibst du dort Integer Werte ab 0 ein und kannst dann im Script für die Zahlen unterschiedliche Orte hinterlegen.

Grüße,
Kai

das ist absolut richtig! ich habe die Variable global angelegt, daher kommt auch die ID 17329.
Ich habe ja erwähnt, dass ich zwei weitere Scripte nutze, welche mir dieindex oder laufvariable hoch bzw runter zählen und anschließend das wetterscript ausführen.

wenn man nur eine location, also einen ort abfragen möchte reicht es aus die city id case struktur zu löschen und erhält auf folgendem weg bzw wegen ein ergebnis:


// Variante 1: q=$latlon <= latitude und longitude, also Längen und Breitengrad
// Beispiel Berlin "lat": 52.52, "lon": 13.4
// $latlon = "52.52,13.4";
// Ergebnis:
// q=52.52,13.4


// Variante 2: q=city <= name des Ortes eintragen
// Beispiel Berlin
// Ergebnis:
// q=Berlin


$json_string_act_ = file_get_contents("http://api.apixu.com/v1/forecast.json?key=$api&q=$latlon&days=$cnt&lang=de");

Dies ist möglich, das der Anbieter verschiedene Wege anbietet. Ich habe mich aber bewusst für die latlon Methode entschieden, als ich zum Spass „Palma de Mallorca“ eingegeben habe gab es mehrere Ergebnisse, da zunächst nur nach Palma gesucht wurde und davon gibt es mehr als nur eins.

Wenn man diese API benutzt und angemeldet ist gibt es unter „Interactive“ die möglichkeit „Search/Autocomplete“. Dort trägt man unter q den Namen des Ortes ein und bekommt in der JSON Response die lat/lon Werte und kann durch Bundesland/Land prüfen, ob man richtig ist.

Gruß Sven

Hallo,

wie hast Du die Anzeige in IPSView eingebunden???

  • In einem Script als HTML zusammengebaut oder die einzelnen Variablen in der View positioniert???
  • Wie zeigst Du das Icon in IPSView an???
  • Hat schon jemand ein anderes IconSet als das downloadbare von der APIXU-Homepage verwendet???
  • Was beschreibt in der Kategorie „Aktuell“ die Variable „12 Bewölkung“ und welches Variablenprofil sollte die Variable haben (bei mir ist kein Profil hinterlegt)???

Gruß Proxima

Hi Proxima!

ich versuche mal deine Fragen zu beantworten :slight_smile:

Ich habe die einzelnen Variablen so positioniert. Das Einbinden von html in einem Script würde auch gehen, fand ich aber, da ich in IPSView grafisch programmiere zu umständlich. Ich habe allerdings die gesamte Anzeige in eine Inlineseite vom Typ „Infoseite“ gepackt.

Ich vermute du meinst das Icon neben der Temperatur. Dies ist in der Tat ein wenig Arbeit. ich habe alle Icons in eine Assoziation gepackt. Das Script dazu ist ja oben mit drin.

Ich selbst nicht, aber da man ja im grunde für jedes Icon einen „Alternativtext“ hat, kann man ja eigene Iconsets oder downloadbare anstelle derer nutzen. Ist ja lediglich für die Icons in der Assoziation zu ersetzen.

Die Variable beschreibt in Prozent, wie bewölkt es ist. Als Variablenprofil habe ich mir eins erstellt namens „Clouds“.
Mit dem Icon Cloud und dem Suffix % Minimalwert 0 und Maximalwert 100 mit Schrittweite 0,05.

Ich hoffe, ich konnte dir ein wenig helfen.

Hallo,

benutzt noch jemand dieses Script ???

Ich bekomme seit ein paar Tagen die folgenden Fehlermeldungen:

Notice:  Undefined variable: direction in C:\IP-Symcon\scripts\46793.ips.php on line 476

Notice:  Undefined offset: 4 in C:\IP-Symcon\scripts\46793.ips.php on line 347

Notice:  Trying to get property 'date_epoch' of non-object in C:\IP-Symcon\scripts\46793.ips.php on line 347

Notice:  Undefined offset: 4 in C:\IP-Symcon\scripts\46793.ips.php on line 348

Notice:  Trying to get property 'day' of non-object in C:\IP-Symcon\scripts\46793.ips.php on line 348

Notice:  Trying to get property 'maxtemp_c' of non-object in C:\IP-Symcon\scripts\46793.ips.php on line 348

Notice:  Undefined offset: 4 in C:\IP-Symcon\scripts\46793.ips.php on line 349

Notice:  Trying to get property 'day' of non-object in C:\IP-Symcon\scripts\46793.ips.php on line 349

Notice:  Trying to get property 'mintemp_c' of non-object in C:\IP-Symcon\scripts\46793.ips.php on line 349

Notice:  Undefined offset: 4 in C:\IP-Symcon\scripts\46793.ips.php on line 350
Abort Processing during exceed of maximal ErrorCount: Trying to get property 'day' of non-object
   Error in Script C:\IP-Symcon\scripts\46793.ips.php on Line 350

Mein Script:

<?

//***************************** Anfang Initialisierung ****************************

//****************************** Ende Initialisierung *****************************


//****************************** Anfang Konfiguration *****************************

$api                        =    "XXXXXXXXXXXXXXXXXXXXX";            //API wird angezeigt nach Anmeldung bei https://www.apixu.com
$latlon                        =    "48.87,10.62";                                //Fessenheim
$cnt                        =    5;                                            //Anzahl Tage Vorhersage

//******************************* Ende Konfiguration ******************************


//******************************* Anfang Bearbeitung ******************************

// API JSON Response
$json_string_act_            =    file_get_contents("http://api.apixu.com/v1/forecast.json?key=$api&q=$latlon&days=$cnt&lang=de");

//var_dump($json_string_act_);
$parsed_json                =    json_decode($json_string_act_);

//var_dump($parsed_json);
$location                    =    $parsed_json->{'location'}->{'name'};  

// Anpassung location => Palma wird zu Palma de Mallorca
$find                        =    'Palma';
$pos                        =    strpos($location, $find);
if ($pos !== false) { $location = str_replace("Palma", "Palma de Mallorca", $location); }

// Variablen anlegen: Allgemein
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;
SetValue(CreateVariableByName($_IPS['SELF'], "Location"    ,                    3, ""                    ),    $location);


//------------------------------------------------------------------------------------------//

// Aktuelles Wetter
$current_temp                =    $parsed_json->{'current'}->{'temp_c'};
$current_feelslike_c        =    $parsed_json->{'current'}->{'feelslike_c'};
$current_condition_text        =    $parsed_json->{'current'}->{'condition'}->{'text'};
$current_condition_icon        =    $parsed_json->{'current'}->{'condition'}->{'icon'};
$current_condition_code        =    $parsed_json->{'current'}->{'condition'}->{'code'};
$current_is_day                =    $parsed_json->{'current'}->{'is_day'};
$current_wind_kph            =    $parsed_json->{'current'}->{'wind_kph'};
$current_wind_degree        =    $parsed_json->{'current'}->{'wind_degree'};
$current_wind_dir            =    $parsed_json->{'current'}->{'wind_dir'};
$current_pressure_mb        =    $parsed_json->{'current'}->{'pressure_mb'};
$current_humidity            =    $parsed_json->{'current'}->{'humidity'};
$current_cloud                =    $parsed_json->{'current'}->{'cloud'};
$current_precip_mm            =    $parsed_json->{'current'}->{'precip_mm'};
$current_uv                    =    $parsed_json->{'current'}->{'uv'};
$current_lastupdate            =    $parsed_json->{'current'}->{'last_updated'};

// Anpassung condition text => Regenfall wird zu Regen
$find                        =    'Regenfall';
$pos                        =    strpos($current_condition_text, $find);
if ($pos !== false) { $current_condition_text = str_replace("Regenfall", "Regen", $current_condition_text); }

// Iconsubstring 
if ($current_is_day == 1) { $current_icon = icon_substr($current_condition_icon); }
else { $current_icon = icon_substr($current_condition_icon) + 9000; }
// Für die Unterscheidung der IPS View Assoziation Bilder bei Tag original Nummer
// Für die Unterscheidung der IPS View Assoziation Bilder bei Nacht mit führender 9

// Anpassung/Auswertung der Windgeschwindigkeit
$current_wind_class            =    wind_classes($current_wind_kph);

// Anpassung/Auswertung der Windrichtung
$current_wind_direction        =    wind_directions($current_wind_degree) . " (" .$current_wind_degree."°)";

// Anpassung Windgeschwindigkeit und Richtung
$current_wind                =    $current_wind_kph ." km/h, ". $current_wind_dir;

// Test-Ausgabe
/*
echo "Temperatur: ${current_temp}°
";
echo "Gefühlt wie: ${current_feelslike_c}°
";
echo "Wetterkondition: ${current_condition_text}
";
echo "Wetterkondition Icon: ${current_condition_icon}
";
echo "Wetterkondition Code: ${current_condition_code}
";
echo "Ist Tag: ${current_is_day}
";
echo "Windgeschwindigkeit: ${current_wind_kph} km/h " .$current_wind_class. "
";
echo "Windrichtung lang: " .$current_wind_direction. "
";
echo "Windrichtung kurz: ${current_wind_dir}
";
echo "Wind: ${current_wind}
";
echo "Luftdruck: ${current_pressure_mb}hPa
";
echo "Luftfeuchte: ${current_humidity}
";
echo "Bewölkung: ${current_cloud}%
";
echo "Niederschlag: ${current_precip_mm}mm
";
*/

// Variablen anlegen: Aktuelles Wetter
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;
SetValue(CreateVariableByName('Aktuell', "01 Temperatur"                    , 2, "~Temperature"        ),    $current_temp);
SetValue(CreateVariableByName('Aktuell', "02 Gefühlt wie"                    , 2, "~Temperature"        ),    $current_feelslike_c);
SetValue(CreateVariableByName('Aktuell', "03 Wetterkondition"                , 3, ""                    ),    $current_condition_text);
SetValue(CreateVariableByName('Aktuell', "04 Wetterkondition Icon"            , 1, ""                    ),    $current_icon);
SetValue(CreateVariableByName('Aktuell', "05 Wetterkondition Code"            , 1, ""                    ),    $current_condition_code);
SetValue(CreateVariableByName('Aktuell', "06 Ist Tag"                        , 0, ""                    ),    $current_is_day);
SetValue(CreateVariableByName('Aktuell', "07 Windgeschwindigkeit"            , 2, "~WindSpeed.kmh"    ),    $current_wind_kph);
SetValue(CreateVariableByName('Aktuell', "08 Windrichtung"                    , 3, ""                    ),    $current_wind_direction);
SetValue(CreateVariableByName('Aktuell', "09 Wind"                            , 3, ""                    ),    $current_wind);
SetValue(CreateVariableByName('Aktuell', "10 Luftdruck"                        , 2, "~AirPressure.F"    ),    $current_pressure_mb);
SetValue(CreateVariableByName('Aktuell', "11 Luftfeuchte"                    , 2, "~Humidity.F"        ),    $current_humidity);
SetValue(CreateVariableByName('Aktuell', "12 Bewölkung"                        , 2, "Wolken"            ),    $current_cloud);
SetValue(CreateVariableByName('Aktuell', "13 Niederschlag"                    , 2, "~Rainfall"        ),    $current_precip_mm);
SetValue(CreateVariableByName('Aktuell', "14 UV Index"                        , 1, "UVIndex"            ),    $current_uv);
SetValue(CreateVariableByName('Aktuell', "15 Letzte Aktualisierung"            , 3, ""                    ),    $current_lastupdate);


//------------------------------------------------------------------------------------------//

// Vorhersage - Heute
$forecast_heute_weekday                =    day_of_week($parsed_json->{'forecast'}->{'forecastday'}[0]->{'date_epoch'});
$forecast_heute_maxtemp                =                $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'maxtemp_c'};
$forecast_heute_mintemp                =                $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'mintemp_c'};
$forecast_heute_avgtemp                =                $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'avgtemp_c'};
$forecast_heute_condition_text        =                $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'condition'}->{'text'};
$forecast_heute_condition_icon        =                $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'condition'}->{'icon'};
$forecast_heute_condition_code        =                $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'condition'}->{'code'};
$forecast_heute_max_wind_kph        =                $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'maxwind_kph'};
$forecast_heute_avghumidity            =                $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'avghumidity'};
$forecast_heute_totalprecip_mm        =                $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'totalprecip_mm'};
$forecast_heute_avgvis_km           =                $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'avgvis_km'};
$forecast_heute_uv                    =                $parsed_json->{'forecast'}->{'forecastday'}[0]->{'day'}->{'uv'};

// Anpassung condition text => Regenfall wird zu Regen
$find                        =    'Regenfall';
$pos                        =    strpos($forecast_heute_condition_text, $find);
if ($pos !== false) { $forecast_heute_condition_text = str_replace("Regenfall", "Regen", $forecast_heute_condition_text); }

// Iconsubstring
$forecast_heute_icon        =    icon_substr($forecast_heute_condition_icon);

// MaxMinTemperatur
$forecast_heute_maxmintemp    =    round($forecast_heute_maxtemp) ."° / ". round($forecast_heute_mintemp) ."°";

// Test-Ausgabe Heute
/*
echo "Wochentag: ${forecast_heute_weekday}
";
echo "MaxTemperatur: ${forecast_heute_maxtemp}°
";
echo "MinTemperatur: ${forecast_heute_mintemp}°
";
echo "AvgTemperatur: ${forecast_heute_avgtemp}°
";
echo "Wetterkondition: ${forecast_heute_condition_text}
";
echo "Wetterkondition Icon: ${forecast_heute_condition_icon}
";
echo "Wetterkondition Code: ${forecast_heute_condition_code}
";
echo "MaxWindgeschwindigkeit: ${forecast_heute_max_wind_kph} km/h
";
echo "AvgLuftfeuchte: ${forecast_heute_avghumidity}
";
echo "TotalNiederschlag: ${forecast_heute_totalprecip_mm}mm
";
*/

// Variablen anlegen: Heute
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;
SetValue(CreateVariableByName('Heute', "Wochentag"                            , 3, ""                    ),    $forecast_heute_weekday);
SetValue(CreateVariableByName('Heute', "01 MaxTemperatur"                    , 2, "~Temperature"        ),    $forecast_heute_maxtemp);
SetValue(CreateVariableByName('Heute', "02 MinTemperatur"                    , 2, "~Temperature"        ),    $forecast_heute_mintemp);
SetValue(CreateVariableByName('Heute', "03 AvgTemperatur"                    , 2, "~Temperature"        ),    $forecast_heute_avgtemp);
SetValue(CreateVariableByName('Heute', "04 Wetterkondition"                    , 3, ""                    ),    $forecast_heute_condition_text);
SetValue(CreateVariableByName('Heute', "05 Wetterkondition Icon"            , 1, ""                    ),    $forecast_heute_icon);
SetValue(CreateVariableByName('Heute', "06 Wetterkondition Code"            , 1, ""                    ),    $forecast_heute_condition_code);
SetValue(CreateVariableByName('Heute', "07 MaxWindgeschwindigkeit"            , 2, "~WindSpeed.kmh"    ),    $forecast_heute_max_wind_kph);
SetValue(CreateVariableByName('Heute', "08 AvgLuftfeuchte"                    , 2, "~Humidity.F"        ),    $forecast_heute_avghumidity);
SetValue(CreateVariableByName('Heute', "09 TotalNiederschlag"                , 2, "~Rainfall"        ),    $forecast_heute_totalprecip_mm);
SetValue(CreateVariableByName('Heute', "10 MaxMinTemperatur"                , 3, ""                    ),    $forecast_heute_maxmintemp);
SetValue(CreateVariableByName('Heute', "11 Sichtweite"                        , 2, "km"                ),    $forecast_heute_avgvis_km);
SetValue(CreateVariableByName('Heute', "12 UV Index"                        , 1, "UVIndex"            ),    $forecast_heute_uv);


//------------------------------------------------------------------------------------------//

// Vorhersage - Tag 1
$forecast_1_weekday                    =    day_of_week($parsed_json->{'forecast'}->{'forecastday'}[1]->{'date_epoch'});
$forecast_1_maxtemp                    =                $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'maxtemp_c'};
$forecast_1_mintemp                    =                $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'mintemp_c'};
$forecast_1_avgtemp                    =                $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'avgtemp_c'};
$forecast_1_condition_text            =                $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'condition'}->{'text'};
$forecast_1_condition_icon            =                $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'condition'}->{'icon'};
$forecast_1_condition_code            =                $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'condition'}->{'code'};
$forecast_1_max_wind_kph            =                $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'maxwind_kph'};
$forecast_1_avghumidity                =                $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'avghumidity'};
$forecast_1_totalprecip_mm            =                $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'totalprecip_mm'};
$forecast_1_avgvis_km               =                $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'avgvis_km'};
$forecast_1_uv                        =                $parsed_json->{'forecast'}->{'forecastday'}[1]->{'day'}->{'uv'};

// Anpassung condition text => Regenfall wird zu Regen
$find                        =    'Regenfall';
$pos                        =    strpos($forecast_1_condition_text, $find);
if ($pos !== false) { $forecast_1_condition_text = str_replace("Regenfall", "Regen", $forecast_1_condition_text); }

// Iconsubstring 
$forecast_1_icon            =    icon_substr($forecast_1_condition_icon);

// MaxMinTemperatur
$forecast_1_maxmintemp        =    round($forecast_1_maxtemp) ."° / ". round($forecast_1_mintemp) ."°";

// Test-Ausgabe Vorhersage 1
/*
echo "Wochentag: ${forecast_1_weekday}
";
echo "MaxTemperatur: ${forecast_1_maxtemp}°
";
echo "MinTemperatur: ${forecast_1_mintemp}°
";
echo "AvgTemperatur: ${forecast_1_avgtemp}°
";
echo "Wetterkondition: ${forecast_1_condition_text}
";
echo "Wetterkondition Icon: ${forecast_1_condition_icon}
";
echo "Wetterkondition Code: ${forecast_1_condition_code}
";
echo "MaxWindgeschwindigkeit: ${forecast_1_max_wind_kph} km/h
";
echo "AvgLuftfeuchte: ${forecast_1_avghumidity}
";
echo "TotalNiederschlag: ${forecast_1_totalprecip_mm}mm
";
*/

// Variablen anlegen: Vorhersage 1
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;
SetValue(CreateVariableByName('Forecast_1', "Wochentag"                        , 3, ""                    ),    $forecast_1_weekday);
SetValue(CreateVariableByName('Forecast_1', "01 MaxTemperatur"                , 2, "~Temperature"        ),    $forecast_1_maxtemp);
SetValue(CreateVariableByName('Forecast_1', "02 MinTemperatur"                , 2, "~Temperature"        ),    $forecast_1_mintemp);
SetValue(CreateVariableByName('Forecast_1', "03 AvgTemperatur"                , 2, "~Temperature"        ),    $forecast_1_avgtemp);
SetValue(CreateVariableByName('Forecast_1', "04 Wetterkondition"            , 3, ""                    ),    $forecast_1_condition_text);
SetValue(CreateVariableByName('Forecast_1', "05 Wetterkondition Icon"        , 1, ""                    ),    $forecast_1_icon);
SetValue(CreateVariableByName('Forecast_1', "06 Wetterkondition Code"        , 1, ""                    ),    $forecast_1_condition_code);
SetValue(CreateVariableByName('Forecast_1', "07 MaxWindgeschwindigkeit"        , 2, "~WindSpeed.kmh"    ),    $forecast_1_max_wind_kph);
SetValue(CreateVariableByName('Forecast_1', "08 AvgLuftfeuchte"                , 2, "~Humidity.F"        ),    $forecast_1_avghumidity);
SetValue(CreateVariableByName('Forecast_1', "09 TotalNiederschlag"            , 2, "~Rainfall"        ),    $forecast_1_totalprecip_mm);
SetValue(CreateVariableByName('Forecast_1', "10 MaxMinTemperatur"            , 3, ""                    ),    $forecast_1_maxmintemp);
SetValue(CreateVariableByName('Forecast_1', "11 Sichtweite"                    , 2, "km"                ),    $forecast_1_avgvis_km);
SetValue(CreateVariableByName('Forecast_1', "12 UV Index"                    , 1, "UVIndex"            ),    $forecast_1_uv);


//------------------------------------------------------------------------------------------//

// Vorhersage - Tag 2
$forecast_2_weekday                    =    day_of_week($parsed_json->{'forecast'}->{'forecastday'}[2]->{'date_epoch'});
$forecast_2_maxtemp                    =                $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'maxtemp_c'};
$forecast_2_mintemp                    =                $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'mintemp_c'};
$forecast_2_avgtemp                    =                $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'avgtemp_c'};
$forecast_2_condition_text            =                $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'condition'}->{'text'};
$forecast_2_condition_icon            =                $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'condition'}->{'icon'};
$forecast_2_condition_code            =                $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'condition'}->{'code'};
$forecast_2_max_wind_kph            =                $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'maxwind_kph'};
$forecast_2_avghumidity                =                $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'avghumidity'};
$forecast_2_totalprecip_mm            =                $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'totalprecip_mm'};
$forecast_2_avgvis_km               =                $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'avgvis_km'};
$forecast_2_uv                        =                $parsed_json->{'forecast'}->{'forecastday'}[2]->{'day'}->{'uv'};

// Anpassung condition text => Regenfall wird zu Regen
$find                        =    'Regenfall';
$pos                        =    strpos($forecast_2_condition_text, $find);
if ($pos !== false) { $forecast_2_condition_text = str_replace("Regenfall", "Regen", $forecast_2_condition_text); }

// Iconsubstring 
$forecast_2_icon            =    icon_substr($forecast_2_condition_icon);

// MaxMinTemperatur
$forecast_2_maxmintemp        =    round($forecast_2_maxtemp) ."° / ". round($forecast_2_mintemp) ."°";

// Test-Ausgabe Vorhersage 2
/*
echo "MaxTemperatur: ${forecast_2_maxtemp}°
";
echo "MinTemperatur: ${forecast_2_mintemp}°
";
echo "AvgTemperatur: ${forecast_2_avgtemp}°
";
echo "Wetterkondition: ${forecast_2_condition_text}
";
echo "Wetterkondition Icon: ${forecast_2_condition_icon}
";
echo "Wetterkondition Code: ${forecast_2_condition_code}
";
echo "MaxWindgeschwindigkeit: ${forecast_2_max_wind_kph} km/h
";
echo "AvgLuftfeuchte: ${forecast_2_avghumidity}
";
echo "TotalNiederschlag: ${forecast_2_totalprecip_mm}mm
";
*/

// Variablen anlegen: Vorhersage 2
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;
SetValue(CreateVariableByName('Forecast_2', "Wochentag"                        , 3, ""                    ),    $forecast_2_weekday);
SetValue(CreateVariableByName('Forecast_2', "01 MaxTemperatur"                , 2, "~Temperature"        ),    $forecast_2_maxtemp);
SetValue(CreateVariableByName('Forecast_2', "02 MinTemperatur"                , 2, "~Temperature"        ),    $forecast_2_mintemp);
SetValue(CreateVariableByName('Forecast_2', "03 AvgTemperatur"                , 2, "~Temperature"        ),    $forecast_2_avgtemp);
SetValue(CreateVariableByName('Forecast_2', "04 Wetterkondition"            , 3, ""                    ),    $forecast_2_condition_text);
SetValue(CreateVariableByName('Forecast_2', "05 Wetterkondition Icon"        , 1, ""                    ),    $forecast_2_icon);
SetValue(CreateVariableByName('Forecast_2', "06 Wetterkondition Code"        , 1, ""                    ),    $forecast_2_condition_code);
SetValue(CreateVariableByName('Forecast_2', "07 MaxWindgeschwindigkeit"        , 2, "~WindSpeed.kmh"    ),    $forecast_2_max_wind_kph);
SetValue(CreateVariableByName('Forecast_2', "08 AvgLuftfeuchte"                , 2, "~Humidity.F"        ),    $forecast_2_avghumidity);
SetValue(CreateVariableByName('Forecast_2', "09 TotalNiederschlag"            , 2, "~Rainfall"        ),    $forecast_2_totalprecip_mm);
SetValue(CreateVariableByName('Forecast_2', "10 MaxMinTemperatur"            , 3, ""                    ),    $forecast_2_maxmintemp);
SetValue(CreateVariableByName('Forecast_2', "11 Sichtweite"                    , 2, "km"                ),    $forecast_2_avgvis_km);
SetValue(CreateVariableByName('Forecast_2', "12 UV Index"                    , 1, "UVIndex"            ),    $forecast_2_uv);


//------------------------------------------------------------------------------------------//

// Vorhersage - Tag 3
$forecast_3_weekday                    =    day_of_week($parsed_json->{'forecast'}->{'forecastday'}[3]->{'date_epoch'});
$forecast_3_maxtemp                    =                $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'maxtemp_c'};
$forecast_3_mintemp                    =                $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'mintemp_c'};
$forecast_3_avgtemp                    =                $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'avgtemp_c'};
$forecast_3_condition_text            =                $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'condition'}->{'text'};
$forecast_3_condition_icon            =                $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'condition'}->{'icon'};
$forecast_3_condition_code            =                $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'condition'}->{'code'};
$forecast_3_max_wind_kph            =                $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'maxwind_kph'};
$forecast_3_avghumidity                =                $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'avghumidity'};
$forecast_3_totalprecip_mm            =                $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'totalprecip_mm'};
$forecast_3_avgvis_km               =                $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'avgvis_km'};
$forecast_3_uv                        =                $parsed_json->{'forecast'}->{'forecastday'}[3]->{'day'}->{'uv'};

// Anpassung condition text => Regenfall wird zu Regen
$find                        =    'Regenfall';
$pos                        =    strpos($forecast_3_condition_text, $find);
if ($pos !== false) { $forecast_3_condition_text = str_replace("Regenfall", "Regen", $forecast_3_condition_text); }

// Iconsubstring 
$forecast_3_icon            =    icon_substr($forecast_3_condition_icon);

// MaxMinTemperatur
$forecast_3_maxmintemp        =    round($forecast_3_maxtemp) ."° / ". round($forecast_3_mintemp) ."°";

// Test-Ausgabe Vorhersage 3
/*
echo "MaxTemperatur: ${forecast_3_maxtemp}°
";
echo "MinTemperatur: ${forecast_3_mintemp}°
";
echo "AvgTemperatur: ${forecast_3_avgtemp}°
";
echo "Wetterkondition: ${forecast_3_condition_text}
";
echo "Wetterkondition Icon: ${forecast_3_condition_icon}
";
echo "Wetterkondition Code: ${forecast_3_condition_code}
";
echo "MaxWindgeschwindigkeit: ${forecast_3_max_wind_kph} km/h
";
echo "AvgLuftfeuchte: ${forecast_3_avghumidity}
";
echo "TotalNiederschlag: ${forecast_3_totalprecip_mm}mm
";
*/

// Variablen anlegen: Vorhersage 3
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;
SetValue(CreateVariableByName('Forecast_3', "Wochentag"                        , 3, ""                    ),    $forecast_3_weekday);
SetValue(CreateVariableByName('Forecast_3', "01 MaxTemperatur"                , 2, "~Temperature"        ),    $forecast_3_maxtemp);
SetValue(CreateVariableByName('Forecast_3', "02 MinTemperatur"                , 2, "~Temperature"        ),    $forecast_3_mintemp);
SetValue(CreateVariableByName('Forecast_3', "03 AvgTemperatur"                , 2, "~Temperature"        ),    $forecast_3_avgtemp);
SetValue(CreateVariableByName('Forecast_3', "04 Wetterkondition"            , 3, ""                    ),    $forecast_3_condition_text);
SetValue(CreateVariableByName('Forecast_3', "05 Wetterkondition Icon"        , 1, ""                    ),    $forecast_3_icon);
SetValue(CreateVariableByName('Forecast_3', "06 Wetterkondition Code"        , 1, ""                    ),    $forecast_3_condition_code);
SetValue(CreateVariableByName('Forecast_3', "07 MaxWindgeschwindigkeit"        , 2, "~WindSpeed.kmh"    ),    $forecast_3_max_wind_kph);
SetValue(CreateVariableByName('Forecast_3', "08 AvgLuftfeuchte"                , 2, "~Humidity.F"        ),    $forecast_3_avghumidity);
SetValue(CreateVariableByName('Forecast_3', "09 TotalNiederschlag"            , 2, "~Rainfall"        ),    $forecast_3_totalprecip_mm);
SetValue(CreateVariableByName('Forecast_3', "10 MaxMinTemperatur"            , 3, ""                    ),    $forecast_3_maxmintemp);
SetValue(CreateVariableByName('Forecast_3', "11 Sichtweite"                    , 2, "km"                ),    $forecast_3_avgvis_km);
SetValue(CreateVariableByName('Forecast_3', "12 UV Index"                    , 1, "UVIndex"            ),    $forecast_3_uv);


//------------------------------------------------------------------------------------------//

// Vorhersage - Tag 4
$forecast_4_weekday                    =    day_of_week($parsed_json->{'forecast'}->{'forecastday'}[4]->{'date_epoch'});
$forecast_4_maxtemp                    =                $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'maxtemp_c'};
$forecast_4_mintemp                    =                $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'mintemp_c'};
$forecast_4_avgtemp                    =                $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'avgtemp_c'};
$forecast_4_condition_text            =                $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'condition'}->{'text'};
$forecast_4_condition_icon            =                $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'condition'}->{'icon'};
$forecast_4_condition_code            =                $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'condition'}->{'code'};
$forecast_4_max_wind_kph            =                $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'maxwind_kph'};
$forecast_4_avghumidity                =                $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'avghumidity'};
$forecast_4_totalprecip_mm            =                $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'totalprecip_mm'};
$forecast_4_avgvis_km               =                $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'avgvis_km'};
$forecast_4_uv                        =                $parsed_json->{'forecast'}->{'forecastday'}[4]->{'day'}->{'uv'};

// Anpassung condition text => Regenfall wird zu Regen
$find                        =    'Regenfall';
$pos                        =    strpos($forecast_4_condition_text, $find);
if ($pos !== false) { $forecast_4_condition_text = str_replace("Regenfall", "Regen", $forecast_4_condition_text); }

// Iconsubstring 
$forecast_4_icon            =    icon_substr($forecast_4_condition_icon);

// MaxMinTemperatur
$forecast_4_maxmintemp        =    round($forecast_4_maxtemp) ."° / ". round($forecast_4_mintemp) ."°";

// Test-Ausgabe Vorhersage 4
/*
echo "MaxTemperatur: ${forecast_4_maxtemp}°
";
echo "MinTemperatur: ${forecast_4_mintemp}°
";
echo "AvgTemperatur: ${forecast_4_avgtemp}°
";
echo "Wetterkondition: ${forecast_4_condition_text}
";
echo "Wetterkondition Icon: ${forecast_4_condition_icon}
";
echo "Wetterkondition Code: ${forecast_4_condition_code}
";
echo "MaxWindgeschwindigkeit: ${forecast_4_max_wind_kph} km/h
";
echo "AvgLuftfeuchte: ${forecast_4_avghumidity}
";
echo "TotalNiederschlag: ${forecast_4_totalprecip_mm}mm
";
*/

// Variablen anlegen: Vorhersage 4
// type: 0=boolean, 1 = integer, 2 = float, 3 = string;
SetValue(CreateVariableByName('Forecast_4', "Wochentag"                        , 3, ""                    ),    $forecast_4_weekday);
SetValue(CreateVariableByName('Forecast_4', "01 MaxTemperatur"                , 2, "~Temperature"        ),    $forecast_4_maxtemp);
SetValue(CreateVariableByName('Forecast_4', "02 MinTemperatur"                , 2, "~Temperature"        ),    $forecast_4_mintemp);
SetValue(CreateVariableByName('Forecast_4', "03 AvgTemperatur"                , 2, "~Temperature"        ),    $forecast_4_avgtemp);
SetValue(CreateVariableByName('Forecast_4', "04 Wetterkondition"            , 3, ""                    ),    $forecast_4_condition_text);
SetValue(CreateVariableByName('Forecast_4', "05 Wetterkondition Icon"        , 1, ""                    ),    $forecast_4_icon);
SetValue(CreateVariableByName('Forecast_4', "06 Wetterkondition Code"        , 1, ""                    ),    $forecast_4_condition_code);
SetValue(CreateVariableByName('Forecast_4', "07 MaxWindgeschwindigkeit"        , 2, "~WindSpeed.kmh"    ),    $forecast_4_max_wind_kph);
SetValue(CreateVariableByName('Forecast_4', "08 AvgLuftfeuchte"                , 2, "~Humidity.F"        ),    $forecast_4_avghumidity);
SetValue(CreateVariableByName('Forecast_4', "09 TotalNiederschlag"            , 2, "~Rainfall"        ),    $forecast_4_totalprecip_mm);
SetValue(CreateVariableByName('Forecast_4', "10 MaxMinTemperatur"            , 3, ""                    ),    $forecast_4_maxmintemp);
SetValue(CreateVariableByName('Forecast_4', "11 Sichtweite"                    , 2, "km"                ),    $forecast_4_avgvis_km);
SetValue(CreateVariableByName('Forecast_4', "12 UV Index"                    , 1, "UVIndex"            ),    $forecast_4_uv);


//------------------------------------------------------------------------------------------//
//------------------------------------------------------------------------------------------//

// Icon Substring (der bereitgestellte String ist zu lang und wird auf die Bildnummer reduziert)
function icon_substr($string)
    {
    $find        =    '.png';
    $pos        =    strpos($string, $find);

    return substr($string, ($pos-3), 3);
    }


// Wochentag
function day_of_week($timestamp)
    {
    $weekday = date('N', $timestamp);

    switch ($weekday)
        {
        case 1:
            $dayOfWeek    =    "Montag";
            break;
        case 2:
            $dayOfWeek    =    "Dienstag";
            break;
        case 3:
            $dayOfWeek    =    "Mittwoch";
            break;
        case 4:
            $dayOfWeek    =    "Donnerstag";
            break;
        case 5:
            $dayOfWeek    =    "Freitag";
            break;
        case 6:
            $dayOfWeek    =    "Samstag";
            break;
        case 7:
            $dayOfWeek    =    "Sonntag";
            break;
        }

    return $dayOfWeek;
    }


// Windrichtung
function wind_directions($deg)
    {
    $windDirections        =    array(
                                    'Nord'                            =>    array(348.75,    360),
                                    'Nord2'                            =>    array(     0,  11.25),
                                    'Nord-Nordost'                    =>    array( 11.25,  33.75),
                                    'Nordost'                        =>    array( 33.75,  56.25),
                                    'Ost-Nordost'                    =>    array( 56.25,  78.75),
                                    'Ost'                            =>    array( 78.75, 101.25),
                                    'Ost-Südost'                    =>    array(101.25, 123.75),
                                    'Südost'                        =>    array(123.75, 146.25),
                                    'Süd-Südost'                    =>    array(146.25, 168.75),
                                    'Süd'                            =>    array(168.75, 191.25),
                                    'Süd-SüdWest'                    =>    array(191.25, 213.75),
                                    'Südwest'                        =>    array(213.75, 236.25),
                                    'West-Südwest'                    =>    array(236.25, 258.75),
                                    'West'                            =>    array(258.75, 281.25),
                                    'West-Nordwest'                    =>    array(281.25, 303.75),
                                    'Nordwest'                        =>    array(303.75, 326.25),
                                    'Nord-Nordwest'                    =>    array(326.25, 348.75)
                                 );

    foreach ($windDirections as $dir => $angles)
        {
        if ($deg >= $angles[0] && $deg < $angles[1]) {$direction = str_replace("2", "", $dir);}
        }

    return $direction;
    }


// Windklassifizierung
function wind_classes($windSpeed)
    {
    $windClasses        =    array(
                                    'Windstille'                    =>    array(  0,  1.9),
                                    'leiser Zug'                    =>    array(  2,  9.9),
                                    'leichte Brise'                    =>    array( 10, 19.9),
                                    'schwache Brise'                =>    array( 20, 28.9),
                                    'mäßige Brise'                    =>    array( 29, 37.9),
                                    'frische Brise'                    =>    array( 38, 46.9),
                                    'starker Wind'                    =>    array( 47, 56.9),
                                    'starker bis stürmischer Wind'    =>    array( 57, 65.9),
                                    'stürmischer Wind'                =>    array( 66, 74.9),
                                    'Sturm'                            =>    array( 75, 83.9),
                                    'Sturm bis schwerer Sturm'        =>    array( 84, 93.9),
                                    'schwerer Sturm'                =>    array( 94,102.9),
                                    'orkanartiger Sturm'            =>    array(103,111.9),
                                    'Orkan'                            =>    array(112,194.9),
                                 );

    foreach ($windClasses as $class => $speed)
        {
        if ($windSpeed >= $speed[0] && $windSpeed < $speed[1]) {$wind_class = $class;}
        }

    return $wind_class;
    }


// Variablen anlegen
function CreateVariableByName($id, $name, $type, $profile = "")
    {
    # type: 0=boolean, 1 = integer, 2 = float, 3 = string;
    global $IPS_SELF;

    // Anlegen von Kategorien "Aktuell, Heute, Morgen, Uebermorgen, Ueberuebermorgen"
    $NewCatID = @IPS_GetCategoryIDByName("Aktuell", $_IPS['SELF']);
    if ($NewCatID === false)
        {
        $NewCatID = IPS_CreateCategory();
        IPS_SetName($NewCatID, "Aktuell");
        IPS_SetParent($NewCatID, $_IPS['SELF']);
        }

    $NewCatID = @IPS_GetCategoryIDByName("Heute", $_IPS['SELF']);
    if ($NewCatID === false)
        {
        $NewCatID = IPS_CreateCategory();
        IPS_SetName($NewCatID, "Heute");
        IPS_SetParent($NewCatID, $_IPS['SELF']);
        }

    $NewCatID = @IPS_GetCategoryIDByName("Forecast_1", $_IPS['SELF']);
    if ($NewCatID === false)
        {
        $NewCatID = IPS_CreateCategory();
        IPS_SetName($NewCatID, "Forecast_1");
        IPS_SetParent($NewCatID, $_IPS['SELF']);
        }

    $NewCatID = @IPS_GetCategoryIDByName("Forecast_2", $_IPS['SELF']);
    if ($NewCatID === false)
        {
        $NewCatID = IPS_CreateCategory();
        IPS_SetName($NewCatID, "Forecast_2");
        IPS_SetParent($NewCatID, $_IPS['SELF']);
        }

    $NewCatID = @IPS_GetCategoryIDByName("Forecast_3", $_IPS['SELF']);
    if ($NewCatID === false)
        {
        $NewCatID = IPS_CreateCategory();
        IPS_SetName($NewCatID, "Forecast_3");
        IPS_SetParent($NewCatID, $_IPS['SELF']);
        }

    $NewCatID = @IPS_GetCategoryIDByName("Forecast_4", $_IPS['SELF']);
    if ($NewCatID === false)
        {
        $NewCatID = IPS_CreateCategory();
        IPS_SetName($NewCatID, "Forecast_4");
        IPS_SetParent($NewCatID, $_IPS['SELF']);
        }

    if ($id <> $_IPS['SELF']) { $CatID = @IPS_GetCategoryIDByName($id, $_IPS['SELF']); }
    else { $CatID = $id; }


    // Anlegen der Variablen
    $VarID = @IPS_GetVariableIDByName($name, $CatID);
    if($VarID === false)
        {
        $VarID = IPS_CreateVariable($type);
        IPS_SetParent($VarID, $CatID);
        IPS_SetName($VarID, $name);
        IPS_SetInfo($VarID, "this variable was created by script #$IPS_SELF");
        if($profile !== "") { IPS_SetVariableCustomProfile($VarID, $profile); }
        }

    return $VarID;
    }

//******************************** Ende Bearbeitung *******************************

?>

Gruß Proxima

hi proxima,

also ich nutze das script nach wie vor.
laut deiner fehlermeldung scheint die vorhersage für den 4.tag keine daten zu liefern. hast du da ggf. bei $cnt in zeile 12 was geändert?

ich habe gelegentlich auch fehler, diese kommen aber vom json, da die seite ab und an irgendwelche werte oder gar ganze datensätze nicht schickt.

aber da ich sowieso nur alle 30 min mein script ausführe komme ich auch nicht auf die maximale anzahl an aufrufen pro tag

Moin in die Runde,

ich habe eine Mail bekommen das APIXU demnächst unter einen anderen Anbieter läuft und der Dienst eingestellt wird.
Beim neuen Anbieter https://weatherstack.com/plan gibt es im FREE Tarif leider keine Vorhersagewerte für die nächsten Tage.

Hat jemand noch einen anderen Wetterdaten Dienst wo man Vorhersage Werte bekommt?

Danke,

Grüße
Thomas

z.B. daswetter

Moin Fonzo,

danke für die Seite.
Ich habe mich da mal ein bisschen umgeschaut. Die bieten auch eine XML/JSON API an. Das ist soweit ja schön doch nur:

Registrierungsvereinbarung

Um die API von Daswetter.com zu verwenden, ist es notwendig, auf Ihrer Website einen Link auf Daswetter.com (Wetter 14 Tage. Wettervorhersage - daswetter.com) zu setzen. Die Links werden wöchentlich überprüft. Sollten die Anforderugen nicht erfüllt werden, behält sich das Unternehmen das Recht vor den Datenverkehr zu unterbrechen.

Wenn Sie Anwendungsentwickler für mobile Applikationen sind und über keine Webseite verfügen, können Sie gerne die URL des Markets (Google Play oder App Store) angeben. Es ist erforderlich, eine Referenz in Ihrer App hinzuzufügen.

Und das ist eher schlecht. Oder wie hast Du das gelöst? Falls du die Daten selber auch nutzt?

Gruß
Thomas

Die könnte man nutzen, das Widget in einer HTML Box ist fürs erste aber zumindest einfacher.

Es steht ja nicht da das es gar nicht geht. Wenn Du da also ein PHP Modul daraus bauen wollen würdest, dann müsstest Du halt die IP-Symcon App im Google Store angeben und darauf achten, dass deutlich vermerkt ist, das die Daten von daswetter stammen, sowie dass im Konfigurationsformular selber als auch im Webfront ein Link zur Seite von daswetter existent ist.

DarkSky API gibt es auch noch HIER