Na moim blogu po prawej stronie jest lista moich urządzeń Homematic. Lista generowana jest przy użyciu XMLAPI zainstalowanym na CCU2. Poniżej skrypt PHP, który ją tworzy.
<?php // konfiguracja // adres xmlapi ccu2 $device_xml=file_get_contents("http://192.168.0.10/config/xmlapi/devicelist.cgi"); // poszukiwany ciąg $find = "/interface\=\'([A-Za-z0-9\-]*)\'\ device\_type\=\'([A-Za-z0-9\-]*)\'/"; preg_match_all($find, $device_xml, $matches); // deklaracja pustej tablicy dla listy urządzeń $device_type=array(); // dwa urządzenia (ccu2 + rf-lan) niewidocznych z poziomu xmlapi $device_type['Ethernet']['HM-Cen-O-TW-x-x-2']=1; $device_type['Ethernet']['HM-LGW-O-TW-W-EU']=1; $suma=2; // deklaracja pustej tablicy inrefejsów $interfaces=array(); foreach($matches[2] AS $key=>$type){ if(strlen($type)>0){ $suma++; if(isset($device_type[$matches[1][$key]][$type])){ $device_type[$matches[1][$key]][$type]+=1; } else { $device_type[$matches[1][$key]][$type]=1; } } } // wypisz liczbęurządzeń print_r($suma."\n"); ksort($device_type); // wyświetl listę urządzeń z podziałem na interfejsy print_r("<ul>\n"); $interface_=''; foreach($device_type AS $interface=>$devices){ print '<li>'.array_sum($devices).' x <a href="http://www.homematic.com.pl/?s='.$interface.'">Interfejs \''.$interface.'\'</a><ul>'."\n"; ksort($devices); foreach($devices AS $device=>$ile){ print '<li>'.$ile.' x <a href="http://www.homematic.com.pl/?s='.$device.'">'.$device.'</a></li>'."\n"; } print '</ul></li>'."\n"; } print_r("</ul>\n");
Skrypt uruchamiam np. z konsoli poleceniem jak poniżej zapisując dane do pliku .txt. Równie dobrze można pobrać wynik przeglądarką (wywołując adres skryptu).
php /home/pi/run/lista.php > /home/pi/run/lista.txt
Oczywiście ścieżki do plików należy podać własne.