Eigenschaften von Variablen

Hallo,

könnt Ihr mir mal sagen was in den Variablen Eigenschaften der Unterschied zwischen „VariableChanged“ und „VariableUpdated“ ist?
Wenn ich den letzten Updatezeitpunkt haben möchte, was muss ich da nehmen?

Ich seh das so

VariableChanged -->> hier ändert sich der Wert
VariableUpdated -->> hier wurde nur die Variable neu gelesen, der Wert kann sich geändert haben, muss aber nicht.

Wenn ich den letzten Updatezeitpunkt haben möchte, was muss ich da nehmen?

Wie das Wort heisst:
VariableUpdated

10, 10, 10, 10 > hier ändert sich wenig - aber: es kommen Werte, wie man recht deutlich erkennen kann.
Und wenn da denn so Werte kommen werden diese schönen Werte in eine Variable geschrieben.
Demnach wird sie aktualisiert (egl. update > http://www.dict.cc/?s=update)
10, 20, 30, 40, 50, 60 > bei genauerer Betrachtung kann auch hier der Laie erkennen, daß sich hier die Werte ändern.
Man kann auch sagen die vielen lustigen Zahlen unterliegen einem Wandel.
(egl. change > http://www.dict.cc/?s=change).
Aber auch diese Werte werden alle „geupdated“.
Und wann hat dass alles stattgefunden :confused:

IPS_GetUpdatetime

MST

Ok ok, update, change, hätte ich auch selber drauf kommen können, ist eigentlich logisch.

Aber IPS_GetUpdateTime gibts leider in V2 nicht mehr, deshalb versuch ichs ja anders zu lösen.

print_r(IPS_GetVariable($id));

Und dort suchst du dir aus, was dich interessiert :wink:

paresy

feine Funktion.

Aber leider vermisse ich den Variablennamen im Array? Oder bin ich nur zu blind?

Gruß Gerd

Der Name wird von einem anderen Kernteil von IPS verwaltet. Du bekommt den namen über die IPS_GetObject(); Funktion


print_r(IPS_GetObject($id));

oder am bestern direkt den kompletten Objektpfad:


echo IPS_GetLocation($id);

paresy

ok…

und was gibt es jetzt als Gegenstück, oder wie wird das jetzt gehandhabt?


$id = LOC_GetInstanceIDByLocation($pfx);

ich sehe die ganzen „GetxxxxxIDByName“-Funktionen, aber wie ist das mit dem Parameter „ParentID“ zu sehen? Ist der optional oder zwingend?

Wie ist die Zuweisung oder Entsprechung z.B. bei $IPS_VARIABLE?

Wenn ich ein Objekt (von vielen) z.B. als Schalter oder eine Jalousie in der Oberfläche definiere, die letztlich über genau ein einmal existierendes Skript gehandhabt werden sollen, definiere ich als einzigen Unterschied zwischen verschiedenen Schaltern z.B. eine IPSYMID (Button) oder ändere eine Variable mit strukturiertem Namen, der den Instanznamen enthält (z.B. bei Checkboxen oder Trackbars). Wie füttere ich das initial, ohne die „ParentID“ zu kennen, die ja jedesmal eine andere wäre?

Die potentielle Fehlerquelle wg. Mehrdeutigkeit ist mir klar. Logischerweise wäre man selbst verantwortlich, das zu verhindern. „Ermittle die erste passende ID“ wäre ja ein hinreichendes Verhalten dazu.

Gruß Gerd


  echo GetIDFromLocation("MeinGerät\\MeineVariable");

 function GetIDFromLocation($name)
 {
  $id=0;
  $names=explode("\\", $name);
  foreach($names as $str)
  {
   $id=IPS_GetObjectIDByName($str, $id);
   if($id===false)
    return false;
  }
  return $id;
 }

Du braucht eine aktuelle Version, da ich die GetObjectIDByName Funktion ein klein wenig anpassen musste.

paresy

Moin Paresy,
Klasse :slight_smile:

…mir fällt ein großer Stein vom Herzen, was die Anpassung meiner existierenden Module betrifft.

Irgendwie passt das sogar immer besser. Bin mal gespannt, wie das mit den weitergehenden Tochter-Objekten ist/wird, die ja nun wirklich eingebunden werden könnten.

Gruß Gerd