Gibt es Prognosedaten für die tägl.Erzeugungsmenge einer PV Anlage?

Das muss ich einmal beobachten ich schreib dir in ein paar Tagen.

Swen

Hallo,

endlich nach 9 Monaten habe ich meine PV in Betrieb nehmen können (gab Probleme mit den Energieversorger usw.).

Nun würde ich auch gerne den Forecast einrichten - doch leider habe auch ich hier ein paar Probleme. Habe mal mein Script angehangen (natürlich nur ohne den richtigen API Key für Solcast.

Ich möchte gerne Solcast verwenden und habe mir einen API Key besorgt, über die Webseite bekomme ich einige Informationen und würde sagen, das sieht gut aus. Anderes habe ich nicht eingetragen, da ich nur Forecast verwenden möchte (habe es so verstanden, das ich den Rest nur brauche, wenn ich eigene Berechnung verwende).

Hier auch ein paar Informationen: Anlage mit 9.6 kWp, Ausrichtung Süd, 10° Winkel, nur eine Anlage (deswegen die 2. wie oben angegeben auskommentiert), Anlage steht im Heckenweg 1a in 51379 Leverkusen (schreibe ich öffentlich - ist ja eh im Marktstammregister und im Impressum der Webseite):


<?php
/* Forecast einer PV Analage berechnen 
   Klasse kann 2 Forecast Provider lesen
   1. https://toolkit.solcast.com.au/world-api
   2. https://api.forecast.solar/
   3. Eigene Berechnung anhand Ausrichtung, Sonnenstand und Bewölkung von https://openweathermap.org/

  (c) 2022, STELE99
*/

/* Array der PV Anlagen definieren
   kwp:         Installierte Kilowatt Peak als String mit . für nachkommastellen
   azimuth:     Ausrichtung gegen Süden 0=Süden, -90=Osten, 90=Westen
   tilt:        Neigung der Anlage 0=flach, Senkrecht =90
   verlust:     Faktor um Leistungsverluste etc. zu kompensieren
   lon:         Längengrad des PV Standortes als String mit . für nachkommastellen
   lat:         Breitengrad des PV Standortes als String mit . für nachkommastellen
   efficiency:  Wirkungungsgrad der Anlage (zb. Abfall durch Beschattung etc. ) 0-100
*/

$PVA["PV1"]  = [ "kwp"        => "9.6", 
                  "azimuth"    => 180,
                  "tilt"       => 10,
                  "efficiency" => 90,                  
                  "lon"        => "51.0721073",
                  "lat"        => "7.0157042"];

/*$PVA["PV2"] = [ "kwp"        => "8.0", 
                  "azimuth"    => -30,
                  "tilt"       => 0,
                  "efficiency" => 85,                  
                  "lon"        => "7.929372606",
                  "lat"        => "43.025873309"];*/

/* Wie wird der ForeCast berechnet 
1 = Solcast
2 = forecast.solar
3 = eigen
*/
$CALC_METHOD = 1;

/* Solcast API-KEY für Forecast Variante 1*/
$SO_APIKEY = "mein-eigener-api-key";

/* Openweathermap () für Forecast eigene Berechnung Variante 3  APPID - API KEY */
$OW_APPID    = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

/* Verlgeich der Vorhersagemodelle in HTML Variable (Ausgabeüber String Variable) */
$HTML_COMPARE     = true;

/* Alle Forecast Daten als JSON String in Variable speichern */
$SAVE_TO_VAR      = true;

/* Wie stark hat Bewölkung Auswirkung auf Leistung (Faktor (linear)) Leistungsreduktion = Bewölkung * Faktor*/
$V3_CLOUD_FAKTOR  = 0.75;

/*------------------------------- PROGRAM CODE, NO CHANGE HERE --------------------------------------------*/

// Falls noch nicht existend, Profil anlegen für kwh
$profname = "kWh";
if(!IPS_VariableProfileExists($profname)) {
    // kWh Profil anlegen
    $id = IPS_CreateVariableProfile ($profname, 2);
    IPS_SetVariableProfileIcon($profname, "EnergyStorage");
    IPS_SetVariableProfileText($profname, "", "kWh");
};

// Anlagen auswerten und je Anlage Forecast ermiteln und in einer Kategorie speichern:
foreach($PVA as $Aname => $A){
    $catID = @IPS_GetCategoryIDByName ($Aname, $_IPS['SELF']);
    // Kategroie pro PV Anlage erstellen
    if(empty($catID)){
        $catID = IPS_CreateCategory();
        IPS_SetName($catID, $Aname); // Kategorie benennen
        IPS_SetParent($catID,  $_IPS['SELF']); // Kategorie einsortieren unter dem Objekt mit der ID "12345"
    }
    $pv = new SEPVForecast($A);
    switch($CALC_METHOD){
        case 1: $fc = $pv->getForecast($A);
                break;

        case 2: $fc = $pv->getForecast2($A);
                break;

        case 3: $fc = $pv->getForecast3($A);
                break;
    }
    
    // Werte in Variablen schreiben ==========================================

    // Wenn Job vor 8h dann wird der aktuelle Tag noch ausgewertet
    $idVar1 = CreateVariableByName($catID,"PV heute 0-12h",   2, "kWh");
    $idVar2 = CreateVariableByName($catID,"PV heute Gesamt",   2, "kWh");
    if(date('H') < 9 ){
        SetValue($idVar1, $fc[0]["morgens"]);
        SetValue($idVar2, $fc[0]["gesamt"]);
    }
    $idVar = CreateVariableByName($catID,"PV heute 12-24h",   2, "kWh");
    if(date('H')<13){
        SetValue($idVar, $fc[0]["mittags"]);
    } 
       
    // Werte für morgen.
    $idVar = CreateVariableByName($catID,"PV morgen Gesamt",   2, "kWh");
    SetValue($idVar, $fc[1]["gesamt"]);

    $idVar = CreateVariableByName($catID,"PV morgen 8-12h",   2, "kWh");
    SetValue($idVar, $fc[1]["morgens"]);
    
    $idVar = CreateVariableByName($catID,"PV morgen 12-21h",   2, "kWh");
    SetValue($idVar, $fc[1]["mittags"]);

    // Ausgabe Vergleichstabelle der unterschiedlichen Varianten
    if($HTML_COMPARE == true){        
        $fcA[1] = $pv->getForecast($A);
        $fcA[2] = $pv->getForecast2($A);
        $fcA[3] = $pv->getForecast3($A);
             
        // Charts aufbauen und in eigene Variable ausgeben.
        for($day = 0; $day < 2; $day++){
            $str = "";
            $data = "";
            $chartUID = strtolower($Aname.$day);
            $daytxt = ($day==0 )? "heute" : "morgen";
            
            for($h = 4; $h < 23; $h++){
                $e = @$fcA[1][$day][$h];
                $hour = $h;
                if(!empty($hour))$data .= "['$hour', ".str_replace(",", ".", floatval(@$e["pv_estimate"])).", ".str_replace(",", ".", floatval(@$fcA[2][$day][$hour]["pv_estimate"])).", ".str_replace(",", ".", floatval(@$fcA[3][$day][$hour]["pv_estimate"])).", ".@intval($fcA[3][$day][$hour]["clouds"])."],\n";
            }
            
            $data = substr($data, 0, strlen($data)-2);
            
            
            $str .="<script type='text/javascript' src='https://www.gstatic.com/charts/loader.js'></script>
                        <script type='text/javascript'>
                        google.charts.load('current', {'packages':['corechart']});
                        google.charts.setOnLoadCallback(drawChart".$chartUID.");

                        function drawChart".$chartUID."() {
                            var data".$chartUID." = google.visualization.arrayToDataTable([
                            ['Uhrzeit', 'solcast ".round($fcA[1][$day]["gesamt"],0)."kWh', 'forecast.solar ".round($fcA[2][$day]["gesamt"],0)."kWh', 'eigen ".round($fcA[3][$day]["gesamt"],0)."kWh', 'Bewölkung'],
                        $data
                            ]);

                            var options = {
                            title: 'PV Vorhersagemodelle für $Aname, $daytxt',
                            titleTextStyle: {color: '#FFFFFF'},
                            backgroundColor: '#1F3041',
                            colors: ['#F2F3AE', '#FC9E4F', '#F4442E', '#FFFFFF'],
                            hAxis: { gridlines: {color: '#576471'},
                                     textStyle: {color: '#FFF'},
                                     baselineColor:{color: '#FFF'},
                                     title: 'Uhrzeit' ,
                                     titleTextStyle:{color: '#FFF'},
                                    },
                            
                            vAxes: { 0:{
                                        gridlines: {color: '#576471', count: 5}, 
                                        minorGridlines: { color: 'transparent', count: 0 }, 
                                        textStyle:{color: '#FFF'}, 
                                        baselineColor:{color: '#FFF'},
                                        title: 'kWh', 
                                        titleTextStyle:{color: '#FFF'},
                                        viewWindowMode:'maximized',
                                        viewWindow: { min: 0}
                                        
                                      }, 
                                      3:{
                                        gridlines: {color: 'transparent', count: 0}, 
                                        minorGridlines: { count: 0 }, 
                                        textStyle:{color: '#FFF'}, 
                                        baselineColor:{color: '#FFF'},
                                        title: 'Bewölkung', 
                                        titleTextStyle:{color: '#FFF'},
                                        viewWindowMode:'maximized',
                                        viewWindow: {max: 100, min: 0}
                                  } },

                            tooltip: {isHtml: true},
                            series:{    0:{targetAxisIndex:0, type: 'line'},
                                        1:{targetAxisIndex:0, type: 'line'},
                                        2:{targetAxisIndex:0, type: 'line', lineWidth: 3},
                                        3:{targetAxisIndex:3, type:'area', areaOpacity:0.25, lineWidth:0  }},

                            legend: {textStyle: {color: 'white'}, position: 'bottom'},
                            curveType: 'function'
                            };

                            var chart = new google.visualization.AreaChart(document.getElementById('chart".$chartUID."'));

                            chart.draw(data".$chartUID.", options);
                        }
                        </script>
                        <div id='chart".$chartUID."' style='width: 100%; height: 400px'></div>";
            
            $idVar = CreateVariableByName($catID,"Forecast-Chart $Aname $daytxt",   3, "~HTMLBox");

            if((date("H") < 11 && $day == 0 ) || $day != 0){
                SetValue($idVar, $str);
            }
        }

    }

    if($SAVE_TO_VAR){
        $str = json_encode($fc);
        $idVar = CreateVariableByName($catID,"ForecastJSON",   3, "");
        SetValue($idVar, $str);
    }

}



class SEPVForecast {

    private $ow_cache = 3600; // OpenWeather Cache
    private $so_cache = 3600 * 2;
    private $fc_cache = 3600 * 2;

    public  $fc;

    /* ForeCast PV with SolCast ========================================================================= */
    function getForecast($A){
        global $SO_APIKEY;
        global $SO_UTC;
        $lon = $A["lon"];
        $lat = $A["lat"];
        $kwp = $A["kwp"];
        if($A["azimuth"] > 0){
            $azimuth = 180 - $A["azimuth"];
        }elseif($A["azimuth"] < 0){
            $azimuth = -180 - $A["azimuth"];
        }else{
            $azimuth = 0;
        }        

        $url    = "https://api.solcast.com.au/world_pv_power/forecasts?latitude=$lat&longitude=$lon&capacity=$kwp&tilt=".$A["tilt"]."&azimuth=$azimuth&hours=48&format=json&api_key=$SO_APIKEY";

        $fcache = $_IPS['SELF']."_so_".md5(serialize($A)).".cache";
        if(time() - @filemtime($fcache) > $this->so_cache){
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $result = curl_exec($ch);
            if (curl_errno($ch)) {
                echo 'Error:' . curl_error($ch);
            }
            curl_close($ch);            
            file_put_contents($fcache, $result);
        }
        $sodata = json_decode(file_get_contents($fcache));
        $fc = [];
        $hcount =0;
        $hour_old="";
        foreach($sodata->forecasts as $o){
            $hour = date("G",strtotime($o->period_end));
            $day  = date("z",strtotime($o->period_end)) - date("z");
            $fc[$day][$hour] = [
                                "hour"           =>  $hour,
                                "pv_estimate"    => $o->pv_estimate,
                                ];
            $hour_old = $hour;
        }

        //Morgen und Mittagswerte
        foreach($fc as $d => $day){
                $morgens = 0;
                $mittags = 0;
                foreach($day as $hour){
                    if($hour["hour"] <13 ){
                        $morgens += $hour["pv_estimate"];
                    }else{
                        $mittags += $hour["pv_estimate"];
                    }
                }
                $fc[$d]["morgens"] = $morgens * $A["efficiency"] / 100;
                $fc[$d]["mittags"] = $mittags * $A["efficiency"] / 100;
                $fc[$d]["gesamt"]  = ($morgens + $mittags)  * $A["efficiency"] / 100;
        }
        
        $this->so_fc = $fc;
        return $fc;
    }

    /* ForeCast PV with forecast.solar ========================================================================= */
    function getForecast2($A){
        $lon = $A["lon"];
        $lat = $A["lat"];
        $kwp = $A["kwp"];
        $url    = "https://api.forecast.solar/estimate/$lat/$lon/".$A["tilt"]."/".$A["azimuth"]."/$kwp";
        $fcache =  $_IPS['SELF']."_fc_".md5(serialize($A)).".cache";
        if(time() - @filemtime($fcache) > $this->fc_cache ){
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $result = curl_exec($ch);
            if (curl_errno($ch)) {
                echo 'Error:' . curl_error($ch);
            }
            curl_close($ch);            
            file_put_contents($fcache, $result);
        }
        $data = json_decode(file_get_contents($fcache));
        $fc = [];
        foreach($data->result->watts as $t => $watts){
            $hour = date("G",strtotime($t));
            $day  = date("z",strtotime($t)) - date("z");
            $fc[$day][$hour] = [
                                "hour"           =>  $hour,
                                "pv_estimate"    => @$fc[$day][$hour]["pv_estimate"] + ($watts / 1000),
                                ];
        }

        //Morgen und Mittagswerte
        foreach($fc as $d => $day){
                $morgens = 0;
                $mittags = 0;
                foreach($day as $hour){
                    if($hour["hour"] <13 ){
                        $morgens += $hour["pv_estimate"];
                    }else{
                        $mittags += $hour["pv_estimate"];
                    }
                }
                $fc[$d]["morgens"] = $morgens * $A["efficiency"] / 100;
                $fc[$d]["mittags"] = $mittags * $A["efficiency"] / 100;
                $fc[$d]["gesamt"]  = ($morgens + $mittags)  * $A["efficiency"] / 100;
        }
        
        $this->fc = $fc;
        return $fc;
    }

    /* ForeCast PV eigene Ermittlung====================================================================== */
    function getForecast3($A){
        global $OW_APPID;
        global $V3_CLOUD_FAKTOR;
        $lon = $A["lon"];
        $lat = $A["lat"];
        $kwp = $A["kwp"];

        // Wetterdaten lesen und cachen
        $url = "https://api.openweathermap.org/data/2.5/onecall?lat=$lat&lon=$lon&exclude=minutely,alerts,current&units=metric&lang=de_de&appid=$OW_APPID";
        $fcache =  $_IPS['SELF']."_ow".md5($A["lon"].$A["lat"]).".cache";
        if(time() - @filemtime($fcache) > $this->ow_cache){
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $result = curl_exec($ch);
            if (curl_errno($ch)) {
                echo 'Error:' . curl_error($ch);
            }
            curl_close($ch);            
            file_put_contents($fcache, $result);
        }
        $data = json_decode(file_get_contents($fcache));

       foreach($data->hourly as $h){
            $day     =  date("z", $h->dt) - date("z");
            $hour    =  date("G", $h->dt);
            $clouds  = $h->clouds;
            #$clouds = 0;
            
            $ret        = $this->calcSun($h->dt, $lon, $lat);
            $sun_azimuth    = $ret["azimuth"];
            $sun_elevation  = $ret["elevation"];

            /* Kalkulation des Ertrages
               Daten von https://echtsolar.de/wp-content/uploads/2021/02/Ausrichtungstabelle-Photovoltaik-in-Deutschland-768x705.png
               Formel über Newton Polynom: https://de.planetcalc.com/9023/
            */
            
            $lf = 100;
            $az_abw = round(abs($sun_azimuth - 180 - $A["azimuth"]),1);
            #$lf_minusA =  round(0.002019* pow( $az_abw, 2) -0.02878 * $az_abw + 0.5471, 1); // Formel via funktion aus 3-4 punkten
            if($az_abw > 180){
                $lf_minusA = 100;
            }else{
                $lf_minusA = (-0.00000000147) * pow( $az_abw, 5) + (0.00000057668) * pow ($az_abw, 4) + (-0.00008107497) * pow ($az_abw, 3) + (0.00559429998 * pow ($az_abw, 2)) + (0.05160253657 * $az_abw);
            }
            #echo "$hour h: $sun_azimuth : $az_abw -> $lf_minusA\n";
            
            $lf = $lf - $lf_minusA;
            #echo "Azimuth $lf_minusA >> $lf \n";

            // Neigungswikel und Sonne            
            $elev_abw = 90 - $sun_elevation + $A["tilt"];
            $x = $elev_abw;
            #$lf_minusE  =  round( 0.0000474    * pow( $elev_abw, 3) + 0.002798 * pow( $elev_abw, 2) + 0.2894 * $elev_abw - 2.453, 1);
            $lf_minusE  = (-0.00000000184772 * pow($x, 6)) + (0.00000055691964 * pow($x, 5)) + (-0.00006230158730 * pow($x, 4)) + (0.00319568452381 * pow($x, 3)) + (-0.06371230158730 * pow($x, 2)) + (-0.13880952380952 * $x) + 14;
            if($sun_elevation < 0) $lf_minusE = 100; // Sonnenuntergang
            $lf_minusE = round($lf_minusE,1);
            $lf = $lf - $lf_minusE;
            #echo "$hour: A: -$lf_minusA E:-$lf_minusE : $lf\n";
            

            // Bewölkung hängt von der Wolkendicke und von dem Einstrahlungswinkel ab.
            $lf_minusC = (pow($clouds,2.4)/600) * $V3_CLOUD_FAKTOR;
            
            #echo $clouds.": " .$lf_minusC."\n";
            $lf = $lf - $lf_minusC;
            #echo "Clouds $clouds >> $lf \n";

            $lf = ($lf < 0 )? 0 : $lf;


            $fc[$day][$hour] = [
                                "day"            =>  $day,
                                "hour"           =>  $hour,
                                "clouds"         =>  $clouds,
                                "pv_estimate"    =>  $A["kwp"] * ($lf / 100) * $A["efficiency"]/100,
                                ];        
        }

        //Morgen und Mittagswerte
        foreach($fc as $d => $day){
                $morgens = 0;
                $mittags = 0;
                foreach($day as $hour){
                    if($hour["hour"] <13 ){
                        $morgens += $hour["pv_estimate"];
                    }else{
                        $mittags += $hour["pv_estimate"];
                    }
                }
                $fc[$d]["morgens"] = $morgens * $A["efficiency"] / 100;
                $fc[$d]["mittags"] = $mittags * $A["efficiency"] / 100;
                $fc[$d]["gesamt"]  = ($morgens + $mittags)  * $A["efficiency"] / 100;
        }
        
        $this->fc = $fc;
        return $fc;
    }


    private function calcSun($ts, $dLongitude, $dLatitude){
        // Correction Timezone
        $ts = $ts - 3600;

        $iYear = date("Y", $ts);
        $iMonth = date("m", $ts);
        $iDay = date("d", $ts);
        $dHours = date("H", $ts);
        $dMinutes = date("i", $ts);
        $dSeconds = date("s", $ts);

        $pi = 3.14159265358979323846;
        $twopi = (2*$pi);
        $rad = ($pi/180);
        $dEarthMeanRadius = 6371.01;	// In km
        $dAstronomicalUnit = 149597890;	// In km

        // Calculate difference in days between the current Julian Day
        // and JD 2451545.0, which is noon 1 January 2000 Universal Time

        // Calculate time of the day in UT decimal hours
        $dDecimalHours = floatval($dHours) + (floatval($dMinutes) + floatval($dSeconds) / 60.0 ) / 60.0;
        

        // Calculate current Julian Day

        $iYfrom2000 = $iYear;//expects now as YY ;
        $iA= (14 - ($iMonth)) / 12;
        $iM= ($iMonth) + 12 * $iA -3;
        $liAux3=(153 * $iM + 2)/5;
        $liAux4= 365 * ($iYfrom2000 - $iA);
        $liAux5= ( $iYfrom2000 - $iA)/4;
        $dElapsedJulianDays= floatval(($iDay + $liAux3 + $liAux4 + $liAux5 + 59)+ -0.5 + $dDecimalHours/24.0);

        // Calculate ecliptic coordinates (ecliptic longitude and obliquity of the
        // ecliptic in radians but without limiting the angle to be less than 2*Pi
        // (i.e., the result may be greater than 2*Pi)

        $dOmega= 2.1429 - 0.0010394594 * $dElapsedJulianDays;
        $dMeanLongitude = 4.8950630 + 0.017202791698 * $dElapsedJulianDays; // Radians
        $dMeanAnomaly = 6.2400600 + 0.0172019699 * $dElapsedJulianDays;
        $dEclipticLongitude = $dMeanLongitude + 0.03341607 * sin( $dMeanAnomaly ) + 0.00034894 * sin( 2 * $dMeanAnomaly ) -0.0001134 -0.0000203 * sin($dOmega);
        $dEclipticObliquity = 0.4090928 - 6.2140e-9 * $dElapsedJulianDays +0.0000396 * cos($dOmega);

        // Calculate celestial coordinates ( right ascension and declination ) in radians
        // but without limiting the angle to be less than 2*Pi (i.e., the result may be
        // greater than 2*Pi)

        $dSin_EclipticLongitude = sin( $dEclipticLongitude );
        $dY1 = cos( $dEclipticObliquity ) * $dSin_EclipticLongitude;
        $dX1 = cos( $dEclipticLongitude );
        $dRightAscension = atan2( $dY1,$dX1 );
        if( $dRightAscension < 0.0 ) $dRightAscension = $dRightAscension + $twopi;
        $dDeclination = asin( sin( $dEclipticObliquity )* $dSin_EclipticLongitude );

        // Calculate local coordinates ( azimuth and zenith angle ) in degrees

        $dGreenwichMeanSiderealTime = 6.6974243242 +	0.0657098283 * $dElapsedJulianDays + $dDecimalHours;

        $dLocalMeanSiderealTime = ($dGreenwichMeanSiderealTime*15 + $dLongitude)* $rad;
        $dHourAngle = $dLocalMeanSiderealTime - $dRightAscension;
        $dLatitudeInRadians = $dLatitude * $rad;
        $dCos_Latitude = cos( $dLatitudeInRadians );
        $dSin_Latitude = sin( $dLatitudeInRadians );
        $dCos_HourAngle= cos( $dHourAngle );
        $dZenithAngle = (acos( $dCos_Latitude * $dCos_HourAngle * cos($dDeclination) + sin( $dDeclination )* $dSin_Latitude));
        $dY = -sin( $dHourAngle );
        $dX = tan( $dDeclination )* $dCos_Latitude - $dSin_Latitude * $dCos_HourAngle;
        $dAzimuth = atan2( $dY, $dX );
        if ( $dAzimuth < 0.0 )
            $dAzimuth = $dAzimuth + $twopi;
        $dAzimuth = $dAzimuth / $rad;
        // Parallax Correction
        $dParallax = ($dEarthMeanRadius / $dAstronomicalUnit) * sin( $dZenithAngle);
        $dZenithAngle = ($dZenithAngle + $dParallax) / $rad;
        $dElevation = 90 - $dZenithAngle;
            
        return Array("azimuth" => $dAzimuth, "elevation" => $dElevation);
    }


}


// Helper Funktion
function CreateVariableByName($id, $name, $type, $profile = "")
{
    # type: 0=boolean, 1 = integer, 2 = float, 3 = string;
    global $_IPS;
    $vid = @IPS_GetVariableIDByName($name, $id);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "this variable was created by script #".$_IPS['SELF']);
        if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
    }
    return $vid;
}
?>

Ich erhalte die folgenden Fehler:

Notice: Undefined property: stdClass::$hourly in C:\ProgramData\Symcon\scripts\18244.ips.php on line 360

Warning: Invalid argument supplied for foreach() in C:\ProgramData\Symcon\scripts\18244.ips.php on line 360

Notice: Undefined variable: fc in C:\ProgramData\Symcon\scripts\18244.ips.php on line 418

Warning: Invalid argument supplied for foreach() in C:\ProgramData\Symcon\scripts\18244.ips.php on line 418

Notice: Undefined variable: fc in C:\ProgramData\Symcon\scripts\18244.ips.php on line 433

Notice: Undefined variable: fc in C:\ProgramData\Symcon\scripts\18244.ips.php on line 434

Notice: Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\18244.ips.php on line 142

Notice: Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\18244.ips.php on line 142

Notice: Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\18244.ips.php on line 142

Notice: Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\18244.ips.php on line 142

Auch die Inhalte der Variablen sehen seltsam aus - oder ist das so korrekt:

Wie kann ich auch das BIld wie oben angegeben hinbekommen?!?

Könnt ihr den oder die Fehler sehen und mir weiterhelfen?

Danke für eure Unterstützung.

Ich vermute, dass das Auslesen der Daten noch nicht funktioniert.

Lass dir mal den Inhalt von $data ausgeben. Also zum Beispiel auf Zeile 359:

var_dump($data);

@bumaas : Danke für deine Unterstützung, hier die Ausgabe:

object(stdClass)#7 (6) {
  ["lat"]=>
  float(7,0157)
  ["lon"]=>
  float(51,0721)
  ["timezone"]=>
  string(9) "Etc/GMT-3"
  ["timezone_offset"]=>
  int(10800)
  ["hourly"]=>
  array(48) {
    [0]=>
    object(stdClass)#8 (14) {
      ["dt"]=>
      int(1675882800)
      ["temp"]=>
      float(25,24)
      ["feels_like"]=>
      float(26,01)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(84)
      ["dew_point"]=>
      float(22,34)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(7)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,78)
      ["wind_deg"]=>
      int(45)
      ["wind_gust"]=>
      float(8,9)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#10 (4) {
          ["id"]=>
          int(800)
          ["main"]=>
          string(5) "Clear"
          ["description"]=>
          string(9) "clear sky"
          ["icon"]=>
          string(3) "01n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [1]=>
    object(stdClass)#9 (14) {
      ["dt"]=>
      int(1675886400)
      ["temp"]=>
      float(25,23)
      ["feels_like"]=>
      float(25,98)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(83)
      ["dew_point"]=>
      float(22,14)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(7)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,05)
      ["wind_deg"]=>
      int(46)
      ["wind_gust"]=>
      float(8,71)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#2 (4) {
          ["id"]=>
          int(800)
          ["main"]=>
          string(5) "Clear"
          ["description"]=>
          string(9) "clear sky"
          ["icon"]=>
          string(3) "01n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [2]=>
    object(stdClass)#6 (14) {
      ["dt"]=>
      int(1675890000)
      ["temp"]=>
      float(25,21)
      ["feels_like"]=>
      float(25,95)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(83)
      ["dew_point"]=>
      float(22,12)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(7)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,94)
      ["wind_deg"]=>
      int(47)
      ["wind_gust"]=>
      float(8,45)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#5 (4) {
          ["id"]=>
          int(800)
          ["main"]=>
          string(5) "Clear"
          ["description"]=>
          string(9) "clear sky"
          ["icon"]=>
          string(3) "01n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [3]=>
    object(stdClass)#4 (14) {
      ["dt"]=>
      int(1675893600)
      ["temp"]=>
      float(25,16)
      ["feels_like"]=>
      float(25,9)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(83)
      ["dew_point"]=>
      float(22,07)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(9)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,75)
      ["wind_deg"]=>
      int(46)
      ["wind_gust"]=>
      float(8,22)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#3 (4) {
          ["id"]=>
          int(800)
          ["main"]=>
          string(5) "Clear"
          ["description"]=>
          string(9) "clear sky"
          ["icon"]=>
          string(3) "01n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [4]=>
    object(stdClass)#11 (14) {
      ["dt"]=>
      int(1675897200)
      ["temp"]=>
      float(25,11)
      ["feels_like"]=>
      float(25,79)
      ["pressure"]=>
      int(1011)
      ["humidity"]=>
      int(81)
      ["dew_point"]=>
      float(21,62)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(10)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,72)
      ["wind_deg"]=>
      int(48)
      ["wind_gust"]=>
      float(8,25)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#12 (4) {
          ["id"]=>
          int(800)
          ["main"]=>
          string(5) "Clear"
          ["description"]=>
          string(9) "clear sky"
          ["icon"]=>
          string(3) "01n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [5]=>
    object(stdClass)#13 (14) {
      ["dt"]=>
      int(1675900800)
      ["temp"]=>
      float(25,09)
      ["feels_like"]=>
      float(25,72)
      ["pressure"]=>
      int(1011)
      ["humidity"]=>
      int(79)
      ["dew_point"]=>
      float(21,19)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(16)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,47)
      ["wind_deg"]=>
      int(51)
      ["wind_gust"]=>
      float(7,9)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#14 (4) {
          ["id"]=>
          int(801)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(10) "few clouds"
          ["icon"]=>
          string(3) "02n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [6]=>
    object(stdClass)#15 (14) {
      ["dt"]=>
      int(1675904400)
      ["temp"]=>
      float(25,07)
      ["feels_like"]=>
      float(25,62)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(76)
      ["dew_point"]=>
      float(20,65)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(95)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,67)
      ["wind_deg"]=>
      int(47)
      ["wind_gust"]=>
      float(8,03)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#16 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [7]=>
    object(stdClass)#17 (14) {
      ["dt"]=>
      int(1675908000)
      ["temp"]=>
      float(24,99)
      ["feels_like"]=>
      float(25,5)
      ["pressure"]=>
      int(1013)
      ["humidity"]=>
      int(75)
      ["dew_point"]=>
      float(20,31)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(98)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,83)
      ["wind_deg"]=>
      int(43)
      ["wind_gust"]=>
      float(8,15)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#18 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [8]=>
    object(stdClass)#19 (14) {
      ["dt"]=>
      int(1675911600)
      ["temp"]=>
      float(25,08)
      ["feels_like"]=>
      float(25,58)
      ["pressure"]=>
      int(1013)
      ["humidity"]=>
      int(74)
      ["dew_point"]=>
      float(20,07)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(99)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,53)
      ["wind_deg"]=>
      int(41)
      ["wind_gust"]=>
      float(8,95)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#20 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [9]=>
    object(stdClass)#21 (14) {
      ["dt"]=>
      int(1675915200)
      ["temp"]=>
      float(25,06)
      ["feels_like"]=>
      float(25,53)
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(73)
      ["dew_point"]=>
      float(19,95)
      ["uvi"]=>
      float(0,77)
      ["clouds"]=>
      int(99)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,83)
      ["wind_deg"]=>
      int(43)
      ["wind_gust"]=>
      float(9,28)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#22 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [10]=>
    object(stdClass)#23 (14) {
      ["dt"]=>
      int(1675918800)
      ["temp"]=>
      float(25,25)
      ["feels_like"]=>
      float(25,68)
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(71)
      ["dew_point"]=>
      float(19,68)
      ["uvi"]=>
      float(2,55)
      ["clouds"]=>
      int(99)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,7)
      ["wind_deg"]=>
      int(43)
      ["wind_gust"]=>
      float(9,36)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#24 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [11]=>
    object(stdClass)#25 (14) {
      ["dt"]=>
      int(1675922400)
      ["temp"]=>
      float(25,36)
      ["feels_like"]=>
      float(25,81)
      ["pressure"]=>
      int(1015)
      ["humidity"]=>
      int(71)
      ["dew_point"]=>
      float(19,64)
      ["uvi"]=>
      float(5,27)
      ["clouds"]=>
      int(99)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,56)
      ["wind_deg"]=>
      int(43)
      ["wind_gust"]=>
      float(9,3)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#26 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [12]=>
    object(stdClass)#27 (14) {
      ["dt"]=>
      int(1675926000)
      ["temp"]=>
      float(25,48)
      ["feels_like"]=>
      float(25,96)
      ["pressure"]=>
      int(1015)
      ["humidity"]=>
      int(72)
      ["dew_point"]=>
      float(20,11)
      ["uvi"]=>
      float(7,24)
      ["clouds"]=>
      int(98)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,29)
      ["wind_deg"]=>
      int(40)
      ["wind_gust"]=>
      float(9,36)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#28 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [13]=>
    object(stdClass)#29 (14) {
      ["dt"]=>
      int(1675929600)
      ["temp"]=>
      float(25,5)
      ["feels_like"]=>
      float(26,01)
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(73)
      ["dew_point"]=>
      float(20,42)
      ["uvi"]=>
      float(8,9)
      ["clouds"]=>
      int(54)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,81)
      ["wind_deg"]=>
      int(39)
      ["wind_gust"]=>
      float(8,98)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#30 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [14]=>
    object(stdClass)#31 (14) {
      ["dt"]=>
      int(1675933200)
      ["temp"]=>
      float(25,5)
      ["feels_like"]=>
      float(26,04)
      ["pressure"]=>
      int(1013)
      ["humidity"]=>
      int(74)
      ["dew_point"]=>
      float(20,5)
      ["uvi"]=>
      float(9,06)
      ["clouds"]=>
      int(40)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,54)
      ["wind_deg"]=>
      int(41)
      ["wind_gust"]=>
      float(8,89)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#32 (4) {
          ["id"]=>
          int(802)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(16) "scattered clouds"
          ["icon"]=>
          string(3) "03d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [15]=>
    object(stdClass)#33 (14) {
      ["dt"]=>
      int(1675936800)
      ["temp"]=>
      float(25,52)
      ["feels_like"]=>
      float(26,06)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(74)
      ["dew_point"]=>
      float(20,55)
      ["uvi"]=>
      float(10,34)
      ["clouds"]=>
      int(33)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,41)
      ["wind_deg"]=>
      int(41)
      ["wind_gust"]=>
      float(8,72)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#34 (4) {
          ["id"]=>
          int(802)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(16) "scattered clouds"
          ["icon"]=>
          string(3) "03d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [16]=>
    object(stdClass)#35 (14) {
      ["dt"]=>
      int(1675940400)
      ["temp"]=>
      float(25,52)
      ["feels_like"]=>
      float(26,03)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(73)
      ["dew_point"]=>
      float(20,43)
      ["uvi"]=>
      float(7,08)
      ["clouds"]=>
      int(44)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,13)
      ["wind_deg"]=>
      int(44)
      ["wind_gust"]=>
      float(8,19)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#36 (4) {
          ["id"]=>
          int(802)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(16) "scattered clouds"
          ["icon"]=>
          string(3) "03d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [17]=>
    object(stdClass)#37 (14) {
      ["dt"]=>
      int(1675944000)
      ["temp"]=>
      float(25,53)
      ["feels_like"]=>
      float(26,04)
      ["pressure"]=>
      int(1011)
      ["humidity"]=>
      int(73)
      ["dew_point"]=>
      float(20,27)
      ["uvi"]=>
      float(3,66)
      ["clouds"]=>
      int(53)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(6,64)
      ["wind_deg"]=>
      int(48)
      ["wind_gust"]=>
      float(8,16)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#38 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [18]=>
    object(stdClass)#39 (14) {
      ["dt"]=>
      int(1675947600)
      ["temp"]=>
      float(25,47)
      ["feels_like"]=>
      float(26,03)
      ["pressure"]=>
      int(1011)
      ["humidity"]=>
      int(75)
      ["dew_point"]=>
      float(20,77)
      ["uvi"]=>
      float(1,23)
      ["clouds"]=>
      int(98)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(6,49)
      ["wind_deg"]=>
      int(49)
      ["wind_gust"]=>
      float(8,1)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#40 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [19]=>
    object(stdClass)#41 (14) {
      ["dt"]=>
      int(1675951200)
      ["temp"]=>
      float(25,4)
      ["feels_like"]=>
      float(25,98)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(76)
      ["dew_point"]=>
      float(20,89)
      ["uvi"]=>
      float(0,18)
      ["clouds"]=>
      int(90)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(6,21)
      ["wind_deg"]=>
      int(47)
      ["wind_gust"]=>
      float(8,06)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#42 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [20]=>
    object(stdClass)#43 (14) {
      ["dt"]=>
      int(1675954800)
      ["temp"]=>
      float(25,35)
      ["feels_like"]=>
      float(25,95)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(77)
      ["dew_point"]=>
      float(21,02)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(69)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(6,09)
      ["wind_deg"]=>
      int(45)
      ["wind_gust"]=>
      float(8,03)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#44 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [21]=>
    object(stdClass)#45 (14) {
      ["dt"]=>
      int(1675958400)
      ["temp"]=>
      float(25,3)
      ["feels_like"]=>
      float(25,9)
      ["pressure"]=>
      int(1013)
      ["humidity"]=>
      int(77)
      ["dew_point"]=>
      int(21)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(61)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(6,76)
      ["wind_deg"]=>
      int(44)
      ["wind_gust"]=>
      float(8,36)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#46 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [22]=>
    object(stdClass)#47 (14) {
      ["dt"]=>
      int(1675962000)
      ["temp"]=>
      float(25,25)
      ["feels_like"]=>
      float(25,79)
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(75)
      ["dew_point"]=>
      float(20,64)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(51)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,38)
      ["wind_deg"]=>
      int(46)
      ["wind_gust"]=>
      float(8,6)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#48 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [23]=>
    object(stdClass)#49 (14) {
      ["dt"]=>
      int(1675965600)
      ["temp"]=>
      float(25,18)
      ["feels_like"]=>
      float(25,69)
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(74)
      ["dew_point"]=>
      float(20,3)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(44)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(7,73)
      ["wind_deg"]=>
      int(48)
      ["wind_gust"]=>
      float(8,69)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#50 (4) {
          ["id"]=>
          int(802)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(16) "scattered clouds"
          ["icon"]=>
          string(3) "03n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [24]=>
    object(stdClass)#51 (14) {
      ["dt"]=>
      int(1675969200)
      ["temp"]=>
      float(25,09)
      ["feels_like"]=>
      float(25,59)
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(74)
      ["dew_point"]=>
      float(20,14)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(7)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,11)
      ["wind_deg"]=>
      int(50)
      ["wind_gust"]=>
      float(8,96)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#52 (4) {
          ["id"]=>
          int(800)
          ["main"]=>
          string(5) "Clear"
          ["description"]=>
          string(9) "clear sky"
          ["icon"]=>
          string(3) "01n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [25]=>
    object(stdClass)#53 (14) {
      ["dt"]=>
      int(1675972800)
      ["temp"]=>
      float(24,99)
      ["feels_like"]=>
      float(25,48)
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(74)
      ["dew_point"]=>
      float(20,01)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(8)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,42)
      ["wind_deg"]=>
      int(48)
      ["wind_gust"]=>
      float(9,24)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#54 (4) {
          ["id"]=>
          int(800)
          ["main"]=>
          string(5) "Clear"
          ["description"]=>
          string(9) "clear sky"
          ["icon"]=>
          string(3) "01n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [26]=>
    object(stdClass)#55 (14) {
      ["dt"]=>
      int(1675976400)
      ["temp"]=>
      float(24,89)
      ["feels_like"]=>
      float(25,34)
      ["pressure"]=>
      int(1013)
      ["humidity"]=>
      int(73)
      ["dew_point"]=>
      float(19,85)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(9)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,32)
      ["wind_deg"]=>
      int(47)
      ["wind_gust"]=>
      float(9,15)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#56 (4) {
          ["id"]=>
          int(800)
          ["main"]=>
          string(5) "Clear"
          ["description"]=>
          string(9) "clear sky"
          ["icon"]=>
          string(3) "01n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [27]=>
    object(stdClass)#57 (14) {
      ["dt"]=>
      int(1675980000)
      ["temp"]=>
      float(24,8)
      ["feels_like"]=>
      float(25,24)
      ["pressure"]=>
      int(1013)
      ["humidity"]=>
      int(73)
      ["dew_point"]=>
      float(19,75)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(13)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,23)
      ["wind_deg"]=>
      int(46)
      ["wind_gust"]=>
      float(8,99)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#58 (4) {
          ["id"]=>
          int(801)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(10) "few clouds"
          ["icon"]=>
          string(3) "02n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [28]=>
    object(stdClass)#59 (14) {
      ["dt"]=>
      int(1675983600)
      ["temp"]=>
      float(24,78)
      ["feels_like"]=>
      float(25,22)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(73)
      ["dew_point"]=>
      float(19,68)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(25)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,23)
      ["wind_deg"]=>
      int(46)
      ["wind_gust"]=>
      float(9,01)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#60 (4) {
          ["id"]=>
          int(802)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(16) "scattered clouds"
          ["icon"]=>
          string(3) "03n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [29]=>
    object(stdClass)#61 (14) {
      ["dt"]=>
      int(1675987200)
      ["temp"]=>
      float(24,81)
      ["feels_like"]=>
      float(25,23)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(72)
      ["dew_point"]=>
      float(19,5)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(30)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,43)
      ["wind_deg"]=>
      int(45)
      ["wind_gust"]=>
      float(9,19)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#62 (4) {
          ["id"]=>
          int(802)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(16) "scattered clouds"
          ["icon"]=>
          string(3) "03n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [30]=>
    object(stdClass)#63 (14) {
      ["dt"]=>
      int(1675990800)
      ["temp"]=>
      float(24,9)
      ["feels_like"]=>
      float(25,3)
      ["pressure"]=>
      int(1013)
      ["humidity"]=>
      int(71)
      ["dew_point"]=>
      float(19,37)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(53)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,38)
      ["wind_deg"]=>
      int(47)
      ["wind_gust"]=>
      float(9,21)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#64 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [31]=>
    object(stdClass)#65 (14) {
      ["dt"]=>
      int(1675994400)
      ["temp"]=>
      float(25,01)
      ["feels_like"]=>
      float(25,39)
      ["pressure"]=>
      int(1013)
      ["humidity"]=>
      int(70)
      ["dew_point"]=>
      float(19,25)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(65)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,54)
      ["wind_deg"]=>
      int(48)
      ["wind_gust"]=>
      float(9,38)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#66 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [32]=>
    object(stdClass)#67 (14) {
      ["dt"]=>
      int(1675998000)
      ["temp"]=>
      float(25,1)
      ["feels_like"]=>
      float(25,52)
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(71)
      ["dew_point"]=>
      float(19,51)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(58)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,5)
      ["wind_deg"]=>
      int(49)
      ["wind_gust"]=>
      float(9,49)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#68 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [33]=>
    object(stdClass)#69 (14) {
      ["dt"]=>
      int(1676001600)
      ["temp"]=>
      float(25,18)
      ["feels_like"]=>
      float(25,63)
      ["pressure"]=>
      int(1015)
      ["humidity"]=>
      int(72)
      ["dew_point"]=>
      float(19,77)
      ["uvi"]=>
      float(0,92)
      ["clouds"]=>
      int(54)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,36)
      ["wind_deg"]=>
      int(48)
      ["wind_gust"]=>
      float(9,53)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#70 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [34]=>
    object(stdClass)#71 (14) {
      ["dt"]=>
      int(1676005200)
      ["temp"]=>
      float(25,16)
      ["feels_like"]=>
      float(25,64)
      ["pressure"]=>
      int(1015)
      ["humidity"]=>
      int(73)
      ["dew_point"]=>
      float(19,92)
      ["uvi"]=>
      float(3,07)
      ["clouds"]=>
      int(50)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,38)
      ["wind_deg"]=>
      int(49)
      ["wind_gust"]=>
      float(9,58)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#72 (4) {
          ["id"]=>
          int(802)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(16) "scattered clouds"
          ["icon"]=>
          string(3) "03d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [35]=>
    object(stdClass)#73 (14) {
      ["dt"]=>
      int(1676008800)
      ["temp"]=>
      float(25,17)
      ["feels_like"]=>
      float(25,62)
      ["pressure"]=>
      int(1016)
      ["humidity"]=>
      int(72)
      ["dew_point"]=>
      float(19,83)
      ["uvi"]=>
      float(6,33)
      ["clouds"]=>
      int(59)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,43)
      ["wind_deg"]=>
      int(50)
      ["wind_gust"]=>
      float(9,61)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#74 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [36]=>
    object(stdClass)#75 (14) {
      ["dt"]=>
      int(1676012400)
      ["temp"]=>
      float(25,21)
      ["feels_like"]=>
      float(25,69)
      ["pressure"]=>
      int(1015)
      ["humidity"]=>
      int(73)
      ["dew_point"]=>
      float(20,05)
      ["uvi"]=>
      float(9,75)
      ["clouds"]=>
      int(98)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,47)
      ["wind_deg"]=>
      int(47)
      ["wind_gust"]=>
      float(9,85)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#76 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [37]=>
    object(stdClass)#77 (14) {
      ["dt"]=>
      int(1676016000)
      ["temp"]=>
      float(25,24)
      ["feels_like"]=>
      float(25,7)
      ["pressure"]=>
      int(1015)
      ["humidity"]=>
      int(72)
      ["dew_point"]=>
      float(19,92)
      ["uvi"]=>
      float(11,98)
      ["clouds"]=>
      int(99)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,52)
      ["wind_deg"]=>
      int(46)
      ["wind_gust"]=>
      float(9,84)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#78 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [38]=>
    object(stdClass)#79 (14) {
      ["dt"]=>
      int(1676019600)
      ["temp"]=>
      float(25,39)
      ["feels_like"]=>
      float(25,86)
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(72)
      ["dew_point"]=>
      float(20,11)
      ["uvi"]=>
      float(12,19)
      ["clouds"]=>
      int(92)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,33)
      ["wind_deg"]=>
      int(44)
      ["wind_gust"]=>
      float(9,94)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#80 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [39]=>
    object(stdClass)#81 (14) {
      ["dt"]=>
      int(1676023200)
      ["temp"]=>
      float(25,41)
      ["feels_like"]=>
      float(25,91)
      ["pressure"]=>
      int(1013)
      ["humidity"]=>
      int(73)
      ["dew_point"]=>
      float(20,18)
      ["uvi"]=>
      float(8,16)
      ["clouds"]=>
      int(87)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,46)
      ["wind_deg"]=>
      int(42)
      ["wind_gust"]=>
      float(10,03)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#82 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [40]=>
    object(stdClass)#83 (14) {
      ["dt"]=>
      int(1676026800)
      ["temp"]=>
      float(25,47)
      ["feels_like"]=>
      float(25,95)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(72)
      ["dew_point"]=>
      float(20,23)
      ["uvi"]=>
      float(5,59)
      ["clouds"]=>
      int(71)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,46)
      ["wind_deg"]=>
      int(40)
      ["wind_gust"]=>
      float(10,03)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#84 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [41]=>
    object(stdClass)#85 (14) {
      ["dt"]=>
      int(1676030400)
      ["temp"]=>
      float(25,51)
      ["feels_like"]=>
      float(25,97)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(71)
      ["dew_point"]=>
      float(20,03)
      ["uvi"]=>
      float(2,89)
      ["clouds"]=>
      int(62)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(8,84)
      ["wind_deg"]=>
      int(40)
      ["wind_gust"]=>
      float(10,27)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#86 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [42]=>
    object(stdClass)#87 (14) {
      ["dt"]=>
      int(1676034000)
      ["temp"]=>
      float(25,58)
      ["feels_like"]=>
      float(26,05)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(71)
      ["dew_point"]=>
      float(19,92)
      ["uvi"]=>
      float(1,04)
      ["clouds"]=>
      int(34)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(9,15)
      ["wind_deg"]=>
      int(40)
      ["wind_gust"]=>
      float(10,73)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#88 (4) {
          ["id"]=>
          int(802)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(16) "scattered clouds"
          ["icon"]=>
          string(3) "03d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [43]=>
    object(stdClass)#89 (14) {
      ["dt"]=>
      int(1676037600)
      ["temp"]=>
      float(25,59)
      ["feels_like"]=>
      float(26,08)
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(72)
      ["dew_point"]=>
      float(20,27)
      ["uvi"]=>
      float(0,16)
      ["clouds"]=>
      int(44)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(9,12)
      ["wind_deg"]=>
      int(43)
      ["wind_gust"]=>
      float(10,86)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#90 (4) {
          ["id"]=>
          int(802)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(16) "scattered clouds"
          ["icon"]=>
          string(3) "03d"
        }
      }
      ["pop"]=>
      int(0)
    }
    [44]=>
    object(stdClass)#91 (14) {
      ["dt"]=>
      int(1676041200)
      ["temp"]=>
      float(25,42)
      ["feels_like"]=>
      float(25,95)
      ["pressure"]=>
      int(1013)
      ["humidity"]=>
      int(74)
      ["dew_point"]=>
      float(20,43)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(40)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(9,2)
      ["wind_deg"]=>
      int(47)
      ["wind_gust"]=>
      float(10,92)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#92 (4) {
          ["id"]=>
          int(802)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(16) "scattered clouds"
          ["icon"]=>
          string(3) "03n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [45]=>
    object(stdClass)#93 (14) {
      ["dt"]=>
      int(1676044800)
      ["temp"]=>
      float(25,41)
      ["feels_like"]=>
      float(25,94)
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(74)
      ["dew_point"]=>
      float(20,48)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(33)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(9,46)
      ["wind_deg"]=>
      int(44)
      ["wind_gust"]=>
      float(11,19)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#94 (4) {
          ["id"]=>
          int(802)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(16) "scattered clouds"
          ["icon"]=>
          string(3) "03n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [46]=>
    object(stdClass)#95 (14) {
      ["dt"]=>
      int(1676048400)
      ["temp"]=>
      float(25,5)
      ["feels_like"]=>
      float(25,91)
      ["pressure"]=>
      int(1015)
      ["humidity"]=>
      int(69)
      ["dew_point"]=>
      float(19,3)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(41)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(10,79)
      ["wind_deg"]=>
      int(45)
      ["wind_gust"]=>
      float(12,13)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#96 (4) {
          ["id"]=>
          int(802)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(16) "scattered clouds"
          ["icon"]=>
          string(3) "03n"
        }
      }
      ["pop"]=>
      int(0)
    }
    [47]=>
    object(stdClass)#97 (14) {
      ["dt"]=>
      int(1676052000)
      ["temp"]=>
      float(25,38)
      ["feels_like"]=>
      float(25,75)
      ["pressure"]=>
      int(1015)
      ["humidity"]=>
      int(68)
      ["dew_point"]=>
      float(19,1)
      ["uvi"]=>
      int(0)
      ["clouds"]=>
      int(51)
      ["visibility"]=>
      int(10000)
      ["wind_speed"]=>
      float(10,86)
      ["wind_deg"]=>
      int(46)
      ["wind_gust"]=>
      float(12,11)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#99 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04n"
        }
      }
      ["pop"]=>
      int(0)
    }
  }
  ["daily"]=>
  array(8) {
    [0]=>
    object(stdClass)#98 (19) {
      ["dt"]=>
      int(1675843200)
      ["sunrise"]=>
      int(1675824844)
      ["sunset"]=>
      int(1675867545)
      ["moonrise"]=>
      int(1675875300)
      ["moonset"]=>
      int(1675831320)
      ["moon_phase"]=>
      float(0,58)
      ["temp"]=>
      object(stdClass)#100 (6) {
        ["day"]=>
        float(25,53)
        ["min"]=>
        float(25,04)
        ["max"]=>
        float(25,62)
        ["night"]=>
        float(25,23)
        ["eve"]=>
        float(25,56)
        ["morn"]=>
        float(25,16)
      }
      ["feels_like"]=>
      object(stdClass)#101 (4) {
        ["day"]=>
        float(26,25)
        ["night"]=>
        float(25,98)
        ["eve"]=>
        float(26,36)
        ["morn"]=>
        float(25,87)
      }
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(81)
      ["dew_point"]=>
      float(21,93)
      ["wind_speed"]=>
      float(8,05)
      ["wind_deg"]=>
      int(46)
      ["wind_gust"]=>
      float(9,02)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#102 (4) {
          ["id"]=>
          int(500)
          ["main"]=>
          string(4) "Rain"
          ["description"]=>
          string(10) "light rain"
          ["icon"]=>
          string(3) "10d"
        }
      }
      ["clouds"]=>
      int(96)
      ["pop"]=>
      float(0,96)
      ["rain"]=>
      float(1,49)
      ["uvi"]=>
      float(9,39)
    }
    [1]=>
    object(stdClass)#103 (18) {
      ["dt"]=>
      int(1675929600)
      ["sunrise"]=>
      int(1675911237)
      ["sunset"]=>
      int(1675953958)
      ["moonrise"]=>
      int(1675964280)
      ["moonset"]=>
      int(1675919940)
      ["moon_phase"]=>
      float(0,61)
      ["temp"]=>
      object(stdClass)#104 (6) {
        ["day"]=>
        float(25,5)
        ["min"]=>
        float(24,99)
        ["max"]=>
        float(25,53)
        ["night"]=>
        float(24,99)
        ["eve"]=>
        float(25,4)
        ["morn"]=>
        float(24,99)
      }
      ["feels_like"]=>
      object(stdClass)#105 (4) {
        ["day"]=>
        float(26,01)
        ["night"]=>
        float(25,48)
        ["eve"]=>
        float(25,98)
        ["morn"]=>
        float(25,5)
      }
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(73)
      ["dew_point"]=>
      float(20,42)
      ["wind_speed"]=>
      float(8,83)
      ["wind_deg"]=>
      int(43)
      ["wind_gust"]=>
      float(9,36)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#106 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["clouds"]=>
      int(54)
      ["pop"]=>
      int(0)
      ["uvi"]=>
      float(10,34)
    }
    [2]=>
    object(stdClass)#107 (18) {
      ["dt"]=>
      int(1676016000)
      ["sunrise"]=>
      int(1675997630)
      ["sunset"]=>
      int(1676040370)
      ["moonrise"]=>
      int(1676053380)
      ["moonset"]=>
      int(1676008620)
      ["moon_phase"]=>
      float(0,64)
      ["temp"]=>
      object(stdClass)#108 (6) {
        ["day"]=>
        float(25,24)
        ["min"]=>
        float(24,78)
        ["max"]=>
        float(25,59)
        ["night"]=>
        float(25,17)
        ["eve"]=>
        float(25,59)
        ["morn"]=>
        float(25,01)
      }
      ["feels_like"]=>
      object(stdClass)#109 (4) {
        ["day"]=>
        float(25,7)
        ["night"]=>
        float(25,52)
        ["eve"]=>
        float(26,08)
        ["morn"]=>
        float(25,39)
      }
      ["pressure"]=>
      int(1015)
      ["humidity"]=>
      int(72)
      ["dew_point"]=>
      float(19,92)
      ["wind_speed"]=>
      float(10,86)
      ["wind_deg"]=>
      int(46)
      ["wind_gust"]=>
      float(12,13)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#110 (4) {
          ["id"]=>
          int(804)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(15) "overcast clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["clouds"]=>
      int(99)
      ["pop"]=>
      int(0)
      ["uvi"]=>
      float(12,19)
    }
    [3]=>
    object(stdClass)#111 (19) {
      ["dt"]=>
      int(1676102400)
      ["sunrise"]=>
      int(1676084022)
      ["sunset"]=>
      int(1676126781)
      ["moonrise"]=>
      int(1676142540)
      ["moonset"]=>
      int(1676097360)
      ["moon_phase"]=>
      float(0,67)
      ["temp"]=>
      object(stdClass)#112 (6) {
        ["day"]=>
        float(25,26)
        ["min"]=>
        float(24,52)
        ["max"]=>
        float(25,4)
        ["night"]=>
        float(25,28)
        ["eve"]=>
        float(25,4)
        ["morn"]=>
        float(24,68)
      }
      ["feels_like"]=>
      object(stdClass)#113 (4) {
        ["day"]=>
        float(25,67)
        ["night"]=>
        float(25,9)
        ["eve"]=>
        float(26,01)
        ["morn"]=>
        float(25,14)
      }
      ["pressure"]=>
      int(1016)
      ["humidity"]=>
      int(70)
      ["dew_point"]=>
      float(19,44)
      ["wind_speed"]=>
      float(9,96)
      ["wind_deg"]=>
      int(49)
      ["wind_gust"]=>
      float(11,31)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#114 (4) {
          ["id"]=>
          int(500)
          ["main"]=>
          string(4) "Rain"
          ["description"]=>
          string(10) "light rain"
          ["icon"]=>
          string(3) "10d"
        }
      }
      ["clouds"]=>
      int(40)
      ["pop"]=>
      float(0,28)
      ["rain"]=>
      float(0,12)
      ["uvi"]=>
      float(10,48)
    }
    [4]=>
    object(stdClass)#115 (19) {
      ["dt"]=>
      int(1676188800)
      ["sunrise"]=>
      int(1676170412)
      ["sunset"]=>
      int(1676213192)
      ["moonrise"]=>
      int(1676231880)
      ["moonset"]=>
      int(1676186220)
      ["moon_phase"]=>
      float(0,71)
      ["temp"]=>
      object(stdClass)#116 (6) {
        ["day"]=>
        float(25,46)
        ["min"]=>
        float(25,05)
        ["max"]=>
        float(25,64)
        ["night"]=>
        float(25,39)
        ["eve"]=>
        float(25,64)
        ["morn"]=>
        float(25,05)
      }
      ["feels_like"]=>
      object(stdClass)#117 (4) {
        ["day"]=>
        float(26,12)
        ["night"]=>
        float(26,05)
        ["eve"]=>
        float(26,3)
        ["morn"]=>
        float(25,65)
      }
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(79)
      ["dew_point"]=>
      float(21,55)
      ["wind_speed"]=>
      float(9,09)
      ["wind_deg"]=>
      int(42)
      ["wind_gust"]=>
      float(11,07)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#118 (4) {
          ["id"]=>
          int(500)
          ["main"]=>
          string(4) "Rain"
          ["description"]=>
          string(10) "light rain"
          ["icon"]=>
          string(3) "10d"
        }
      }
      ["clouds"]=>
      int(51)
      ["pop"]=>
      float(0,62)
      ["rain"]=>
      float(0,99)
      ["uvi"]=>
      float(9,21)
    }
    [5]=>
    object(stdClass)#119 (19) {
      ["dt"]=>
      int(1676275200)
      ["sunrise"]=>
      int(1676256802)
      ["sunset"]=>
      int(1676299602)
      ["moonrise"]=>
      int(1676321460)
      ["moonset"]=>
      int(1676275380)
      ["moon_phase"]=>
      float(0,75)
      ["temp"]=>
      object(stdClass)#120 (6) {
        ["day"]=>
        float(25,13)
        ["min"]=>
        float(25,09)
        ["max"]=>
        float(25,66)
        ["night"]=>
        float(25,66)
        ["eve"]=>
        float(25,64)
        ["morn"]=>
        float(25,31)
      }
      ["feels_like"]=>
      object(stdClass)#121 (4) {
        ["day"]=>
        float(25,58)
        ["night"]=>
        float(26,14)
        ["eve"]=>
        float(26,04)
        ["morn"]=>
        float(25,7)
      }
      ["pressure"]=>
      int(1014)
      ["humidity"]=>
      int(72)
      ["dew_point"]=>
      float(19,83)
      ["wind_speed"]=>
      float(8,81)
      ["wind_deg"]=>
      int(51)
      ["wind_gust"]=>
      float(9,6)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#122 (4) {
          ["id"]=>
          int(500)
          ["main"]=>
          string(4) "Rain"
          ["description"]=>
          string(10) "light rain"
          ["icon"]=>
          string(3) "10d"
        }
      }
      ["clouds"]=>
      int(100)
      ["pop"]=>
      float(0,2)
      ["rain"]=>
      float(0,12)
      ["uvi"]=>
      float(7,29)
    }
    [6]=>
    object(stdClass)#123 (19) {
      ["dt"]=>
      int(1676361600)
      ["sunrise"]=>
      int(1676343191)
      ["sunset"]=>
      int(1676386011)
      ["moonrise"]=>
      int(0)
      ["moonset"]=>
      int(1676364780)
      ["moon_phase"]=>
      float(0,78)
      ["temp"]=>
      object(stdClass)#124 (6) {
        ["day"]=>
        float(25,23)
        ["min"]=>
        float(24,69)
        ["max"]=>
        float(25,4)
        ["night"]=>
        float(25,36)
        ["eve"]=>
        float(25,4)
        ["morn"]=>
        float(24,69)
      }
      ["feels_like"]=>
      object(stdClass)#125 (4) {
        ["day"]=>
        float(25,74)
        ["night"]=>
        float(25,86)
        ["eve"]=>
        float(25,9)
        ["morn"]=>
        float(25,17)
      }
      ["pressure"]=>
      int(1013)
      ["humidity"]=>
      int(74)
      ["dew_point"]=>
      float(20,24)
      ["wind_speed"]=>
      float(6,66)
      ["wind_deg"]=>
      int(53)
      ["wind_gust"]=>
      float(7,75)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#126 (4) {
          ["id"]=>
          int(500)
          ["main"]=>
          string(4) "Rain"
          ["description"]=>
          string(10) "light rain"
          ["icon"]=>
          string(3) "10d"
        }
      }
      ["clouds"]=>
      int(93)
      ["pop"]=>
      float(0,2)
      ["rain"]=>
      float(0,64)
      ["uvi"]=>
      int(8)
    }
    [7]=>
    object(stdClass)#127 (18) {
      ["dt"]=>
      int(1676448000)
      ["sunrise"]=>
      int(1676429579)
      ["sunset"]=>
      int(1676472420)
      ["moonrise"]=>
      int(1676411340)
      ["moonset"]=>
      int(1676454600)
      ["moon_phase"]=>
      float(0,81)
      ["temp"]=>
      object(stdClass)#128 (6) {
        ["day"]=>
        float(25,3)
        ["min"]=>
        float(24,98)
        ["max"]=>
        float(25,36)
        ["night"]=>
        float(25,12)
        ["eve"]=>
        float(25,21)
        ["morn"]=>
        float(24,98)
      }
      ["feels_like"]=>
      object(stdClass)#129 (4) {
        ["day"]=>
        float(25,74)
        ["night"]=>
        float(25,62)
        ["eve"]=>
        float(25,69)
        ["morn"]=>
        float(25,41)
      }
      ["pressure"]=>
      int(1012)
      ["humidity"]=>
      int(71)
      ["dew_point"]=>
      float(19,59)
      ["wind_speed"]=>
      float(8,18)
      ["wind_deg"]=>
      int(55)
      ["wind_gust"]=>
      float(8,6)
      ["weather"]=>
      array(1) {
        [0]=>
        object(stdClass)#130 (4) {
          ["id"]=>
          int(803)
          ["main"]=>
          string(6) "Clouds"
          ["description"]=>
          string(13) "broken clouds"
          ["icon"]=>
          string(3) "04d"
        }
      }
      ["clouds"]=>
      int(65)
      ["pop"]=>
      int(0)
      ["uvi"]=>
      int(8)
    }
  }
}

Sieht doch eigentlich ganz gut, aus - oder?

Hmm, jetzt scheint auch die Fehlermeldung nicht mehr zu kommen.

Und auch bei morgen, die rote Linie hat jetzt einen Ausschlag - zuvor war die immer nur flach am Boden.

Sollte somit behoben sein, oder?

Der Fehler ist dann wohl weg. Vielleicht war dein Konto noch nicht final freigeschaltet.

1 „Gefällt mir“

Doch noch eine Frage - die Werte aus Solcast sehen mir seltsam aus, zum einen der Ertrag und zum anderen die Uhrzeiten. Ich habe angegeben wie oben angegeben, die Adresse, Winkel 10° und Azimuth 180 (Südausrichtung). Muss aber da nicht auch was wie eine Kapazität sein, um den Wert zu berechnen? Ausserdem sehen die mir komplett falsch aus (die anderen sehen aber gut aus).

Hast du eine Idee @bumaas - und natürlich jeder andere ;).

Habe jetzt auch mal mit Solcast.com rumgespielt. Leider ist vom Originalscript bei mir nicht viel über geblieben :slight_smile: und es flackt auch noch alles einzeln rum. Zeitsteurung fehlt auch noch und und und … aber

Habe bei der Kurve alle Werte rausgefeuert wo eh Null ist :slight_smile:

Danke für die Idee!

Gruß HEiko

2 „Gefällt mir“

Sieht wie immer 1a aus. Kann ich mal bei dir ne Lehre machen über PHP? :wink: :wink:

1 „Gefällt mir“

Haha, da gibt es viel bessere hier … aber Danke!

Also die Daten von solcast kommen mir auch komisch vor, die sind ja zum Teil doppelt so hoch wie von solarprognose! Sehr merkwürdig!

Ich nehm alles zurück, da ist wohl bei mir ein Fehler im Scrikt. Aufgrund der halbstündlichen Werte habe ich sie zur Stunde zusammenkopiert, das ist natürlich falsch :frowning:

Also alles gut!

Moin Moin,

Ich bekomme regelmäßig folgende Fehlermeldung. Kann jemand was dazu sagen?

Danke und Gruß Michael

Hi,

Hi Pitti, kannst du mir sagen, was du wo geändert hast? Bei mir sind die Werte auch recht hoch und ich sehe im Admininterface bei Solcast das die Werte auch auf 30 Minuten stehe, denke das ich ebenfalls deswegen so hohe Werte habe.

Danke dir.

Hi,

ich habe leider das Script komplett " reassimiliert" :slight_smile: … da ist kein Stein auf dem anderen geblieben!

Leider aus Zeitmangel noch nicht fertig, hatte mich erstmal mit solarprognose.de auseinandergesetzt!
Das ist jetzt aber fertig und kommt heute oder morgen hier ins Forum. Danach mach ich solcast.com hübsch :wink:

Falls Du selber schon basteln willst - hier was ich habe …

Ich nutze die Urls die man wie im Screen sich kopieren kann (also mit der Ressource-ID)

Habe dementsprechend das globale Array erweitert (viele Dinge brauch man auch nicht mehr, hab sie aber trotzdem drin gelassen - vorerst :slight_smile:

# Erste Anlage
$PVA['Garage'] = [ 
    'rid'        => '<hier Resource ID eintragen>',
    'kwp'        => '7.5', 
    'azimuth'    => 150,
    'tilt'       => 10,
    'efficiency' => 100,
    'lon'        => '48.xxxx', // richtige Werte eintragen
    'lat'        => '11.xxxx', // richtige Werte eintragen
];

Und dann habe ich 2 Funktionen:

function UpdateData($data)
{
    $fc = [];
    $hcount =0;
    foreach($data['forecasts'] as $o){
        $hour = date('H',strtotime($o['period_end']));
        $day  = date('z',strtotime($o['period_end'])) - date('z');
        if(isset($fc[$day][$hour])) {
            $fc[$day][$hour]['norm'] = ($fc[$day][$hour]['norm'] + $o['pv_estimate']) / 2;
            $fc[$day][$hour]['poor'] = ($fc[$day][$hour]['poor'] + $o['pv_estimate10']) / 2 ;
            $fc[$day][$hour]['more'] = ($fc[$day][$hour]['more'] + $o['pv_estimate90']) / 2;
        }
        else {
            $fc[$day][$hour] = [
                'hour'  => $hour,
                'norm'  => $o['pv_estimate'],
                'poor'  => $o['pv_estimate10'],
                'more'  => $o['pv_estimate90'],
            ];
        }
    }

    $eff = $plant["efficiency"] / 100;

    //Morgen und Mittagswerte
    foreach($fc as $d => $day){
        $n_am = 0; $n_pm = 0;
        $p_am = 0; $p_pm = 0;
        $m_am = 0; $m_pm = 0;
        foreach($day as $hour){
            if($hour["hour"] <13 ){
                $n_am += $hour["norm"];
                $p_am += $hour["poor"];
                $m_am += $hour["more"];
            }else{
                $n_pm += $hour["norm"];
                $p_pm += $hour["poor"];
                $m_pm += $hour["more"];
            }
        }
        $fc[$d]["norm"] = ['am' => $n_am * $eff, 'pm' => $n_pm * $eff, 'all' => ($n_am + $n_pm) * $eff];
        $fc[$d]["poor"] = ['am' => $p_am * $eff, 'pm' => $p_pm * $eff, 'all' => ($p_am + $p_pm) * $eff];
        $fc[$d]["more"] = ['am' => $m_am * $eff, 'pm' => $m_pm * $eff, 'all' => ($m_am + $m_pm) * $eff];
    }
    return $fc;
}

function SolCastData($token, $plant, $forecast) 
{
    // Which data
    $url = 'https://api.solcast.com.au/rooftop_sites/' . $plant['rid'];
    if($forecast) {
        $url .= '/forecasts?format=json';
    } else {
        $url .= '/estimated_actuals?format=json';
    }

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 0);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
    curl_setopt($ch, CURLOPT_ENCODING, '');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json', 
        'Authorization: Bearer ' . $SO_APIKEY
        ]);
    $response = curl_exec($ch);
    if ($response === false) {
        throw new ErrorException(curl_error($ch));
    }
    curl_close($ch);
//    $response = $SO_JSON;
    $data = json_decode($response, true);
   // print_r($data);
   return $data;
}

Weiter bin ich noch nicht wirklich :frowning: Aber in UpdateData kann man sehen wie die Daten aufaddiert und dann für die Stunde gemittelt werden (geteilt durch 2).

Rest kommt noch!

Heiko

1 „Gefällt mir“

sorry, dass ich jetzt erst antworte. ich war etwas beschäftigt mit einer Wärmepumpe über den Winter da hat PV nicht den riesen Walzer gespielt.
Allerdings waren im Modul ein paar Fehler drin.
Ich habe das jetzt nochmals umgebaut und es nutzt nun die ‚Globalstrahlung‘ der nächsten DWD Wetterstation um den Ertrag zu berechnen. Dieser sollte m.E. besser sein.
wer Lust hat, kann gerne testen. Meine Werte passen jetzt relativ gut die letzten Tage
stele99/pvForecast (github.com)

1 „Gefällt mir“

Hi Stele99,

Danke für Dein Modul - gerade installiert!

  • die Funktion Update() liefert bei mir false zurück :frowning:
  • pvFC_getForecast liefert ein Array mit Daten, aber nur die Wetterinfos sind gefüllt - pv_estimate ist immer 0

Was mache ich falsch? Hier mal meine Daten …

Hallo,
Du benötigst eine Wetterstation die die Einstrahlung liefert.
Das liefern leider nicht alle.
Probier mal eine andere in der Nähe.

Nach der Änderung musst du ggf noch aus einem Skript forceupdate aufrufen

Ah, okay! kann man das irgendwie erkennen ob Einstrahlung oder nicht?

Moin Moin,

und danke für die Aktualisierung…. Frage: kann man das Chart auch so konfigurieren, dass nur der aktuelle Tag angezeigt wird und nicht die nächsten 24 Std. Ggf. habe ich da auch was noch nicht verstanden.

Gruß Michael

Hallo zusammen,
ich habe nun eine Prüfung eingebaut, dass die Wetterstation prüft und ebenso prüft, ob die Strahlungswerte vorhanden sind.
Falls keine Strahlungswerte geliefert werden, bitte andere Wetterstation in der nähe auswählen.