ich rufe in diser Weise die Daten von Solcast auf.
<?php
$APIkey = "xxxxxxxxx"; // Hier den API Key eintragen
$content = Sys_GetURLContent("https://api.solcast.com.au/rooftop_sites/Resource Id/forecasts?format=json&api_key=".$APIkey); // Resource Id ersetzen
$json = json_decode($content,true);
$forecasts=$json['forecasts'];
$ids30min=array(46525,
27334,
15895,
25566,
25662,
19547,
14345);
for ($i = 0; $i <= 6; $i++)
{
setvalue($ids30min[$i],$forecasts[$i]["pv_estimate"]);
IPS_SetName($ids30min[$i],"Ertrag 30m bis ".date("H:i",strtotime($forecasts[$i]["period_end"])));
}
Das funktioniert auch soweit, nur ändert anscheinend IPS_SetName auch den Namen meiner Hauptkategorie.
Im Objektbaum sehe ich beim Ordner Hauptkategorie nicht mal eine ID.
Wie kann das sein??
Normal kann das nur sein wenn ich aus meinem Skript die ID der Hauptkategorie anspreche, dass tue ich aber nicht, weil ich die ID nicht mal weiß, ausser eine ID ist zufällig doppelt vergeben und die habe ich in meinem Skript.
Das ist dieses Skript weil ich das seit gestern am laufen habe.
Wenn ich die Haptkategorie von Hand umbenenne,
dann das Skript ausführe, wird die Hauptkategorie sofort wieder umbenannt.
Ich werde am Abend, das Originalskript posten, sowie einen Screenshots von meinem Objektbaum.
Das Orginalskript ist aber auch nicht viel anders als dass was ich gepostet habe.
Die Objekt ID 0, spreche ich aber definitiv nicht mit IPS_SetName an.
Das sieht vom Skript her eigentlich alles richtig aus. Wird jedes mal die Hauptkategorie bei Ausführung des Skripts umbenannt? Sonst kannst du ja mal per echo oder var_dump an ein paar Stellen Infos ausgeben und das Skript im Editor ausführen um die Infos direkt zu betrachten, aber das wird wahrscheinlich nur bestätigen, dass die Hauptkategorie vom Skript nicht direkt angerührt wird. Kann es aber vielleicht sein, dass durch irgendwelche Ereignisse an den angepassten Variablen da ungeplante Automatismen starten und die Hauptkategorie umbenennen?
Ein fehlender Index liefert gerne false, was bei Funktion wo eine Integer (SetValue, SetName) als Parameter erwartet wird dann zu einer 0 wird.
Und das ist die Hauptkategorie.
Darum auch bei for nicht mit festen Index arbeiten, sondern mit Count() oder gleich mit foreach.
Dann ist die Größe vom Array egal.
Michael
Dann hast du aber noch Anpassungen am Skript vorgenommen, oder? Denn das Array beinhaltet in deinem Code 7 Einträge und somit geht der Index wie in der Schleife gefordert von 0 bis 6.