Abfrage Solarprognose

Scheint so, als ob in dem array $daten nichts (of type null) drinnen ist. was kommt bei var_dump($daten); raus? Wahrscheinlich auch NULL.

Hallo,

Problem gelöst … ich hatte ein paar Zeilen Code versehentlich gelöscht …

Grüße
Proxima

Dann wird mein Problem auch gelöst sein, hab das Skript von dir kopiert. :smiley:

Edit: Problem bleibt trotzdem bestehen.

Ja kommt bei mir NULL raus.

Wenn ich jetzt dein Original Skript nehme und den $endtag=4; setze funktioniert dein Skript. Das geht bei mir auch ohne die ID’s anzugeben und es werden auch bei dem Ergebnis meine zwei Modulfelder berücksichtigt und addiert. Da habe ich nur noch einen Schönheitsfehler drin bei dem Stundenwert geht bei dem Datum der farbige Balken nicht bis rechts an den Rand.

Bei der Version von pitti funktioniert es nicht:

<?php

function datenholen($typ,$start,$end)
{
$SP_TOKEN   = "Q7H0qOFa74Yxxxxxxxxxxxxxxxxxx";
$SP_ITEM    = 'location';
$SP_PROJECT = "xxxxxxxxxxxx@kabelmail.de";
$SP_FORMAT  = 'json';
$SP_TYPE    = 'hourly';
$SP_ID      = 'xxxx';
$SP_START   = 0;
$SP_END     = 4;

  $url="https://www.solarprognose.de/web/solarprediction/api/v1?access-token=$SP_TOKEN&project=$SP_PROJECT&item=$SP_ITEM&id=$SP_ID&type=$SP_TYPE&_format=$SP_FORMAT&algorithm=own-v1&start_day=$SP_START&end_day=$SP_END";
  
}
$tageswerteid=10605; //Stringvariable mit dem Profil ~HTMLBox
$stundenwerteid=38649; //Stringvariable mit dem Profil ~HTMLBox
$starttag=0; //0 aktueller Tag
$endtag=4; //die nächsten Tage
//Tagesdaten aufbereiten
$daten=json_decode(datenholen("daily",$starttag,$endtag),true); //Start- und Endtag an den eigenen Tarif anpassen
//$daten=json_decode($daten_taeglich,true);
$Liste_HTML = "";
$Liste_HTML = $Liste_HTML."<table class=\"wwx\" border=\"1\" style=\"width:100%\">";    
$Liste_HTML = $Liste_HTML."<tr>";
$Liste_HTML = $Liste_HTML."<thead class=\"blue\">";
//Tageswerte Kopf
for ($i=$starttag; $i<=$endtag; $i++)
{
    $Liste_HTML=$Liste_HTML."<th><center>".date("d.m.Y",time()+(3600*24)*$i)."</center></th>";
}
$Liste_HTML=$Liste_HTML."</tr></thead>";
//Tageswerte Zeile
$Liste_HTML=$Liste_HTML."<tr>";
for ($i=$starttag; $i<=$endtag; $i++)
{
    $Liste_HTML=$Liste_HTML."<td><center>".$daten["data"][date("Ymd",time()+(3600*24)*$i)]." kWh</center></td>";
}
$Liste_HTML=$Liste_HTML."</tr></table";
setvalue($tageswerteid,$Liste_HTML);

//Stündliche Daten
$daten=json_decode(datenholen("hourly",$starttag,$endtag),true);
$i=0;
$Liste_HTML = "";
$Liste_HTML_erg="";
$Liste_HTML_ergs="";
$datum=0;
$zeit=0;
$Liste_HTML = $Liste_HTML."<table class=\"wwx\" border=\"1\" style=\"width:100%\">";    
//var_dump($daten["data"]);
foreach ($daten["data"] as $stunde)
{
    //Datum aus dem Array Index ermitteln
	$timestamp=array_keys($daten["data"])[$i];
    if ($datum!=date("d.m.Y",$timestamp))
    {
        //ab Zeile 2 die vorige Zeile anhängen und die Zeitenzeile schließen
        if ($i>0)
        {
            $Liste_HTML=$Liste_HTML."</tr></thead>";
            $Liste_HTML_erg=$Liste_HTML_erg."</tr>";
            $Liste_HTML_ergs=$Liste_HTML_ergs."</tr>";
            $Liste_HTML=$Liste_HTML.$Liste_HTML_erg.$Liste_HTML_ergs;
            $Liste_HTML_erg="";        
            $Liste_HTML_ergs="";
        }
        //Datumskopf
        $datum=date("d.m.Y",$timestamp);
        $Liste_HTML=$Liste_HTML."<tr><thead class=\"blue\"><th colspan=\"11\"><center>".date("d.m.Y",$timestamp)."</center></th></thead></tr>";
        //Beginn Kopf für Zeiten
        $Liste_HTML=$Liste_HTML."<tr><thead class=\"blue\">";

        $Liste_HTML_erg=$Liste_HTML_erg."<tr>";
        $Liste_HTML_ergs=$Liste_HTML_ergs."<tr>";
    }
    //Zeiten
    if ($zeit<strtotime(date("G:i:s",$timestamp)))
    {
        $zeit=strtotime(date("G:i:s",$timestamp));
        $Liste_HTML=$Liste_HTML."<th><center>".date("G:i",$timestamp)."</center></th>";
        $Liste_HTML_erg=$Liste_HTML_erg."<td>".$stunde[0]." kW</td>";
        $Liste_HTML_ergs=$Liste_HTML_ergs."<td>".$stunde[1]." kWh</td>";
    }
    else
    {
        $zeit=0;
        $Liste_HTML=$Liste_HTML."<tr><thead class=\"blue\">";
        $Liste_HTML=$Liste_HTML."<th><center>".date("G:i",$timestamp)."</center></th>";
        $Liste_HTML_erg=$Liste_HTML_erg."<tr>";    
        $Liste_HTML_ergs=$Liste_HTML_ergs."<tr>";    
        $Liste_HTML_erg=$Liste_HTML_erg."<td>".$stunde[0]." kW</td>";        
        $Liste_HTML_ergs=$Liste_HTML_ergs."<td>".$stunde[1]." kWh</td>";        
    }
	$i++;
}
//letzte Zeile anhängen
$Liste_HTML=$Liste_HTML."</tr></thead>";
$Liste_HTML_erg=$Liste_HTML_erg."</tr>";
$Liste_HTML_ergs=$Liste_HTML_ergs."</tr>";
$Liste_HTML=$Liste_HTML.$Liste_HTML_erg.$Liste_HTML_ergs;
$Liste_HTML = $Liste_HTML."</table>";
setvalue($stundenwerteid,$Liste_HTML);

Meldungen:

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/15453.Solarprognose.ips.php on line 56

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/15453.Solarprognose.ips.php on line 56

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/15453.Solarprognose.ips.php on line 56

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/15453.Solarprognose.ips.php on line 56

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/15453.Solarprognose.ips.php on line 56

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/15453.Solarprognose.ips.php on line 56

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/15453.Solarprognose.ips.php on line 56

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/15453.Solarprognose.ips.php on line 56

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/15453.Solarprognose.ips.php on line 56

Notice: Trying to access array offset on value of type null in /var/lib/symcon/scripts/15453.Solarprognose.ips.php on line 56
Abort Processing during exceed of maximal ErrorCount: Trying to access array offset on value of type null
   Error in Script /var/lib/symcon/scripts/15453.Solarprognose.ips.php on Line 71

Da fehlen nach $url zwei Zeilen …

	$datenjson=file_get_contents($url);
	return $datenjson;

Danke für den Tipp, aber ändert erstmal nichts. Fehler wurde um zwei Zeilen verschoben.

Ach ja, da war noch was … warte mal …

Ich hatte mehrere Fehler gemacht:

  1. Oben steht was von ‚location‘, ich habe aber die ID von der Anlage genommen, nicht vom Standort
  2. Hatte ich in die URL die Variablen $SP_… eingetragen. Es muss statt:
&type=$SP_TYPE&

dies eingetragen werden:

&type=$typ&

und statt:

&start_day=$SP_START&end_day=$SP_END"

muss es so lauten:

&start_day=$start&end_day=$end"

da der Typ und die Start-/Endtage beim Funktionsaufruf mitgegeben werden. Wenn der Typ falsch ist, wird das Array mit Datum anstatt Unix-Timestamp als Index erzeugt.

Ich habe die URL von Heiko probiert die er geändert hat:

$url="https://www.solarprognose.de/web/solarprediction/api/v1?access-token=$token&project=$project&item=$item&id=$id&type=$typ&_format=$format&algorithm=own-v1&start_day=$start&end_day=$end";

Bei ‚location‘ habe ich die Anlagen ID rein geschrieben. Dann wäre aber diese ID zweimal vorhanden. Bei $SP_ID; habe ich die auch eingetragen. Habe bei ‚location‘ auch schon die ID des Standortes eingetragen, nichts ändert sich.

Funktioniert nicht.

Mir hat es geholfen die URL im Browser zu öffnen …

Bei mir kommt da im Skript auch:

Warning: file_get_contents(https://www.solarprognose.de/web/solarprediction/api/v1?access-token=&project=&item=&id=&type=daily&_format=&algorithm=own-v1&start_day=0&end_day=4): failed to open stream: HTTP request failed! HTTP/1.1 406 Not Acceptable
 in /var/lib/symcon/scripts/15453.Solarprognose.ips.php on line 33

Sicher das die Platzhalter ersetzt werden? Baust Du die URL mit einfachen oder doppelten Hochkommas? nur bei Doppelten werden sie im String ersetzt!

Gruß Heiko

Ich habe diese URL im Skript:

$url="https://www.solarprognose.de/web/solarprediction/api/v1?access-token=$token&project=$project&item=$item&id=$id&type=$typ&_format=$format&algorithm=own-v1&start_day=$start&end_day=$end";

Ich dachte nur weil in der Fehlermeldung immer noch die Parameter leer bzw. fehlen?

Sicher das die nicht leer sind?

Meinst du die Parameter: Token etc.?

1 „Gefällt mir“

Ja genau ! Weil die Fehlermeldung sagt ja eigentlich wonach man suchen muss!

Alles drin, bei $SP_ITEM habe ich schon die Anlagen ID und auch die Standort ID eingefügt.

d.h. du hast die Ausgabe manipuliert und somit kann ich gar nicht den Fehler wirklich sehen :frowning:

Haste Sonderzeichen/Umlaute oder sonst was drin?

Soll bei $SP_ITEM das location drin bleiben?

Sonderzeichen oder Umlaute sind keine drin.

Ja, also ich habe auch „&item=location“ drin!

Am besten Script posten dann kann man schnell den Fehler finden!