HomeMatic Stati überprüfen in 2.5

Aus irgentwelchen Gründen denkt mein IPS das es nur noch 3.0 Befehle gibt
Also baue ich meine Scripts um. Das Beispiel ersetzt die Funktion IPS_GetStatusVariableIdents() und ist eine Anpassung eines Beispiels aus der Doku zum überprüfen der Stati aller Homematic Geräte. Als kleine Verbesserung mache ich zudem einen update für jede dem Objekt zugeordnete Variable :

<?

 $ids = IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}");
 echo "Geräte: ".sizeof($ids)."
";
 $Text = "Geräte: ".sizeof($ids).'<BR>';
 foreach($ids as $id)
 {
  /*echo IPS_GetStatusVariableIdents($id);*/
  $svs = IPS_GetObject($id);
  if(sizeof($svs['ChildrenIDs']) > 0) {
  foreach($svs['ChildrenIDs'] as $i)
  {
    if(@HM_RequestStatus($id, IPS_GetName($i)) === false)
     {
        echo IPS_GetName($i)."
";
      echo "Fehler: ".IPS_GetLocation($id)."
";
        $Text = $Text."Fehler: ".IPS_GetLocation($id).'<BR>';
        SetValueString(56521 /*[Eigene Globale Variablen\Diverse\Fehlerhafte  Geräte]*/,$Text);
    }
   }
  }
 }

?>

Hallo BestEx,
habe gerade mal Dein neues Script bei mir versucht. Bekomme jedoch jede Menge fehlerhafte Geräte angezeigt. Es funktioniert jedoch bei mir alles. Was soll da fehlerhaft dran sein?

Grüße, Jürgen

Die Status Abfrage des Homematic Devices ergab eine Fehlermeldung und die wird angezeigt.

Mit der Status Abfrage werden die dem Device zugeordneten Variablen auf den aktuellen Stand gebracht.

Die Meldung sagt das die Homematic CCU aus Sicht von IPS nicht geantwortet hat und das kann auch an einer schlechten Verbindung liegen.

Es muss auch nicht heißen das die CCU den Befehl nicht empfangen hat bzw. aber IPS hat keine Quittung bekommen, dass heißt zumindest wurde der Status der Variablen des Devices in IPS nicht aktualisiert .

HM_RequestStatus: IP-Symcon :: Automatisierungssoftware

Da das öfter passiert steuere ich meine Homematic Geräte (in diesem Fall Aktoren) immer wie folgt an :


<?


$check = false;
$Counter = 0;


while (!$check)
{
   $check = @HM_WriteValueBoolean($_IPS['SWITCHID'], "STATE",$_IPS['SWITCHSTATE']);
   IPS_Sleep($_IPS['SLEEP']);
   $Counter++;
   if ( $Counter >= $_IPS['MAXCOUNT'] )
   {
      $check = true;
   }
   else
   {
   }


}


?>


Das Script wird wie folgt aufgerufen :


      IPS_RunScriptWaitEx(17120 /*[Scripte\Spezial\Sichere Ausführung\Safe Execution Schalt Aktoren]*/,
		Array("SWITCHID" => 40599,
		      "MAXCOUNT" => GetValueInteger(32350 /*[Eigene Globale Variablen\Blinds\Error Values\AnzahlVersuche]*/),
		      "SWITCHSTATE" => true,
		      "SLEEP" => GetValueInteger(45624 /*[Eigene Globale Variablen\Blinds\Error Values\Wartezeit]*/)));




Hallo,

kann man das Skript irgendwie einschränken, so daß nur die Fensterstati aktualisiert werden?

Danke und Gruß,
Andreas

Wenn alle Fensterkontakte in einem eindeutigen Teilbaum liegen kann man nur diesen Teilbaum durchsuchen und dann müsste das funktionieren.

Eine bestimmte Eigenschaft die nur Fensterkontakte haben und die man filtern kann ist mir auf den ersten Blick nicht bekannt, aber vielleicht gibt es ja einen Homematic Spezi im Forum dem dazu was einfällt.

Hallo,

du könntest ja eventuell noch den Namen des Variablenprofils abfragen?

Gruß,
Christian.

Gute Idee, müsste eigentlich funktionieren