Kategorien oder Dummy Instanzen Dynamisch

Hallo Leute,

da mir der Unifi Modul ständig Falsche Variablen erstellt, möchte ich die Daten über Script abrufen.
Dafür gibt es ja eine Unifi-API-Class. Mich Interessieren nur die Geräte. Clients brauche ich nicht.
Daten auslesen und in Variablen Schreiben geht auch.

Die Daten werden mit einer for-Schleife ausgelesen, mit IF-Anweisung sortiert und in Variablen geschrieben. Die variablen werden im Script erstellt. OK

Mich Stört nur noch das ich die ID von der Dummy Instanz händisch eintragen muss.

Ich möchte das eine Kategorie oder Dummy Instanz mit dem Namen von Device auch im Script erstellt wird. Habe leider nichts gefunden.

if ($json2['_id'] == '5c79907xxxxxxxxxxxxxxx'){ //AP Erdgeschoss

               $parentID = IPS_GetObject($_IPS['SELF']);
                $parentID = 41012; //ID Dummy Instanz

                $Device_Name	= CreateVariableByName($parentID, "Name", 3);
                SetValue($Device_Name, $json2['name']);

                $Device_IP		= CreateVariableByName($parentID, "IP", 3);
                SetValue($Device_IP, $json2['ip']);

                $Status_CPU		= CreateVariableByName($parentID, "Auslastung CPU", 2);
                SetValue($Status_CPU, floatval($json2['system-stats']['cpu']));

                $Status_MEM		= CreateVariableByName($parentID, "Speicherbelegung", 2);
                SetValue($Status_MEM, floatval($json2['system-stats']['mem']));

                $Device_Uptime		= CreateVariableByName($parentID, "Betriebszeit", 3);
                SetValue($Device_Uptime, uptime(floatval($json2['system-stats']['uptime'])));

                $Device_FW		= CreateVariableByName($parentID, "Firmware vorhanden", 0);
                SetValue($Device_FW, firware($json2['upgradable']));

                $Device_FWV		= CreateVariableByName($parentID, "Version", 3);
                SetValue($Device_FWV, $json2['version']);
                
        }

Gruß

Meinst du eventuell IPS_GetParent anstatt IPS_GetObject?
Dann hast du die ID von dem Objekt unter welchem dein Script liegt.
Michael

Im Moment lege ich eine Dummy Instanz Händisch für ein Device an und die ID trage ich im Script ein. Die Instanz wird mit Variablen befühlt. Ich möchte aber die Instanz auch im Script anlegen (oder Kategorie)

Gruß

Kategorie anlegen:
https://www.symcon.de/service/dokumentation/befehlsreferenz/kategorieverwaltung/ips-createcategory/
Instanz anlegen:
https://www.symcon.de/service/dokumentation/befehlsreferenz/instanzenverwaltung/ips-createinstance/
Dazugehörige GUID der Dummy Instanz ist {485D0419-BE97-4548-AA9C-C083EB82E61E}
Michael

Hallo Nall-chan,

Kategorie oder Instant anlegen Doku ist mir bekannt. Habe jetzt so gelöst.

        if ($json2['_id'] == '5c79907bcb9ec62631a49e62'){ //AP Erdgeschoss

            
            $parentID = IPS_GetParent($_IPS['SELF']);
            $KategorieID = @IPS_GetCategoryIDByName($json2['name'], $parentID);

                if ($KategorieID === false){
    

                    $CatID = IPS_CreateCategory();       // Kategorie anlegen
                    IPS_SetName($CatID, $json2['name']); // Kategorie benennen
                    IPS_SetParent($CatID, $parentID); // Kategorie einsortieren
                    }

                if ($KategorieID !== false){

                                  

                    $Device_Name	= CreateVariableByName($KategorieID, "Name", 3);
                    SetValue($Device_Name, $json2['name']);

                    $Device_IP		= CreateVariableByName($KategorieID, "IP", 3);
                    SetValue($Device_IP, $json2['ip']);

                    $Status_CPU		= CreateVariableByName($KategorieID, "Auslastung CPU", 2);
                    SetValue($Status_CPU, floatval($json2['system-stats']['cpu']));

                    $Status_MEM		= CreateVariableByName($KategorieID, "Speicherbelegung", 2);
                    SetValue($Status_MEM, floatval($json2['system-stats']['mem']));

                    $Device_Uptime		= CreateVariableByName($KategorieID, "Betriebszeit", 3);
                    SetValue($Device_Uptime, uptime(floatval($json2['system-stats']['uptime'])));

                    $Device_FW		= CreateVariableByName($KategorieID, "Firmware vorhanden", 0);
                    SetValue($Device_FW, firware($json2['upgradable']));

                    $Device_FWV		= CreateVariableByName($KategorieID, "Version", 3);
                    SetValue($Device_FWV, $json2['version']);

                    }    
        }

Im ersten Ausführen werden nur die Kategorien angelegt. Ab dem zweiten die Variablen. Konnte ich nicht anders lösen. Da mein Script alle 5 min Ausgeführt wird, kann ich damit leben.

Gruß

Oben hast du geschrieben; du hast nichts gefunden.
Dann musst du deine Frage präziser stellen.
Wenn du im Script $CatID gegen $KategorieID ersetzt, werden die Variablen auch gleich angelegt.
Michael

Hatte mich Falsch ausgedrückt. Ich meinte einmalig anlegen bzw bei nicht vorhanden.
Aber IPS_GetCategoryIDByName kannte ich nicht.

Wenn du im Script $CatID gegen $KategorieID ersetzt, werden die Variablen auch gleich angelegt.

Danke, werde ich gleich Testen.

Gruß