Es wird immer gepredigt, dass man mit ID’s statt Namen arbeiten soll. IPS hält sich da aber auch nicht strikt dran - oder habe ich mal wieder eine undocumented function übersehen?
Wenn man die (systemspezifischen, NICHT User-definierten) Variablen einer Instanz (z.B. einem FS20 Aktor) bekommen will, muss man im Moment über die StatusVariablenIdents gehen um dann erst im nächsten Schritt die ID’s der Statusvariablen auszulesen:
ChildrenIDs des Objekts ist keine gute Idee, weil es sich dabei nicht zwingend nur um systemspezifische Variablen handeln muss.
Es wäre daher nur konsequent, wenn man die StatusVariablenIDs auch direkt abrufen kann. Entweder also als Arrayelemente des Objekts „Instance“ oder aber als Funktion.
Im Moment mache ich das mit
function IPS_GetStatusVariableIDs( &$d, $id )
{
$d['i']['id'] = $id; // INSTANCE-ID
$d['i']['idents'] = IPS_GetStatusVariableIdents( $d['i']['id'] );
foreach($d['i']['idents'] as $d['i']['ident'])
{
$d['i']['ids'][] = IPS_GetStatusVariableID ( $d['i']['id'], $d['i']['ident'] );
};
return( $d['i']['ids'] );
};
P.S.: Die Doku ist hier auch falsch für IPS_GetStatusVariableID:
http://www.ip-symcon.de/service/dokumentation/befehlsreferenz/instanzenverwaltung/statusvariablen/
Dort steht:
„liefert alle Status Variablen zu einer bestimmten Instanz“ richtig wäre: „Liefert die ObjektID einer Statusvariablen“
jwka