Variabel ermitteln ...

Hallo,

gibt es vom IPS eine Möglichkeit unterhalb von einer Instanz alle Variabel zu ermitteln
oder muss man sich das selber bauen?

Besonders geht meine Frage in Richtung der Verschachtellungstiefe …

Instanz …
… --> VAR1
… -> VAR2
… -> VAR3
… -> etc …

Gruß
MacToolz

Alle Childs geben lassen und dann alle Ebenen mit einer Schleife durch-iterieren…, natürlich dann noch rekursiv… von alleine geht es nicht

Was verstehst Du den unter Verschachtelungstiefe? in der Regel gibt es nur eine Ebene unterhalb einer Instanz, also keine Variable unter einer Variablen. Wenn dann würde das ja eher mit Kategorien verschachtelt sein unter denen Instanzen liegen, die dann wiederum Variablen enthalten.

Hi,

ich weiß das es von der Regel her immer nur eine Verschachtelungstiefe unterhalb einer Instanz gibt,
aber man könnte ja auch die Kategorien mit einbeziehen.

Ok, wenn es da nichts fertiges gibt, dann baue ich mir das selber. Aber da wird man ja vom kopieren was Betriebsblind …
Naja ich werde das mal auf vier Ebenen eingrenzen.

Danke

Gruß
MacToolz

doch gibt es, z.b. bei ZWave Steckdosen. Die haben unter der Var „Wert“, noch die Variabel „Power“ …

Gruß

Hi,

also ob ich war mal fleißig und habe mal 13 Ebene als tiefe umgesetzt. Das ganze seht zwar krank aus aber man könnte es gebrauchen um diverse Variabel sich zurecht zu suchen und eventuell Werte abrufen zu können.

Also wenn jemand eine bessere Idee hat um dieses Script umsetzen, bitte melden.

// Ich habe den Kopfweh Code von mir entfernt …

Gruß
MacToolz

Hab ich doch geschrieben. War du da machst, macht ja Auah im Kopf… Ich suche dir morgen ein Beispiel…

Ich hab dir mal dein Beispiel umgebaut damit es dynamisch unendlich viele Ebenen durchsucht:

<? 
$arVarList;
FN_GetAllChilds(0); 
print_r($arVarList); 

function FN_GetAllChilds($ID) 
{ 
global $arVarList;
    $InstObj = IPS_GetObject($ID); 
    
	
    
    if (IPS_HasChildren($ID)) 
    { 
        $arVarList[] = IPS_GetChildrenIDs($ID); 
        foreach (IPS_GetChildrenIDs($ID) as $VarChildID1) 
        { 
		print_r($VarChildID1);
		 FN_GetAllChilds($VarChildID1);
        }  
    }  
 
} 
?>  

ABER: Du nimmst alle Objekte, nicht nur Variablen! Wenn du nur Variablen haben wollen würdest müsstest du den Objekt-Typ noch abfragen! Weiterhin müsstest du dich entscheiden ob ein Link nur ein Link ist oder ob du dem noch „folgen“ willst, also die Variablen unter dem Link auch mit aufzählen willst.

P.S:: Ich hab das jetzt nur schnell zusammen getippert, prüf das Ergebnis sicherhaltshalber nochmal, konnte es nicht testen

Es geht alles, solange es IPS zulässt muss man damit rechnen… und nur weil es ggf. das Webfront nicht anzeigen kann, kann es existieren… ich nutze das zum Teil auch bewusst.

ja ich weiß mir ist echt nix besseres eingefallen …

Gruß

ich möchte ja nicht so in diese Tiefe mit den Variabel gehen. Grundlegend dann wenn ich mir was zusammen suche, dann auch komplett bzw. ich setze mir dann den Einsprung ab wo ich suchen möchte.

Gruß

das habe ich erstmal bewusst gemacht, rein Theoretisch könnte ich natürlich den ObjectType in der Funktion übergeben und mir dann nur diesen einen Typ zurück geben lassen oder halt in der weiteren Verwendung erst in der weiteren Verwendung mir den richtigen Typ raus suche …

Ist halt jetzt die Frage wie man es nutzt und teilweise braucht …

Ich teste mal dein Bespiel … danke erstmal dafür, wenn das so passt ist das ja absolut überschaubar anstatt meine Kopfweh Zeilen …

Gruß

Ich vermute mal aus deinem Quellcode das du noch Anfänger in der Programmierung bist? Vielleicht solltest du dir noch ein paar andere Muster ansehen, vor allem auch außerhalb des Forum, denn leider sind nicht alle Postings von Quellcode hier im Forum sonderlich „professionell“ (meine eigenen nicht ausgenommen, auch wenn man es kann neigt man schnell zu Quick-and-Dirty)

Hi,

danke erstmal, versuche halt mich mit dem System auseinander zu setzen, dieser Umgang im Symcon muss man erstmal verstehen, daher kommen dann manchmal solche Konstrukte zusammen …

Gruß