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:
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;
}
?>