Problem mit IPS_GetReferenceList()

Hallo,

ich prüfen gerade, ob alle Referenzen von Instanzen i.O. sind und bin da auf etwas gestossen, was ich nicht verstehe

<?php

declare(strict_types=1);

$instanceList = IPS_GetInstanceList();
foreach ($instanceList as $id) {
    $refIDs = IPS_GetReferenceList($id);
    $badIDs = [];
    foreach ($refIDs as $refID) {
        if (!IPS_ObjectExists($refID))
            $badIDs[] = $refID;
    }
    if ($badIDs == false)
        continue;
    $inst = IPS_GetInstance($id);
    $moduleName = $inst['ModuleInfo']['ModuleName'];
    echo 'Instanz #' . $id . '(' . IPS_GetLocation($id) . ') - ' . $moduleName . ': refIDs=' . implode(',', $refIDs) . ', bad=' . implode(',', $badIDs) . PHP_EOL;
}

ergibt folgenden Output

Instanz #11222(Zuhause (Daniel)) - WebFront Visualization: refIDs=33858,65535, bad=65535
Instanz #44745(Zuhause (Ibo)) - WebFront Visualization: refIDs=33858,65535, bad=65535
Instanz #53910(Zuhause (Jaana)) - WebFront Visualization: refIDs=33858,65535, bad=65535
Instanz #15842(Zuhause (Demel)) - WebFront Visualization: refIDs=33858,65535, bad=65535

Bei 4 von 6 Visualisierungen wird per IPS_GetReferenceList() ein referenziertes Objekt 65535 angegeben - und das gibt es nicht in meinem IPS und auch nicht in settings.json.

Die hier ebenfalls ausgegebene Referenz 33858 ist korrekt, das die die Startkategorie für WebFront Mobile.

Hat jemand eine Idee, was das sein könnte?

Meine Version: IP-Symcon 5.5, Ubuntu, 11.05.2021, dedc6e9b6692

Magst du dir mal per IPS_GetConfiguration die Konfiguration von den Instanzen holen. Steht dort die 65535 drin? Die wird verwendet als „ungültige“ ID, welche dann die intern gespeicherte MobileID zurückgibt. Diese sollte aber eigentlich nirgends gespeichert sein/werden.

paresy

Hallo,

Das ist das Ergebnis des IPS_GetConfiguration()

{"Skin":"","Nested":true,"BooleanCheckBox":true,"Password":"xxxxx","IgnorePasswordOnLAN":false,"AutoStart":"[]","Items":"[{\"ParentID\":\"\",\"Visible\":true,\"Configuration\":\"{\\\"subTitle\\\":\\\"IP-Symcon\\\", \\\"subIcon\\\":\\\"IPS\\\"}\",\"Position\":0,\"ID\":\"roottp\",\"ClassName\":\"TabPane\"},{\"ParentID\":\"roottp\",\"Visible\":true,\"Configuration\":\"{\\\"title\\\":\\\"Zuhause\\\",\\\"baseID\\\":33858}\",\"Position\":0,\"ID\":\"root\",\"ClassName\":\"Category\"},{\"ParentID\":\"roottp\",\"Visible\":false,\"Configuration\":\"\",\"Position\":1,\"ID\":\"dwd\",\"ClassName\":\"DWD\"},{\"ParentID\":\"roottp\",\"Visible\":true,\"Configuration\":\"\",\"Position\":0,\"ID\":\"clock\",\"ClassName\":\"ClockWidget\"}]","GraphHighDensity":false,"GraphRawDensity":false,"GraphShowExtrema":false,"GraphDynamicScaling":false,"GraphShowLegend":false,"GraphContinuousSpan":false,"GraphTimeSpan":1,"EnableMobile":true,"MobileID":33858,"EnableRetro":false,"RetroID":-1,"RetroRefresh":30,"EnableRetroMobile":false,"RetroMobileID":-1,"RetroMobileRefresh":30}

da sehe ich nichts. ich habe es gerade durch probieren gefunden:

Immer da, wo „Kein(e)“ als Startkategorie eingetragen ist, gibt es diesen Wert.

das kann man auch gar nicht wieder so eintragen, wenn man den Eintrag lösche (x), dann sieht da immer die Root (IP-Symcon) drin.

Fehler?

demel

ps: ich sehe, der Wert von z.B. „RetroID“ ist „-1“

Der Wert -1 ist nicht gültig. Eigentlich sollte der Wert auch vor langer zeit mal migriert werden. Da die Retro/RetroMobile Felder zur 6.0 verschwinden, wird sich das Problem von alleine lösen.

paresy

okidoki, ist ja auch jetzt (wo ich es verstanden habe) leicht zu korrigieren.

demel