Device Liste

Danke!

Skript läuft super!

ok, ich gebe zu: bei 13 Seiten optimiert man und überfliegt den Inhalt auf S.11 nur noch diagonal, zumal man in dem Moment ja noch nicht wußte, dass das mal wichtig werden könnte… :rolleyes:

…und: wir machten offenbar die gleichen Änderungen. Winmerge findet lediglich Copyright-, IP-Adresse, eine Sortierungs- und eine HTML-Code-Ausgabe-Änderung von Deiner zu meiner Version.

Apropos leere Seite bei Tapatalk: Kann man das nicht irgendwie einstellen, dass die PHP- oder Code-Box-Inhalte da auch ordentlich dargestellt werden?

Gruß Gerd

Oh, oh, Jungs, wer tritt zuerst zurück? Hier müssen Köpfe Rollen. :stuck_out_tongue:

Kwatsch . Wollt nur drauf hinweisen, dass die Lösung dann ja wohl stimmen muss :wink:

Gesendet von meinem GT-I9000 mit Tapatalk

Hallo,

habe die gleichen Fehler in der Zeile 180 (siehe Anhang), jedoch komme ich nicht auf die Lösung. Benutze das Script HM-Inventory in der Version 1.3a unter IPS 2.5 #2252.

Ich hoffe Ihr könnt mir helfen !!!

Gruß Proxima

da muss was beim kopieren schief gelaufen sein: Deine Zeile 180 ist bei mir Zeile 178!
Die Fehlermeldung besagt, das die Variable nicht definiert ist. Bei mir ist sie das weiter oben aber wie folgt (ab Zeile 145):


$HM_FWversion = ($hm_par_dev != null)? $hm_par_dev['FIRMWARE'] : " ";
      $HM_Interface = ($hm_par_dev != null)? $hm_par_dev['INTERFACE'] : "";
      $HM_Roaming = ($hm_par_dev != null)? ($hm_par_dev['ROAMING']?"+":"-") : " ";
      $HM_devtype = $hm_dev['TYPE'];

Hallo,

stimmt, ist um ein paar Zeilen verschoben, habe es aber aus dem Post hier im Forum rauskopiert ???

Aber die Definition der Variablen ist bei mir auch richtig:

          $HM_devname = $Metadata["NAME"];
        }
      }
      $HM_FWversion = ($hm_par_dev != null)? $hm_par_dev['FIRMWARE'] : " ";
      $HM_Interface = ($hm_par_dev != null)? $hm_par_dev['INTERFACE'] : "";
      $HM_Roaming = ($hm_par_dev != null)? ($hm_par_dev['ROAMING']?"+":"-") : " ";
      $HM_devtype = $hm_dev['TYPE'];
      if ( $hm_dev['DIRECTION'] == 1 )
      $HM_direction = "TX";
      else if ( $hm_dev['DIRECTION'] == 2 )
        $HM_direction = "RX";
      if ( $hm_dev['AES_ACTIVE'] != 0 )
        $HM_AES_active = "+";
      break;
    }
  }

Wie kann das sein??? Jemand ne Idee???

Gruß Proxima

Hallo,

@Raketenschnecke:
Könntest Du Dein Script hier nochmals einstellen??? Scheinbar gibt es zwischen Deinem und meinem Script Unterschiede.

Gruß Proxima

hier isset:


<?
// Quelle: http://www.ip-symcon.de/forum/99682-post76.html

// Anpassung für IPS v 2.5 27.10.2011 by Raketenschnecke

$IP_adr_BidCos_Service = "192.168.1.1";   // Change IP-address if the BidCos-service is remote

// Choose the mode for this script:  if set to something else than "HTMLbox" it will output a PopUp-window
$ScriptMode = "HTMLbox";
// If "HTMLbox" is selected this script needs to be started once from the management console for installation

// Save output as HTML_file: name of file or null for no HTML file
// $Save_as_HTMLfile = null;
$Save_as_HTMLfile = IPS_GetKernelDir()."HM_inventory.html";

// choose Option how the device list should be sorted:
//     possible options:  "by_IPS-id"   "by_IPS-dev_name"   "by_HM-address"   "by_HM-device"   "by_HM-type"
$HM_list_sort_option = "by_HM-device";

$Show_Virtual_Key_Entries = FALSE;  // TRUE  if somebody is interested in Virtual_Key HM-Entries
$Show_Maintenance_Entries = FALSE;  // TRUE  if somebody is interested in Maintenance HM-Entries

define ("Show_Long_IPS_device_names", " " );
// Show device names used in HM_konfigurator (only device names which have been set once are shown)
// define ("Show_HM_konfigurator_device_names", " " );


// To force wireless communication for RF-level update the following define() must be uncommented
//  use carefully:  very slow, puts heavy traffic on your wireless environment, might cause collisions
//  battery powered HM-devices can't be forced by BidCos-service to communicate
define ("RequestStatus_for_LevelUpdate", " " );


// Some color options for the HTML output
$Bgcolor_Global = "#181818";      // Global background color
$Bgcolor_Ifcs = "#223344";        // Background color for the interface list
$Bgcolor_Headline = "#334455";    // Background color for the header line of the device list
$Bgcolor_OddLine = "#181818";     // Background color for the odd lines of the device list
$Bgcolor_EvenLine = "#1A2B3C";    // Background color for the even lines of the device list


// The following define() must be uncommented when usind a CCU  !! CCU returns truncated XML documents !!
//    (Script might still NOT work when the CCU is linked with too many HM-devices)
// define ("Workaround_for_CCU_with_XMLunderflow_Bug", " " );


// We need the "xmlrpc" include file: to be adapted if not found in PHP's "include_path"
include "xmlrpc.inc.php";


// --------------------------------------------------------------------------------------------
//   Nothing to change below this line
// --------------------------------------------------------------------------------------------
//
// HM-Inventory  -  Version 1.3  -  2010-10-29
//
// written by Andreas Bahrdt
//
// Public domain
//

$Version = "1.3a";
$StartTime = time();


// Get the required data from the BidCos-Service

$BidCos_Service_adr = sprintf("http://%s:2001", $IP_adr_BidCos_Service);
$xml_client = new xmlrpc_client($BidCos_Service_adr);

$hm_dev_list = array();

if ( defined("Workaround_for_CCU_with_XMLunderflow_Bug") )
  CCU_generate_deviceList($hm_dev_list, $xml_client);
else
{
  $xml_reqmsg = new xmlrpcmsg('listDevices');
  $xml_rtnmsg = $xml_client->send($xml_reqmsg);
  if ( $xml_rtnmsg->errno == 0 )
    $hm_dev_list = php_xmlrpc_decode($xml_rtnmsg->value());
  else
    die("Fatal error: Can't get HM-device information from the BidCos-Service ($BidCos_Service_adr) &nbsp&nbsp&nbsp - &nbsp&nbsp&nbsp ($xml_rtnmsg->errstr)<br>
");
}

$xml_reqmsg = new xmlrpcmsg('listBidcosInterfaces');
$xml_rtnmsg = $xml_client->send($xml_reqmsg);
if ( $xml_rtnmsg->errno == 0 )
  $hm_BidCos_Ifc_list = php_xmlrpc_decode($xml_rtnmsg->value());
else
  die("Fatal error: Can't get HM-interface information from the BidCos-Service ($BidCos_Service_adr) &nbsp&nbsp&nbsp - &nbsp&nbsp&nbsp ($xml_rtnmsg->errstr)<br>
");


$IPS_device_num = 0;
$IPS_HM_channel_num = 0;
$HM_module_num = 0;
$HM_array = array();
$HM_interface_num = 0;
$HM_interface_connected_num = 0;

foreach ( $hm_BidCos_Ifc_list as $hm_ifce )
{
  $HM_interface_num += 1;
  if ( $hm_ifce['CONNECTED'] )
    $HM_interface_connected_num += 1;
}


// Fill array with all HM-devices found in IP-Symcon
//
foreach ( IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $id )
{
  $HM_module_num += 1;
  $IPS_device_num += 1;
  $IPS_HM_channel_already_assigned = FALSE;
  $HM_address = HM_GetAddress($id);
  $HM_Par_address = substr($HM_address,0,10);
  $HM_device = "-";
  $HM_devname = "-";
  $HM_FWversion = " ";
  $HM_devtype = "-";
  $HM_direction = "-";
  $HM_AES_active = "-";
  $hm_chld_dev = null;
  $hm_par_dev = null;

  foreach ( $hm_dev_list as $hm_dev )
  {
    if ( $hm_dev['ADDRESS'] == $HM_address )
      $hm_chld_dev = $hm_dev;
    if ( $hm_dev['ADDRESS'] == $HM_Par_address )
      $hm_par_dev = $hm_dev;
    if ( $hm_chld_dev != null )
    {
      $HM_device = $hm_dev['PARENT_TYPE'];
      if ( defined("Show_HM_konfigurator_device_names") )
      {
        $xml_reqmsg = new xmlrpcmsg("getAllMetadata", array(new xmlrpcval($HM_Par_address, "string")) );
        $xml_rtnmsg = $xml_client->send($xml_reqmsg);
        if ( $xml_rtnmsg->errno == 0 )
        {
          $Metadata = php_xmlrpc_decode($xml_rtnmsg->value());
          $HM_devname = $Metadata["NAME"];
        }
      }
      $HM_FWversion = ($hm_par_dev != null)? $hm_par_dev['FIRMWARE'] : " ";
      $HM_Interface = ($hm_par_dev != null)? $hm_par_dev['INTERFACE'] : "";
      $HM_Roaming = ($hm_par_dev != null)? ($hm_par_dev['ROAMING']?"+":"-") : " ";
      $HM_devtype = $hm_dev['TYPE'];
      if ( $hm_dev['DIRECTION'] == 1 )
      $HM_direction = "TX";
      else if ( $hm_dev['DIRECTION'] == 2 )
        $HM_direction = "RX";
      if ( $hm_dev['AES_ACTIVE'] != 0 )
        $HM_AES_active = "+";
      break;
    }
  }

  if ( $HM_address != "" )
  {
    foreach ( $HM_array as &$HM_dev )
    {
      if ( $HM_dev['HM_address'] == $HM_address )
      {
        $HM_dev['IPS_HM_d_assgnd'] = TRUE;
        $IPS_HM_channel_already_assigned = TRUE;
        break;
      }
    }
    if ( !$IPS_HM_channel_already_assigned )
      $IPS_HM_channel_num += 1;
  }

  $IPS_name = (defined("Show_Long_IPS_device_names"))? IPS_GetLocation($id):IPS_GetName($id);
  $HM_array[] = array('IPS_occ'=>$HM_module_num, 'IPS_id'=>$id, 'IPS_name'=>$IPS_name,
                      'IPS_HM_d_assgnd'=>$IPS_HM_channel_already_assigned, 'HM_address'=>$HM_address,
                      'HM_device'=>$HM_device, 'HM_devname'=>$HM_devname, 'HM_FWversion'=>$HM_FWversion, 'HM_devtype'=>$HM_devtype,
                      'HM_direction'=>$HM_direction, 'HM_AES_active'=>$HM_AES_active, 'HM_Interface'=>$HM_Interface, 'HM_Roaming'=>$HM_Roaming);
}

// Add HM_devices known by BidCos but not present in IP-Symcon
//
foreach ( $hm_dev_list as $hm_dev )
{
  $HM_address = $hm_dev['ADDRESS'];
  $hm_dev_in_array = FALSE;
  foreach ( $HM_array as $HM_dev_a )
  {
    if ( $hm_dev['ADDRESS'] == $HM_dev_a['HM_address'] )
    {
      $hm_dev_in_array = TRUE;
      break;
    }
  }
  if ( $hm_dev_in_array == FALSE )
  {
    if ( array_key_exists('PARENT_TYPE',$hm_dev) )
    {
      if ( $hm_dev['TYPE'] == "VIRTUAL_KEY" && $Show_Virtual_Key_Entries != TRUE )
        continue;
      if ( $hm_dev['TYPE'] == "MAINTENANCE" && $Show_Maintenance_Entries != TRUE )
        continue;
      $hm_chld_dev = $hm_dev;
      $hm_par_dev = null;
      $HM_Par_address = substr($HM_address,0,10);
      foreach ( $hm_dev_list as $hm_p_dev )
      {
        if ( $hm_p_dev['ADDRESS'] == $HM_Par_address )
          $hm_par_dev = $hm_p_dev;
      }
      if ( $hm_chld_dev != null )
      {
        $HM_module_num += 1;
        $HM_device = $hm_chld_dev['PARENT_TYPE'];
        $HM_devname = "-";
        if ( defined("Show_HM_konfigurator_device_names") )
        {
          $xml_reqmsg = new xmlrpcmsg("getAllMetadata", array(new xmlrpcval($HM_Par_address, "string")) );
          $xml_rtnmsg = $xml_client->send($xml_reqmsg);
          if ( $xml_rtnmsg->errno == 0 )
          {
            $Metadata = php_xmlrpc_decode($xml_rtnmsg->value());
            $HM_devname = $Metadata["NAME"];
          }
        }
        $HM_FWversion = ($hm_par_dev != null)? $hm_par_dev['FIRMWARE'] : " ";
        $HM_Interface = ($hm_par_dev != null)? $hm_par_dev['INTERFACE'] : "";
        $HM_Roaming = ($hm_par_dev != null)? ($hm_par_dev['ROAMING']?"+":"-") : " ";
        $HM_devtype = $hm_chld_dev['TYPE'];
        $HM_direction = "-";
        $HM_AES_active = "-";
        if ( $hm_dev['DIRECTION'] == 1 )
          $HM_direction = "TX";
        else if ( $hm_dev['DIRECTION'] == 2 )
          $HM_direction = "RX";
        if ( $hm_chld_dev['AES_ACTIVE'] != 0 )
          $HM_AES_active = "+";
        $HM_array[] = array('IPS_occ'=>$HM_module_num, 'IPS_id'=>"-", 'IPS_name'=>"-",
                            'IPS_HM_d_assgnd'=>FALSE, 'HM_address'=>$HM_address,
                            'HM_device'=>$HM_device, 'HM_devname'=>$HM_devname, 'HM_FWversion'=>$HM_FWversion, 'HM_devtype'=>$HM_devtype,
                            'HM_direction'=>$HM_direction, 'HM_AES_active'=>$HM_AES_active, 'HM_Interface'=>$HM_Interface, 'HM_Roaming'=>$HM_Roaming);
      }
    }
  }
}


// Force communication for RF-level update if requested
//
if ( defined("RequestStatus_for_LevelUpdate") )
{
  foreach ( $HM_array as &$HM_dev )
  {
    if ( substr($HM_dev['HM_address'],10,2) == ':1' )
    {
      $xml_method = new xmlrpcmsg("getParamset", array(new xmlrpcval($HM_dev['HM_address'], "string"),new xmlrpcval("VALUES", "string")) );
      $xml_rtnmsg = $xml_client->send($xml_method);
      if ( $xml_rtnmsg->errno == 0 )
        $HM_ParamSet = php_xmlrpc_decode($xml_rtnmsg->value());
    }
  }
}

// Request tx/rx RF-levels from BidCos-Service
//
$xml_reqmsg = new xmlrpcmsg('rssiInfo');
$xml_rtnmsg = $xml_client->send($xml_reqmsg);
$hm_lvl_list = array();
if ( $xml_rtnmsg->errno == 0 )
  $hm_lvl_list = php_xmlrpc_decode($xml_rtnmsg->value());
else
  print ("Warning: Can't get RF-level information from the BidCos-Service ($BidCos_Service_adr) &nbsp&nbsp&nbsp - &nbsp&nbsp&nbsp ($xml_rtnmsg->errstr)<br>
");

// Add tx/rx RF-levels for each device/interface
//
if ( is_array($hm_lvl_list) )
{
  foreach ( $HM_array as &$HM_dev )
  {
    if ( ($hm_adr = substr($HM_dev['HM_address'],0,10)) != '' )
    {
      if ( array_key_exists($hm_adr,$hm_lvl_list) )
      {
        $HM_lvl_array = array();
        $hm_levels = $hm_lvl_list[$hm_adr];
        $best_lvl_ifce = -1;
        $ifce_no = 0;
        foreach ( $hm_BidCos_Ifc_list as $hm_ifce )
        {
          if ( $hm_ifce['CONNECTED'] )
          {
            if ( array_key_exists($hm_ifce['ADDRESS'],$hm_levels) )
            {
              $HM_lvl_array[] = array($hm_levels[$hm_ifce['ADDRESS']][0], $hm_levels[$hm_ifce['ADDRESS']][1],(($HM_dev['HM_Interface']==$hm_ifce['ADDRESS'])?TRUE:FALSE), FALSE);
              if ( $best_lvl_ifce == -1  &&  $hm_levels[$hm_ifce['ADDRESS']][1] != 65536 /*[Kein(e)]*/ )
                $best_lvl_ifce = $ifce_no;
              else if ( $hm_levels[$hm_ifce['ADDRESS']][1] != 65536  &&  $HM_lvl_array[$best_lvl_ifce][1] < $hm_levels[$hm_ifce['ADDRESS']][1] )
                $best_lvl_ifce = $ifce_no;
            }
            else
              $HM_lvl_array[] = array(65536 /*[Kein(e)]*/, 65536, FALSE, FALSE);
            $ifce_no++;
          }
        }
        if ( $best_lvl_ifce != -1 )
        {
          $best_lvl = $HM_lvl_array[$best_lvl_ifce][1];
          foreach ( $HM_lvl_array as &$hm_lvl )
            $hm_lvl[3] = ($hm_lvl[1]==$best_lvl)? TRUE:FALSE;
        }
        $HM_dev['HM_levels'] = $HM_lvl_array;
      }
    }
  }
}


// Sort device list
//
switch ($HM_list_sort_option)
{
  case "by_IPS-id":
    usort($HM_array, "usort_IPS_id");
    break;
  case "by_IPS-dev_name":
    usort($HM_array, "usort_IPS_dev_name");
    break;
  case "by_HM-address":
    usort($HM_array, "usort_HM_address");
    break;
  case "by_HM-device":
    usort($HM_array, "usort_HM_device_adr");
    break;
  case "by_HM-type":
    usort($HM_array, "usort_HM_type");
    break;
  default:
    break;
}


// Generate HTML output code

$HTML_intro = "<table width='100%' border='0' align='center' bgcolor=".$Bgcolor_Global.">";

$HTML_ifcs  = "<tr valign='top' width='100%'>";
$HTML_ifcs .= "<td><table align='left'><tr><td><font size='3' color='#99AABB'><b>HM Inventory ($Version) </font></b>";
$HTML_ifcs .= "<font size='3' color='#CCCCCC'><b>&nbsp found at ".strftime("%d.%m.%Y %X",$StartTime)."</font></b></td></tr>";
$HTML_ifcs .= "<tr><td><font size='2' color='#CCCCCC'>".$HM_interface_num." HomeMatic interfaces (".$HM_interface_connected_num." connected)</td>";
$HTML_ifcs .= "<tr><td><font size='2' color='#CCCCCC'>".$IPS_device_num." IPS instances (connected to ".$IPS_HM_channel_num." HM channels)</td>";
$HTML_ifcs .= "</table></td>";
$HTML_ifcs .= "<td valign='top'> </td>";

$dtifc_td_b_n = "<td><font size='2' color='#EEEEEE'>";
$dtifc_td_e_n = "</font></td>";
$HTML_ifcs .= "<td width='40%' valign='bottom'><table width='100%' align='right' bgcolor=".$Bgcolor_Ifcs.">";
foreach ( $hm_BidCos_Ifc_list as $hm_ifce )
{
  $dtifc_td_b = "<td><font size='2' color='#EEEEEE'>".(($hm_ifce['DEFAULT']) ? "<b>":"");
  $dtifc_td_e = (($hm_ifce['DEFAULT'])?"</b>":"")."</font></td>";
  $dsc_strg = sprintf("%sconnected", ($hm_ifce['CONNECTED'])?"":"Not ");
  $HTML_ifcs .= "<tr>".$dtifc_td_b."Interface: ".$hm_ifce['ADDRESS']."&nbsp".$dtifc_td_e;
  $HTML_ifcs .= $dtifc_td_b.$hm_ifce['DESCRIPTION'].$dtifc_td_e.$dtifc_td_b.$dsc_strg.$dtifc_td_e."</tr>";
}
$HTML_ifcs .= "</table></td></tr>";

$HTML_sep = "<tr><td colspan=3><table width='100%' align='left'> <hr><tr><td> </td></tr></table></td></tr>";

$dthdr_td_b = "<td><font size='2' color='#EEEEEE'><b>";
$dthdr_td_b_r = "<td align='right'><font size='2' color='#EEEEEE'><b>";
$dthdr_td_e = "</font></b></td>";
$dthdr_td_eb = $dthdr_td_e.$dthdr_td_b;
$HTML_dvcs = "<tr><td colspan=3><table width='100%' align='left'>";
$HTML_dvcs .= "<tr bgcolor=".$Bgcolor_Headline.">";
$HTML_dvcs .= $dthdr_td_b_r."&nbsp##&nbsp".$dthdr_td_eb."IPS-ID".$dthdr_td_eb."IPS device name&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp".$dthdr_td_eb."HM-address".$dthdr_td_e;
if ( defined("Show_HM_konfigurator_device_names") )
  $HTML_dvcs .= $dthdr_td_b."HM device name".$dthdr_td_e;
$HTML_dvcs .= $dthdr_td_b."HM-device".$dthdr_td_eb."Fw.".$dthdr_td_eb."HM-type".$dthdr_td_eb."Dir.".$dthdr_td_eb."AES".$dthdr_td_e;
$HTML_dvcs .= "<td width='2%' align='center'><font size='2' color='#EEEEEE'> Roa- ming"."</font></td>";
foreach ( $hm_BidCos_Ifc_list as $hm_ifce )
{
  if ( $hm_ifce['CONNECTED'] )
    $HTML_dvcs .= "<td width='6%' align='center'><font size='2' color='#EEEEEE'>".$hm_ifce['ADDRESS']." tx/rx&nbsp(dbµV)"."</font></td>";
}
$HTML_dvcs .= "</tr>";

$ci = 0;
foreach ( $HM_array as $HM_dev )
{
  $font_tag = "<font size='2' color=".(($HM_dev['IPS_HM_d_assgnd']==FALSE)?"#DDDDDD":"#FFAAAA").">";
  $dtdvc_td_b = "<td>".$font_tag;
  $dtdvc_td_ar_b = "<td align='right'>".$font_tag;
  $dtdvc_td_ac_b = "<td align='center'>".$font_tag;
  $dtdvc_td_e = "</font></td>";
  $dtdvc_td_eb = $dtdvc_td_e.$dtdvc_td_b;
  $r_bgcolor = (($ci++%2)==0)?$Bgcolor_OddLine:$Bgcolor_EvenLine;
  $entry_no = $ci;   // use $HM_dev[IPS_occ] to indicate order of occurence in IPS
  $HTML_dvcs .= "<tr bgcolor=".$r_bgcolor.">".$dtdvc_td_ar_b.$entry_no."&nbsp&nbsp".$dtdvc_td_eb;
  $HTML_dvcs .= $HM_dev['IPS_id'].$dtdvc_td_eb.$HM_dev['IPS_name'].$dtdvc_td_eb.$HM_dev['HM_address'].$dtdvc_td_eb;
  if ( defined("Show_HM_konfigurator_device_names") )
    $HTML_dvcs .= $HM_dev['HM_devname'].$dtdvc_td_eb;
  $HTML_dvcs .= $HM_dev['HM_device'].$dtdvc_td_eb.$HM_dev['HM_FWversion'].$dtdvc_td_eb.$HM_dev['HM_devtype'].$dtdvc_td_eb;
  $HTML_dvcs .= $HM_dev['HM_direction'].$dtdvc_td_e.$dtdvc_td_ac_b.$HM_dev['HM_AES_active'].$dtdvc_td_e.$dtdvc_td_ac_b.$HM_dev['HM_Roaming'].$dtdvc_td_e;

  if ( array_key_exists('HM_levels', $HM_dev) )
  {
    foreach ( $HM_dev['HM_levels'] as $ifce_dev_lvls )
    {
      if ( array_key_exists(2,$ifce_dev_lvls) )
      {
        $rx_lvl = $ifce_dev_lvls[0];
        $tx_lvl = $ifce_dev_lvls[1];
        // Interface with best levels gets different color
        $lvl_strg_color =  "<font color=".(($ifce_dev_lvls[3])?((($HM_dev['HM_Roaming']=='+')||$ifce_dev_lvls[2])?"#DDDD66":"#FFFF88"):"#DDDDDD").">";
        $fmt_strg = "%s".((($HM_dev['HM_Roaming']=='+')||$ifce_dev_lvls[2])?"<b>%s &#047 %s</b>":"%s &#047 %s")."</font>";
        $lvl_strg = sprintf($fmt_strg,$lvl_strg_color,($rx_lvl!=65536 /*[Kein(e)]*/)?((string)$rx_lvl):"--", ($tx_lvl!=65536 /*[Kein(e)]*/)?((string)$tx_lvl):"--");
      }
      else
        $lvl_strg = "-- &#047 --";
      $HTML_dvcs .= $dtdvc_td_ac_b.$lvl_strg.$dtdvc_td_e;
    }
  }
  else
  {
    for ( $lci=0 ; $lci < $HM_interface_connected_num ; $lci++)
      $HTML_dvcs .= "<td> </td>";
  }
}

if ( $HM_module_num == 0)
  $HTML_dvcs .= "<tr><td colspan=20 align='center'><br/><font size='4' color='#DDDDDD'>No HomeMatic devices found!</font></td></tr>";

$HTML_dvcs .= "</td></tr>";


// Some comments
//
$HTML_notes = "<tr><td colspan=20><table width='100%' align='left'><hr><color='#666666'><tr><td> </td></tr></table></td></tr>";
$HTML_notes .= "<tr><td colspan=20><table width='100%' align='left'><tr><td><font size='3' color='#DDDDDD'>Notes:</font></td></tr>";
$HTML_notes .= "<tr><td><font size='2' color='#DDDDDD'><ol>";
$HTML_notes .= "<li>Currently only BidCos-RF devices are supported</li>";
$HTML_notes .= "<li>Interfaces: bold letters indicate the default BidCos-Interface.</li>";
$HTML_notes .= "<li>Level-pairs: the left value is showing the last signal level received by the device from the interface,";
$HTML_notes .= " while the right value is showing the last signal level received by the interface from the device.</li>";
$HTML_notes .= "<li>Level-pairs: bold letters of the level-pair indicate the BidCos-Interface associated with the device";
$HTML_notes .= " (or all interfaces when Roaming is enabled for the device).</li>";
$HTML_notes .= "<li>Level-pairs: the yellow level-pair indicates the BidCos-Interface with best signal quality.</li>";
$HTML_notes .= "<li>Devices without level-pairs haven't send/received anything since last start of the BidCos-service.</li>";
$HTML_notes .= "<li>BidCos channels assigned to more than one IPS-device are shown in red.</li>";
$HTML_notes .= "</ol></font></td></tr>";
$HTML_notes .= "</table></td></tr>";

$HTML_end = "</table>";


// Output the results

if ( $ScriptMode == "HTMLbox" )
{
  $object = IPS_GetObject($IPS_SELF);
  $parentID = $object['ParentID'];

  // Installer for HTMLbox
  if ($IPS_SENDER == "Execute")
  {
    IPS_SetHidden($IPS_SELF, FALSE);
    IPS_SetName($IPS_SELF, "Refresh HM inventory");
    IPS_SetIcon($IPS_SELF, "Information");
    $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, "HM inventory");
    }
//  IPS_SetScriptTimer($IPS_SELF, 300);   // In case automatic refresh is required
  }
  $HTMLbox_HMi = CreateVariableByName($parentID, "HM inventory", 3, "Information", "~HTMLBox", 2);
  $HTMLbox_str = $HTML_intro.$HTML_ifcs.$HTML_sep.$HTML_dvcs.$HTML_notes.$HTML_end;
  SetValue($HTMLbox_HMi, $HTMLbox_str);

  $HTML_file = fopen(IPS_GetKernelDir()."HMinventory_test.html",'wb');
  fwrite($HTML_file,$HTMLbox_str);
  fclose($HTML_file);
}
else
{
  print $HTML_intro;
  print $HTML_ifcs;
  print $HTML_sep;
  print $HTML_dvcs;
  print $HTML_notes;
  print $HTML_end;
}

if ( $Save_as_HTMLfile != null )
{
  $HTML_file = fopen($Save_as_HTMLfile,'wb');
  fwrite($HTML_file,'<html><head><style type="text/css">');
  fwrite($HTML_file,'html,body {font-family:Arial,Helvetica,sans-serif;font-size:12px;background-color:#000000;color:#dddddd;}');
  fwrite($HTML_file,'</style></head><body>');
  fwrite($HTML_file,$HTML_intro);
  fwrite($HTML_file, "<tr><td colspan=3><table width='100%' align='left'bgcolor=#112233><tr><td><h1>HM inventory</h1></td></tr></table></td></tr>");
  fwrite($HTML_file,$HTML_ifcs);
  fwrite($HTML_file,$HTML_sep);
  fwrite($HTML_file,$HTML_dvcs);
  fwrite($HTML_file,$HTML_notes);
  fwrite($HTML_file,$HTML_end);
  fwrite($HTML_file,'</body></html>');
  fclose($HTML_file);
}


return 0;


// --------------------------------------------------------------------------------------------


function CreateVariableByName($id, $name, $type, $icon, $profile, $pos)
{
  global $IPS_SELF;
  $vid = @IPS_GetVariableIDByName($name, $id);
  if($vid === false)
  {
    $vid = IPS_CreateVariable($type);
    IPS_SetParent($vid, $id);
    IPS_SetName($vid, $name);
    IPS_SetPosition($vid, $pos);
    IPS_SetIcon($vid, $icon);
    IPS_SetVariableCustomProfile($vid, $profile);
    IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
  }
  return $vid;
}


function usort_HM_address($a, $b)
{
  $result = strcasecmp($a['HM_address'], $b['HM_address']);

  $a_adr = explode(':',$a['HM_address']);
  $b_adr = explode(':',$b['HM_address']);
  if ( sizeof($a_adr)==2 && sizeof($b_adr)==2  )
  {
    if ( strcasecmp($a_adr[0], $b_adr[0])==0 )
      $result = (int)$a_adr[1]>$b_adr[1];
  }
  return $result;
}
function usort_IPS_id($a, $b)
{
  return ($a['IPS_id'] > $b['IPS_id']);
}
function usort_IPS_dev_name($a, $b)
{
  if ( ($result = strcasecmp($a['IPS_name'], $b['IPS_name'])) == 0 )
    $result =  usort_HM_address($a, $b);
  return $result;
}
function usort_HM_device_adr($a, $b)
{
  if ( ($result = strcasecmp($a['HM_device'], $b['HM_device'])) == 0 )
    $result =  usort_HM_address($a, $b);
  return $result;
}
function usort_HM_type($a, $b)
{
  if ( ($result = strcasecmp($a['HM_devtype'], $b['HM_devtype'])) == 0 )
    $result =  usort_HM_address($a, $b);
  return $result;
}


// --------------------------------------------------------------------------------------------


function CCU_generate_deviceList(&$ccu_dev_list, $ccu_client)
{
  add_to_deviceList('BidCoS-RF', $ccu_dev_list, $ccu_client);

  foreach ( IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $id )
  {
    $HM_Par_address = substr(HM_GetAddress($id),0,10);
    $hm_dev_in_list = FALSE;
    foreach ( $ccu_dev_list as $hm_dev )
    {
      if ( $HM_Par_address == substr($hm_dev['ADDRESS'],0,10) )
      {
        $hm_dev_in_array = TRUE;
        break;
      }
    }
    if ( $hm_dev_in_list == FALSE )
      add_to_deviceList($HM_Par_address, $ccu_dev_list, $ccu_client);
  }
}

function add_to_deviceList($HM_Par_address, &$ccu_dev_list, $ccu_client)
{
  $xml_method = new xmlrpcmsg("getDeviceDescription", array(new xmlrpcval($HM_Par_address, "string")) );
  $xml_rtnmsg = $ccu_client->send($xml_method);
  if ( $xml_rtnmsg->errno == 0 )
  {
    $HM_device = php_xmlrpc_decode($xml_rtnmsg->value());
    $ccu_dev_list[] = $HM_device;
  }
  for ( $dev_ch=0 ; $dev_ch < 100 ; $dev_ch++ )
  {
    $HM_address = $HM_Par_address.':'.$dev_ch;
    $xml_method = new xmlrpcmsg("getDeviceDescription", array(new xmlrpcval($HM_address, "string")) );
    $xml_rtnmsg = $ccu_client->send($xml_method);
    if ( $xml_rtnmsg->errno == 0 )
    {
      $HM_device = php_xmlrpc_decode($xml_rtnmsg->value());
      $ccu_dev_list[] = $HM_device;
    }
    else
      break;
  }
}

?>

Hallo,

also alles alte gelöscht, neues Skript angelegt, Inhalt von Post #131 reinkopiert, ausgeführt und:

Gleicher Fehler wie zuvor jedoch in Zeile 178.

Und nu???

Gruß Proxima

ich rate jetzt auch nur:

hast Du deinen HM-Kram via LAN-Adapter oder via CCU angebunden?

evtl. liegts dann an der falschen Modul-ID

probiert doch mal diese hier aus (Zeile 110):


[i]HomeMatic Configurator = {5214C3C6-91BC-4FE1-A2D9-A3920261DA74}
HomeMatic Device = {EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}
HomeMatic Socket = {A151ECE9-D733-4FB9-AA15-7F7DD10C58AF}
[/i]

Falls Du ne CCU hast: haste das hier auch gelesen/beachtet?

Hallo,

HM-Kram ist via CCU angebunden. Diese hat die Firmware 1.504. Den XMLAPI-Patch habe ich als Zusatzsoftware installiert.

Die erste und dritte ID habe ich versucht, dann kommt die Fehlermeldung:

Warning:  hm_getaddress: Instance #23444 does not implement this function! in C:\IP-Symcon\Scripts\56606.ips.php on line 119

Notice:  Undefined variable: HM_Interface in C:\IP-Symcon\Scripts\56606.ips.php on line 179

Notice:  Undefined variable: HM_Roaming in C:\IP-Symcon\Scripts\56606.ips.php on line 179

Die zweite ID stand schon so im Skript drin.

Beim zweiten Tipp meinst Du das auskommentieren der define Zeile für CCU??? Das habe ich gemacht (also ist kein Kommentar).

Weitere Vorschläge???

Gruß Proxima

hm, da hab ich auch keine Idee mehr. frag doch mal bei Werner oder Rainer an, die stecken hier tiefer im Thema.

Hallo,

und, habt Ihr oder sonst wer noch eine Idee ???

Gruß Proxima

Skript von Rakete ist OK.

Somit hast Du den selben Stand wie ich.

CCU mit 1.504
XML-Patch auf der CCU

was noch sein könnte, ist aber nur so aus dem Hut gezaubert, vielleicht die xmlrpc.inc.php.

Habe Dir mal meine angehängt. Probier diese doch mal.

Sollte es dann auch nicht funktionieren kann ich Dir auch nicht weiterhelfen.

xmlrpc.inc.rar (28.6 KB)

Hallo,

xmlrpc.inc.php habe ich ausgetauscht --> keine Besserung. Fehler noch immer vorhanden.

Die Variablen werden doch aber deklariert. Evtl. ein Problem mit PHP 5.4 ???

Gruß Proxima

Hi Proxima,

das kann ich mir nicht vorstellen: bei mir, Werner und einigen anderen Usern läuft es problemlos und nachweislich.
Es muß also m.E. ein lokales Problem sein. Aber wie schon geschrieben: ich hab dazu auch keine Idee mehr

Hallo,

ich habe das Script aus #132 gerade bei mir installiert und es läuft - Danke dafür

habe gerade eben das Script installiert und nach ein paar DAU-Fehlern zum laufen gebracht.

Wie sagt man so schön, der größte Fehler sitzt oft 40 cm vor dem Bildschirm

LG