IPS_SetName ändert Name der Hauptkategorie

Hallo,

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.

Vielleicht kann mir jemand helfen…

Der Root ist die 0. Sicher dass es dieses Skript ist?

paresy

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.

Oder der Fehler liegt in meiner For Schleife.
Nicht das der beim ersten Schleifendurchlauf irgendwie ne 0 rein bringt.

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?

1 „Gefällt mir“

Ich schaue mir Abends mal das Originalskript an.
Die Hauptkategorie wird jedesmal überschrieben.

Poste dann die Ausgabe von vardump.

Meine Vermutung.

Fehler im Index der For Schleife.
Der Index zählt z.B. von 0 bis 10 hoch, also müssten im array 11 Positionen sein.

Wenn ich jetzt aber nur 10 Positionen [Objekt IDs] im array habe, könnte bei Positionen 11,da vielleicht die Kategorie 0 interpretiert werden.

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

1 „Gefällt mir“

Also es lag an dem fehlenden Index, die Schleife lief einen Index zu weit, deswegen (false) und dies wird als 0 interpretiert.

Ich werde in Zukunft mit "count§ arbeiten.

Danke Euch…

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.

1 „Gefällt mir“

Ja das war nicht das original.

Im Original Skript ging der index um +1 über die Anzahl der tatsächlichen Elemente im Array hinaus.

Alles gut, das Problem lag bei mir, an Symcon liegt es nicht.