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.
