StatusVariablen einer Instanz auslesen

Hallo zusammen,

gibt es in der Version 1.0 evtl. auch eine Möglichkeit, und wenn ja, welche/wie, um die Statusvariablen einer Instanz auszulesen??

Zur Version 2.0 habe ich ja was gefunden, habe aber im Moment noch ein paar bedenken jetzt schon komplett auf die 2.0 BETA umzustellen.

Ich kann mir nicht vorstellen der Erste mit diesem Problem zu sein, auch wenn ich dazu hier im Forum nichts (v. 1.0) finden konnte.

Hallo,

was willst Du denn genau machen? Im WIIPS habe ich solche Funktionen drin, kannste Dir ja mal anschauen.

Das ist nur mit „ekeligen“ Tricks über die IPS_GetInstanceSettings Funktionen und XML Parsing Möglich. Mein Tipp: Probier es mit der V2…

paresy

Ok … Danke euch beiden!!

Hier mal meine Lösung zu dem Problem:


include_once "C:\Programme\IP-SYMCON\web\base\xmlparser.ips.php";

print_r(GetStatusVar(12345));
  /* Rückgabe:
  Array
  (
      [TemeratureVar] => 19.2
      [PositionVar] => 2.34
      [TargetTempVar] => 19
      [TargetIPSTempVar] => 18.5
      [TargetIPSModeVar] => 1
  )
  */

echo GetStatusVar(12345,"TemeratureVar");
  /* Rückgabe:
  19.2
  */


Function GetStatusVar($InstanceID, $ParameterName=NULL) {
   $xml_parser = new IPS_XMLParser(true);
   $settings   = $xml_parser->GetArray(IPS_GetInstanceSettings($InstanceID));
   $Return_Value=null;
   if ($ParameterName==NULL) {
      foreach ($settings["Settings"] as $key => $ParameterName) {
         $Value=GetValue($ParameterName);
         if ($Value<>null) {
            $Return_Value[$key]=GetValue($ParameterName);
         }
      }
      return $Return_Value;
   } else {
      $IPS_Return_Variable  = $settings["Settings"][$ParameterName];
      return getvalue($IPS_Return_Variable);
   }
}

Function GetValue($IPS_Variable) {
   if (IPS_VariableExists ($IPS_Variable) == true ) {
      switch (IPS_GetVariableType($IPS_Variable)) {
         case 'Float'  : $Return_Value = round(GetValueFloat($IPS_Variable),2);
            break;
         case 'Boolean': $Return_Value = GetValueBoolean($IPS_Variable) ? "1" : "0";
            break;
         case 'Integer': $Return_Value = GetValueInteger($IPS_Variable);
            break;
         case 'String' : $Return_Value = GetValueString($IPS_Variable);
            break;
		}
   } else {
      $Return_Value  = Null;
   }
   return $Return_Value;
}


Es mag vieleicht nicht die schönste Lösung sein (bin in PHP nicht wirklich firm), aber sie funzt :slight_smile:

Gruß Skydoor