Ident von Statusvariablen

Hiho,

ich würde gerne einen Bug melden :slight_smile: wenns einer ist.

Wenn ich versuche den Ident via IPS_SetIdent auf eine Modbus Variable mit dem namen „value“ zu setzten bekomme ich folgende Fehlermeldung : Warning: Kann Ident von internen Statusvariablen nicht verändern.

Wenn ich ein IPS_GetObject mache erhalten ich einen vordefinierten Ident der da heißt „value“.

Kann mir jemand vom IPS Team erläutern warum ich den Wert nicht ändern darf ?

Weil wir den Ident nutzen, um die Variable anzusprechen. Und wenn du Ihn veränderst, machst du das Modul kaputt. Und das wollen wir nicht :rolleyes::smiley:

paresy

Statusvariablen sind die Variablen, die ein Gerät hat und die haben auch fixe Namen.
Der Wert von Statusvariablen ändern sich normalerweise nur, wenn sich der Status oder die Variable im Gerät ändert.

Wenn du da einfach den Ident änderst, würde dir das Modul um die Ohren fliegen.

P.S.
Verdammt. Da war der Schreibtisch hinter mir schneller :wink:

Habt ihr keine Arbeit oder watt :slight_smile:

hmm doof :slight_smile: aber nun gut …

Dann muss ich halt die Idents zum Datenaustausch auf die Ziel Variablen im 2ten IPS ändern.
Da man ja die Instanz IDs auch nicht ändern kann muss ich drumrum bauen.

<?

$rpc = new JSONRPC("http://user:PW@10.10.0.30:82/api/");

$parent = IPS_GetParent($_IPS['SELF']);
$arr = IPS_GetChildrenIDs($parent);

foreach ( $arr as $variable )
{
$datalocal = IPS_GetObject($variable);
$datalocal = intval($datalocal['ObjectIdent']);
if (empty($datalocal)) continue;

$value = $rpc->GetValue($datalocal);
SetValue($variable, $value);
}

?>

Trag doch unter ObjektInfo die VarID der Gegenseite ein.
So als Idee :slight_smile:
Und warum rufst du intval auf den ObjectIdent auf ? Das ist doch ein String :confused:
Michael

Weil der ObjectIdent gleichzeitig die InstanzID des zweiten IPS Systems ist :slight_smile: ich brauch den Wert noch zudem als Datenbankabfrage.
Finds n bissl schade das man immer drumrum bauen muss :frowning:

Das war auch der Grund warum ich mich gegen das Bearbeiten des Ident über die Console eingesetzt habe.
Misbraucht das ‚Ding‘ doch nicht :smiley:
Kannst das alles doch z.B. als JSON oder per un/serialize() die das Feld ObjectInfo schreiben, welches jedes Objekt hat.

Liegt im Auge des Betrachters.
Der Ident kommt von identifizieren. Es geht nur darum das eine Instanz ihre Objekte findet.
Würde es den nicht geben, könntest du noch nicht mal den Namen bearbeiten von Statusvariablen.
Irgendeine Weg muss IPS gehen um die Statusvariablen zu identifizieren.

Was du damit sonst noch mit den Ident anstellst… deine Sache :smiley:

Michael