StatusVariablen einer Instanz auslesen


$id=29321;
//Entsprechenden Werte anzeigen (bei Boolean und Wert = False wird nichts angezeigt!)
//z.B. die Helligkeit eines LCN Output Moduls ausgeben:
echo GetValue(IPS_GetStatusVariableID($id, "Intensity"));

Um alle Möglichen Werte einer Instanz für den 2. Parameter herauszufinden eignet sich folgender Befehl:


$id=29321;
//Alle verfügbaren StatusVariablen einlesen
$vars=IPS_GetStatusVariableIDs($id);

//Array ausgeben
print_r($vars);

Grüße, paresy

Bisher wurden die Statusvariablen in der V1 ja häufig mit String im Script verarbeitet.
z.B.


$OG_Sz_Steckdose = 60013;

Kann der Bezug der ID zum Namen in der V2 auch hergestellt werden?

Ich bin mir nicht sicher, ob du das hier suchst:


echo IPS_GetVariableID("VarName");

paresy

OK danke paresy, hatte da einen Denkfehler. Der Bezug des Variablennamen zur ID wird ja automatisch fest vergeben und kann so auch abgefragt werden. Es war mir nur nicht ganz klar ob alle alten Abfragen im Script auch weiterhin über Strings anstelle der ID gehen. Habe es probiert und geht.:slight_smile:

Hi Paresy,

ich mache gerade mit dem IPS2 gerade meine ersten Versuche, ich versuche wie folgt den Intensitywert abzufragen von einem Moellerdimmer mit derID 12345:

$id=12345; (InstanceID des Moeller Dimmergerätes!)
echo GetValue(IPS_GetStatusVariableID($id, „Intensity“));

Jedoch bekomme ich nur folgende Meldung:

Warning: StatusVariable „Intensity“ existiert nicht in D:\IP-Symcon-V2\Web\index.php on line 10

Was mache ich da falsch?

Hallo Pleibling,

den Statuswert bekommst Du ganz einfach über die ID der Variable die den Intensitywert speichert.


 $wert = GetValueInteger(ID der Intensity Variable);
  echo $wert;

So könnte es auch noch gehen, kann es zur Zeit nicht probieren.


$id= xxx;
$vars=IPS_GetStatusVariableIDs($id);
 echo GetValueInteger(IPS_GetStatusVariableID($id, $vars[Arrayposition der Intensityvariablen]));

sorry, leider klappen beide nicht :(. schade.

hast du das schon bei dir irgendwo implementiert und könntest mal nachsehen?!?

vielen dank für deine mühen.

Beide Varianten mit einer 1wire Statusvariablen getestet und funktioniert.

Hast recht, beide Varianten gehen:

$id=12345;
$vars=IPS_GetStatusVariableIDs($id);
echo GetValueInteger(IPS_GetStatusVariableID($id, $vars[3]));

$info = GetValueInteger(22222);
echo("Wert ist: " . $info);

Vielen Dank für deine Hilfe … :).

Ich würde gerne den Statuswert auslesen ohne die ID der Statusvariable zu haben. Ich habe die ID der Instanz zb Schalter 1 - Meldung Panik (EIB Group) und möchte nicht nur schalten sondern auch den Wert auslesen.

Wie geht das ?

Gruß Daniel

Du kannst die ID der Variable anhand des Idents der StatusVariable ermitteln. Schau mal hier: IPS_GetObjectIDByIdent — IP-Symcon :: Automatisierungssoftware

Für deinen Fall der EIBGroup ist der Ident -> Value

paresy

Danke klappt super :loveips:

Sorry, dass ich diesen alten Beitrag nochmals auskrame, aber gleich im ersten Beitrag steht:

Das ist eigentlich genau das was ich brauche.
Ich hätte gerne die Liste aller Variabeln einer Instanz, aber den Befehl IPS_GetStatusVariableIDs scheint es in der Version 4.4 nicht mehr zu geben?

Wie löst man das aktuell?

Ich weis das meine FHZ Variabeln mit den Namen ‚TargetModeVar‘ und ‚TargetTempVar‘ hat. Ich hätte aber auch gerne die Namen der anderen Variabeln.

Gruß Mirko

z.B. so


$instanceid = 12345;
$variables = GetInstanceVariables($instanceid);
var_dump($variables);

function GetInstanceVariables($instanceid)
{
$variables = array(); 
 $list = IPS_GetChildrenIDs($instanceid);
 foreach($list as $objid)
 {
 	$name = IPS_GetName($objid);
	$variables[$objid]["name"] = $name;
	$ident = IPS_GetObject($objid)["ObjectIdent"];
	$variables[$objid]["ident"] = $ident;
 }
 return $variables;
 }

Super. Danke.
Genau was ich suchte. :slight_smile: