Ersatz für alte IPS_GetStatusVariableID ???

Hi,

räume gerade auf und versuche alte Funktionen die abgesprochen wurden zu ersetzten.
Mit der Funktion IPS_GetStatusVariableID tue ich mich aber schwer.
Die wird in einem 1-wire-Script von eservice eingesetzt. Der entsprechenden Scriptteil lautet:

// Übergeordnete Kategorie ermitteln
$parentID = IPS_GetObject($_IPS['SELF']);
$parentID = $parentID['ParentID'];

// Manuelle Definition evtl. IDs
$DS2450 = IPS_GetInstanceIDByName ( '1-Wire-Analog-Eingang', $parentID );

// Variablen zur Skriptverarbeitung einlesen und intern verfügbar machen
$DS2450_Port0 = IPS_GetStatusVariableID($DS2450, "F20_Var0");
$DS2450_Port1 = IPS_GetStatusVariableID($DS2450, "F20_Var1");
$DS2450_Port2 = IPS_GetStatusVariableID($DS2450, "F20_Var2");
$DS2450_Port3 = IPS_GetStatusVariableID($DS2450, "F20_Var3");
if($debug) {echo $DS2450_Port0."
";}
if($debug) {echo $DS2450_Port1."
";}
if($debug) {echo $DS2450_Port2."
";}
if($debug) {echo $DS2450_Port3."
";}

Laut Dokumentation soll „IPS_GetObjectIDByIdent“ das irgendwie ersetzten. Bekomme es aber nicht hin. Kann mir jemand helfen?

Gruß
hardlog

Universeller Tipp: Schau mal was ich in der __compatibility.inc.php gemacht habe :slight_smile: Du findest die im Skripte Ordner :slight_smile:

paresy

Danke paresy!

Damit konnte ich es lösen.

Gruß
hardlog

Moin :slight_smile:

Magst du bitte die Lösung auch hier posten, dann findet jemand mit dem gleichen Problem das über die Suche und braucht nicht nochmal fragen und bei dir ist es noch „frisch im Kopf“ :slight_smile:

Danke!
-Chris-

Generell fände ich es toll, wenn du die Doku so updatest, dass du bei den alten Befehlen in der Doku nicht nur erwähnst, dass es die Funktion nicht mehr gibt, sondern auch durch welche Funktion sie ersetzt wurden. Am besten mit Link dazu.

Ich kann mit der o.g. universellen Antowort leider gar nicht anfangen und finde sie auch nicht sehr Nutzerfreundlich.

Grundsätzlich sollte halt IPS_GetStatusVariableID halt nicht mehr benutzt werden.

Stattdessen sollte IPS_GetObjectIDByIdent benutzt werden. Dazu ist es aber zunächst notwendig eine Ident für das Objekt zu setzten. Dies kann nur mit einem Skript und nicht in der Console gemacht werden mit


IPS_SetIdent(12345, "TEMPERATURE_3"); // 12345 ist die Objekt ID, der zweite Parameter die zu vergebende Ident

Eine Ident darf nur die Zeichen „a…z“,„A…Z“,„0…9“,"_" enthalten alles andere ist nicht zulässig. Eine Ident muss auf einer Ebene immer eindeutig sein und darf auch nicht zweimal vorkommen man sollte also eine eindeutige Bezeichnung wählen.