Mój HomeMatic

Blog opisujący moją przygodę z HomeMatic

Lista urządzeń HM w oparciu o XMLAPI za pomocą PHP

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.

Updated: 22 kwietnia 2018 — 17:37

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Mój HomeMatic © 2016 Frontier Theme