+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 13
  1. #1
    Registriert seit
    Apr 2018
    Beiträge
    111

    Standard 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:

    Name:  Preview.png
Hits: 480
Größe:  37.2 KB

    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.

    PHP-Code:
    <?
    //------------------------------------------------------------------------------------------//
    //------------------------------------------------------------------------------------------//
    //------------------------------------------------------------------------------------------//

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


    //------------------------------------------------------------------------------------------//
    // 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}\n";
    echo "MaxTemperatur: ${forecast_heute_maxtemp}°\n";
    echo "MinTemperatur: ${forecast_heute_mintemp}°\n";
    echo "AvgTemperatur: ${forecast_heute_avgtemp}°\n";
    echo "Wetterkondition: ${forecast_heute_condition_text}\n";
    echo "Wetterkondition Icon: ${forecast_heute_condition_icon}\n";
    echo "Wetterkondition Code: ${forecast_heute_condition_code}\n";
    echo "MaxWindgeschwindigkeit: ${forecast_heute_max_wind_kph} km/h\n";
    echo "AvgLuftfeuchte: ${forecast_heute_avghumidity}\n";
    echo "TotalNiederschlag: ${forecast_heute_totalprecip_mm}mm\n";
    */


    //------------------------------------------------------------------------------------------//
    // 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}\n";
    echo "MaxTemperatur: ${forecast_1_maxtemp}°\n";
    echo "MinTemperatur: ${forecast_1_mintemp}°\n";
    echo "AvgTemperatur: ${forecast_1_avgtemp}°\n";
    echo "Wetterkondition: ${forecast_1_condition_text}\n";
    echo "Wetterkondition Icon: ${forecast_1_condition_icon}\n";
    echo "Wetterkondition Code: ${forecast_1_condition_code}\n";
    echo "MaxWindgeschwindigkeit: ${forecast_1_max_wind_kph} km/h\n";
    echo "AvgLuftfeuchte: ${forecast_1_avghumidity}\n";
    echo "TotalNiederschlag: ${forecast_1_totalprecip_mm}mm\n";
    */


    //------------------------------------------------------------------------------------------//
    // 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}°\n";
    echo "MinTemperatur: ${forecast_2_mintemp}°\n";
    echo "AvgTemperatur: ${forecast_2_avgtemp}°\n";
    echo "Wetterkondition: ${forecast_2_condition_text}\n";
    echo "Wetterkondition Icon: ${forecast_2_condition_icon}\n";
    echo "Wetterkondition Code: ${forecast_2_condition_code}\n";
    echo "MaxWindgeschwindigkeit: ${forecast_2_max_wind_kph} km/h\n";
    echo "AvgLuftfeuchte: ${forecast_2_avghumidity}\n";
    echo "TotalNiederschlag: ${forecast_2_totalprecip_mm}mm\n";
    */


    //------------------------------------------------------------------------------------------//
    // 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}°\n";
    echo "MinTemperatur: ${forecast_3_mintemp}°\n";
    echo "AvgTemperatur: ${forecast_3_avgtemp}°\n";
    echo "Wetterkondition: ${forecast_3_condition_text}\n";
    echo "Wetterkondition Icon: ${forecast_3_condition_icon}\n";
    echo "Wetterkondition Code: ${forecast_3_condition_code}\n";
    echo "MaxWindgeschwindigkeit: ${forecast_3_max_wind_kph} km/h\n";
    echo "AvgLuftfeuchte: ${forecast_3_avghumidity}\n";
    echo "TotalNiederschlag: ${forecast_3_totalprecip_mm}mm\n";
    */


    //------------------------------------------------------------------------------------------//
    // 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}°\n";
    echo "MinTemperatur: ${forecast_4_mintemp}°\n";
    echo "AvgTemperatur: ${forecast_4_avgtemp}°\n";
    echo "Wetterkondition: ${forecast_4_condition_text}\n";
    echo "Wetterkondition Icon: ${forecast_4_condition_icon}\n";
    echo "Wetterkondition Code: ${forecast_4_condition_code}\n";
    echo "MaxWindgeschwindigkeit: ${forecast_4_max_wind_kph} km/h\n";
    echo "AvgLuftfeuchte: ${forecast_4_avghumidity}\n";
    echo "TotalNiederschlag: ${forecast_4_totalprecip_mm}mm\n";
    */


    //------------------------------------------------------------------------------------------//
    // 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.75360),
            
    'Nord2'         => array(011.25),
            
    'Nord-Nordost'  => array(11.2533.75),
            
    'Nordost'       => array(33.7556.25),
            
    'Ost-Nordost'   => array(56.2578.75),
            
    'Ost'           => array(78.75101.25),
            
    'Ost-Südost'    => array(101.25123.75),
            
    'Südost'        => array(123.75146.25),
            
    'Süd-Südost'    => array(146.25168.75),
            
    'Süd'           => array(168.75191.25),
            
    'Süd-SüdWest'   => array(191.25213.75),
            
    'Südwest'       => array(213.75236.25),
            
    'West-Südwest'  => array(236.25258.75),
            
    'West'          => array(258.75281.25),
            
    'West-Nordwest' => array(281.25303.75),
            
    'Nordwest'      => array(303.75326.25),
            
    'Nord-Nordwest' => array(326.25348.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;
    }
    ?>

  2. #2
    Registriert seit
    Jul 2005
    Ort
    Schwanewede/Niedersachsen
    Beiträge
    1,830

    Hallo,

    was ist das für eine Variable?

    PHP-Code:
    $valCityID GetValue(17329);  // Laufvariable 
    Gruss
    Horst

    IP-Symcon 5.0 IPS-868, FS20, HM, HUE, Plugwise

  3. #3
    Registriert seit
    Aug 2016
    Beiträge
    2,664

    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
    IPS 5.2, auf Tinkerboard und RPI, piVCCU, Homematic & Homematic IP, diverse Tasmota Geräte, Shelly, GHoma, LG HomBot, Sonos, Tvheadend, HomeKit, AppleTV

  4. #4
    Registriert seit
    Apr 2018
    Beiträge
    111

    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:

    PHP-Code:
    // 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

  5. #5
    Registriert seit
    Jun 2011
    Ort
    Fessenheim, Schwaben, Bayern
    Beiträge
    554

    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
    Geändert von Proxima (01.03.19 um 19:44 Uhr)
    Unlimited IP-Symcon 5.2 4383 benutzte Variablen
    Server: Windows Server 2016 Essentials auf Intel Xeon E3-1245v5; 32GB RAM; SSD für System; 12TB Daten-HDD's Hardware: HomeMatic (OCCU, RS485 & HMIP); 1-Wire; Sonos; IrTrans Ethernet; WMRS 200; Plugwise; UVR1611; Harmony Elite; Xiaomi Roborock S50; Echo Dots; Synology NAS DS-414 (externes BackUp)

  6. #6
    Registriert seit
    Apr 2018
    Beiträge
    111

    Hi Proxima!

    ich versuche mal deine Fragen zu beantworten

    Zitat Zitat von Proxima Beitrag anzeigen
    wie hast Du die Anzeige in IPSView eingebunden???
    - In einem Script als HTML zusammengebaut oder die einzelnen Variablen in der View positioniert???
    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.


    Zitat Zitat von Proxima Beitrag anzeigen
    - Wie zeigst Du das Icon in IPSView an???
    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.


    Zitat Zitat von Proxima Beitrag anzeigen
    - Hat schon jemand ein anderes IconSet als das downloadbare von der APIXU-Homepage verwendet???
    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.


    Zitat Zitat von Proxima Beitrag anzeigen
    - Was beschreibt in der Kategorie "Aktuell" die Variable "12 Bewölkung" und welches Variablenprofil sollte die Variable haben (bei mir ist kein Profil hinterlegt)???
    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.
    Gruß Sven

    -----
    In Quality-Land werden alle Probleme gelöst noch bevor du realisierst, dass du sie hast.

  7. #7
    Registriert seit
    Jun 2011
    Ort
    Fessenheim, Schwaben, Bayern
    Beiträge
    554

    Hallo,

    benutzt noch jemand dieses Script ???

    Ich bekomme seit ein paar Tagen die folgenden Fehlermeldungen:
    Code:
    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:
    PHP-Code:
    <?

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

    // 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}\n";
    echo "MaxTemperatur: ${forecast_heute_maxtemp}°\n";
    echo "MinTemperatur: ${forecast_heute_mintemp}°\n";
    echo "AvgTemperatur: ${forecast_heute_avgtemp}°\n";
    echo "Wetterkondition: ${forecast_heute_condition_text}\n";
    echo "Wetterkondition Icon: ${forecast_heute_condition_icon}\n";
    echo "Wetterkondition Code: ${forecast_heute_condition_code}\n";
    echo "MaxWindgeschwindigkeit: ${forecast_heute_max_wind_kph} km/h\n";
    echo "AvgLuftfeuchte: ${forecast_heute_avghumidity}\n";
    echo "TotalNiederschlag: ${forecast_heute_totalprecip_mm}mm\n";
    */

    // 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}\n";
    echo "MaxTemperatur: ${forecast_1_maxtemp}°\n";
    echo "MinTemperatur: ${forecast_1_mintemp}°\n";
    echo "AvgTemperatur: ${forecast_1_avgtemp}°\n";
    echo "Wetterkondition: ${forecast_1_condition_text}\n";
    echo "Wetterkondition Icon: ${forecast_1_condition_icon}\n";
    echo "Wetterkondition Code: ${forecast_1_condition_code}\n";
    echo "MaxWindgeschwindigkeit: ${forecast_1_max_wind_kph} km/h\n";
    echo "AvgLuftfeuchte: ${forecast_1_avghumidity}\n";
    echo "TotalNiederschlag: ${forecast_1_totalprecip_mm}mm\n";
    */

    // 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}°\n";
    echo "MinTemperatur: ${forecast_2_mintemp}°\n";
    echo "AvgTemperatur: ${forecast_2_avgtemp}°\n";
    echo "Wetterkondition: ${forecast_2_condition_text}\n";
    echo "Wetterkondition Icon: ${forecast_2_condition_icon}\n";
    echo "Wetterkondition Code: ${forecast_2_condition_code}\n";
    echo "MaxWindgeschwindigkeit: ${forecast_2_max_wind_kph} km/h\n";
    echo "AvgLuftfeuchte: ${forecast_2_avghumidity}\n";
    echo "TotalNiederschlag: ${forecast_2_totalprecip_mm}mm\n";
    */

    // 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}°\n";
    echo "MinTemperatur: ${forecast_3_mintemp}°\n";
    echo "AvgTemperatur: ${forecast_3_avgtemp}°\n";
    echo "Wetterkondition: ${forecast_3_condition_text}\n";
    echo "Wetterkondition Icon: ${forecast_3_condition_icon}\n";
    echo "Wetterkondition Code: ${forecast_3_condition_code}\n";
    echo "MaxWindgeschwindigkeit: ${forecast_3_max_wind_kph} km/h\n";
    echo "AvgLuftfeuchte: ${forecast_3_avghumidity}\n";
    echo "TotalNiederschlag: ${forecast_3_totalprecip_mm}mm\n";
    */

    // 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}°\n";
    echo "MinTemperatur: ${forecast_4_mintemp}°\n";
    echo "AvgTemperatur: ${forecast_4_avgtemp}°\n";
    echo "Wetterkondition: ${forecast_4_condition_text}\n";
    echo "Wetterkondition Icon: ${forecast_4_condition_icon}\n";
    echo "Wetterkondition Code: ${forecast_4_condition_code}\n";
    echo "MaxWindgeschwindigkeit: ${forecast_4_max_wind_kph} km/h\n";
    echo "AvgLuftfeuchte: ${forecast_4_avghumidity}\n";
    echo "TotalNiederschlag: ${forecast_4_totalprecip_mm}mm\n";
    */

    // 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.75101.25),
                                        
    'Ost-Südost'                    =>    array(101.25123.75),
                                        
    'Südost'                        =>    array(123.75146.25),
                                        
    'Süd-Südost'                    =>    array(146.25168.75),
                                        
    'Süd'                            =>    array(168.75191.25),
                                        
    'Süd-SüdWest'                    =>    array(191.25213.75),
                                        
    'Südwest'                        =>    array(213.75236.25),
                                        
    'West-Südwest'                    =>    array(236.25258.75),
                                        
    'West'                            =>    array(258.75281.25),
                                        
    'West-Nordwest'                    =>    array(281.25303.75),
                                        
    'Nordwest'                        =>    array(303.75326.25),
                                        
    'Nord-Nordwest'                    =>    array(326.25348.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( 1019.9),
                                        
    'schwache Brise'                =>    array( 2028.9),
                                        
    'mäßige Brise'                    =>    array( 2937.9),
                                        
    'frische Brise'                    =>    array( 3846.9),
                                        
    'starker Wind'                    =>    array( 4756.9),
                                        
    'starker bis stürmischer Wind'    =>    array( 5765.9),
                                        
    'stürmischer Wind'                =>    array( 6674.9),
                                        
    'Sturm'                            =>    array( 7583.9),
                                        
    'Sturm bis schwerer Sturm'        =>    array( 8493.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
    Geändert von Proxima (19.08.19 um 16:50 Uhr)
    Unlimited IP-Symcon 5.2 4383 benutzte Variablen
    Server: Windows Server 2016 Essentials auf Intel Xeon E3-1245v5; 32GB RAM; SSD für System; 12TB Daten-HDD's Hardware: HomeMatic (OCCU, RS485 & HMIP); 1-Wire; Sonos; IrTrans Ethernet; WMRS 200; Plugwise; UVR1611; Harmony Elite; Xiaomi Roborock S50; Echo Dots; Synology NAS DS-414 (externes BackUp)

  8. #8
    Registriert seit
    Apr 2018
    Beiträge
    111

    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
    Gruß Sven

    -----
    In Quality-Land werden alle Probleme gelöst noch bevor du realisierst, dass du sie hast.

  9. #9
    Registriert seit
    Sep 2012
    Beiträge
    137

    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

  10. #10
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    6,430

    Zitat Zitat von dzvo Beitrag anzeigen
    Hat jemand noch einen anderen Wetterdaten Dienst wo man Vorhersage Werte bekommt?
    z.B. daswetter

Ähnliche Themen

  1. Das Wetter von Morgen auslesen - wetter.com
    Von GEMAG im Forum Skripte, PHP, SQL
    Antworten: 2
    Letzter Beitrag: 30.11.15, 14:04
  2. Wetter auslesen
    Von uwe im Forum Skripte, PHP, SQL
    Antworten: 2
    Letzter Beitrag: 07.02.09, 17:24
  3. Wetter Icons
    Von Professorakiera im Forum Dashboard
    Antworten: 2
    Letzter Beitrag: 20.04.07, 17:50
  4. Wetter Modul an wetterarchive.de (->wetter.com) anbinden?
    Von Torro im Forum IP-Symcon WIIPS für Version 1.0
    Antworten: 5
    Letzter Beitrag: 13.04.06, 22:08
  5. Wetter-Bild
    Von Jimmy Neutron im Forum Dashboard
    Antworten: 4
    Letzter Beitrag: 26.02.06, 11:08