HM Interfaces anzeigen

Hallo,

ich hätte eine Frage zum nachfolgendem Script

<?
// Quelle: http://www.ip-symcon.de/forum/threads/11771-Homematic-Adapter-und-Ger%C3%A4te-anzeigen?highlight=homematic+interface
// Autor: RWN

if ($_IPS['SENDER'] == "WebFront") return;

include IPS_GetKernelDir()."scripts\\xmlrpc.inc";

$client = new xmlrpc_client("192.168.115.50:2001"); // Adresse anpassen

//Ab hier nichts mehr ändern
$object = IPS_GetObject($_IPS['SELF']);
$parentID = $object['ParentID'];

//Installer
if ($_IPS['SENDER'] == "Execute")
{
  IPS_SetHidden($_IPS['SELF'], true);
  IPS_SetName($_IPS['SELF'], "Auswertung");
  $parentObject = IPS_GetObject($parentID);
  if ($parentObject['ObjectType'] !== 1)
  {
      $instanceID = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
      IPS_SetParent($instanceID, $parentID);
      $parentID = $instanceID;
      IPS_SetParent($_IPS['SELF'], $parentID);
      IPS_SetName($instanceID, "Homematic Interfaces");
  }
  IPS_SetScriptTimer($_IPS['SELF'], 900);
}

$abfrage = new xmlrpcmsg("listBidcosInterfaces");
$send = $client->send($abfrage);
$result = php_xmlrpc_decode($send->value());


for($i=0; $i <count($result); $i++)
{
    $adresse = CreateVariableByName($parentID, $result[$i]['DESCRIPTION'].": Adresse", 3);
    IPS_SetIcon($adresse, "Information");
    IPS_SetVariableCustomProfile($adresse, "~String");
    SetValue($adresse, $result[$i]['ADDRESS']);


    $connect = CreateVariableByName($parentID, $result[$i]['DESCRIPTION'].": Status", 0);
    if(!IPS_VariableProfileExists("Status"))
    {
        IPS_CreateVariableProfile("Status", 0);
        IPS_SetVariableProfileAssociation("Status", 1, "Online", "");
        IPS_SetVariableProfileAssociation("Status", 0, "Offline", "");
    }
    $action = IPS_GetVariable($connect);
    if($action['VariableCustomAction'] == 0)
    {
        IPS_SetVariableCustomAction($connect, $IPS_SELF);
        IPS_SetIcon($connect, "Information");
        IPS_SetVariableCustomProfile($connect, "Status");
    }
    SetValue($connect, $result[$i]['CONNECTED']);

   $default = CreateVariableByName($parentID, $result[$i]['DESCRIPTION'].": Default", 0);
    if(!IPS_VariableProfileExists("Default"))
    {
        IPS_CreateVariableProfile("Default", 0);
        IPS_SetVariableProfileAssociation("Default", 1, "Aktiv", "");
        IPS_SetVariableProfileAssociation("Default", 0, "Inaktiv", "");
    }
    $action = IPS_GetVariable($default);
    if($action['VariableCustomAction'] == 0)
    {
        IPS_SetVariableCustomAction($default, $IPS_SELF);
        IPS_SetIcon($default, "Information");
        IPS_SetVariableCustomProfile($default, "Default");
    }
    SetValue($default, $result[$i]['DEFAULT']);


}

function CreateVariableByName($id, $name, $type)
{
  
  $vid = @IPS_GetVariableIDByName($name, $id);
  if($vid === false)
  {
        $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, $id);
      IPS_SetName($vid, $name);
      IPS_SetInfo($vid, "this variable was created by script ");
  }
  return $vid;
}
?>

Es wird nur ein LAN-Adapter angezeigt. D.h. es wird nur ein Variablensatz angelegt. Kann es sein das das Sript nur mit LAN-Adaptern funktioniert und nicht mit der CCU (LAN-Adapter sind zur Reichweitenerhöhung angeschlossen)
Wenn das Script manuell ausgeführt wird kann man ganz kuer erkennen das der zweite Adapter abgefragt wird.

Andreas

Deine CCU liefert mit Sicherheit keine Description mit deshalb wird nur ein Variablensatz erzeugt.

Ändere im Skript alle Array-Beschreibungen von

[‚DESCRIPTION‘]

[FONT=arial]auf

[‚ADDRESS‘]

außer Du hast FTP-Zugriff auf die CCU und änderst in der rpc.conf entsprechend die Description des Adapters. (Zuvor Kopie anfertigen)[/FONT]

Hallo Werner,

vielen Dank. Beide Adapter werden jetzt angezeigt. :loveips:

Aber was mich verwundert nur einer ist aktiv. Laut hmcompanion v14 werden aber beide Adapter benutzt.

Aber nur der als Standart bezeichnete wird als aktiv gesetzt.

Verstehe ich nicht. :confused:

Andreas

Hast Du 2 LAN Adapter an der CCU oder LAN-Adapter und eine gepatchte rpc.conf um die CCU als weiteren Sender zu betreiben.

Ich nutze auch die CCU als weiteren Sender und bei mir wurde auch ein Adapter als inaktiv angezeigt.

Vielleicht liegt es ja an der Konstellation.

Jetzt habe ich es erst erkannt :confused:

Das Aktiv/Inaktiv sagt ja nur aus ob der Adapter „Default“ ist oder nicht.

Wichtig ist hier der Onlinestatus.

Hallo Werner,

danke für deine Rückantwort. Die CCU sendet nicht. Läuft die CCU mit der gepatchte rpc.conf stabil?

Ich bräucht noch einen 3. LAN-Adapter den könnte ich mir sparen wenn ich den bei der CCU nehmen würde und die CCU wieder senden lasse.:wink:

Den Status vom 2. LAN-Adapter brauche ich nur weil der an keiner USV hängt.

VG

Andreas

Habe seit Monaten keine Probleme. Einzig das Roaming soll nicht sauber funktionieren, habe ich aber auch nicht aktiv sondern fixe Zuweisung der Aktoren.

Ich bräucht noch einen 3. LAN-Adapter den könnte ich mir sparen wenn ich den bei der CCU nehmen würde und die CCU wieder senden lasse.:wink:

Mit dem Patch kannst Du die Zuordnung der Aktoren zu den Adpatern nur mit HM-Companion machen, die CCU zeigt sich selbst nicht an sondern nur die LAN-Adapter. Da aber das Zuweisen mit HM-Companion komfortabler ist hatte ich da noch nie ein Problem damit.