Kategorie recursiv durchsuchen

Hallo,
Ich habe mal eine Frage zu einem Problem. Wie kann ich eine Kategorie inkl. Unterkategorien und Instanzen komplett nach einer Variablen mit einem bestimmten Ident durchsuchen?

Ralf

Was möchtest du denn genau machen? Vielleicht gibt es ja eine einfachere Lösung als eine Recursive Funktion zu bauen die genau das tut?

paresy

Hi,
im Prinzip fast das Gegenteil vom Watchdog. Ich habe Geräte die ein OTA-Update anbieten und es mit einer Boolean ankündigen. Ich hatte dafür schon einen Watchdog eingerichtet bevor ich merkte das ich den nicht gebrauchen kann.

Ich wollte diese Variablen überwachen und wenn es ein True gibt eine Mail an mich schicken. Mit recursiv hätte ich es gerne weil diese Variable von den Geräten dynamisch erzeugt werden kann, d.h. auf einmal ist die Variable da ohne das ich es mitbekomme. Weiterer Vorteil ist das ich den Namen vom Parent und dessen Parent nehmen kann um so genau zu wissen wo sich das Gerät in meiner Struktur befindet

Ralf
.

Hallo,
Problem sich erledigt. Ich habe mir ein paar Scripte angesehen und so meine Lösung gefunden.

Mit


<?php
$InstanzIDsList = IPS_GetInstanceListByModuleID('{E5BB36C6-A70B-EB23-3716-9151A09AC8A2}');  // Zigbee2MQTT
foreach ($InstanzIDsList as $InstanzID) {
    $VarID = @IPS_GetObjectIDByIdent('Z2M_Update', $InstanzID);
    if ($VarID > 0) {
        $DeviceID = IPS_GetProperty($InstanzID, 'MQTTTopic');
        echo $DeviceID.PHP_EOL;
        $Value = GetValue($VarID);
        var_dump($Value);
        echo $Value.PHP_EOL;
        $Parent = IPS_GetParent($VarID);
        echo IPS_GetName($Parent).PHP_EOL;
        if ($Parent){
            $GParent = IPS_GetParent($Parent);
            echo IPS_GetName($GParent).PHP_EOL;
        }
        echo PHP_EOL;
    }
}
?>

komme ich genau an die Informationen die ich brauche:-) Jetzt noch schön machen und regelmäßig aufrufen und ich bin glücklich.

Ralf

Ich hatte gestern Abend noch die Idee, dass du mit IPS_GetVariableList einfach durch alle Variablen gehst du dann den IDENT prüfst, der deiner Aussage nach ja eindeutig sein sollte. Dann könntest du damit auch sehr einfach alle Variablen ermitteln.

paresy

Moin Paresy,
danke für die Antwort. Ich werde darauf zurück kommen wenn ich das selbe Problem habe aber unabhängig von einem Modul.

Danke für den Tipp nochmal. Mit IPS_GetVariableList habe ich jetzt auch meine Temperaturen und Energiewerte modulübergreifend in einer netten Tabelle statt vorher vielen Links organisiert:-)

Ralf