//Скрипт для MD, поиск устройств в сети, создание объектов MD, создание и заполнение свойств объектов MD
include_once(DIR_MODULES.'Yeelight/Yeelight_library.php');
//Создание класса MD Yeelight, классовых свойств и методов
addClass('Yeelight');
addClassProperty('Yeelight', 'id', 0); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 0 дней
addClassProperty('Yeelight', 'model', 0);
addClassProperty('Yeelight', 'status', 0);
addClassProperty('Yeelight', 'model', 0);
addClassProperty('Yeelight', 'bright', 0);
addClassProperty('Yeelight', 'Location', 0);
addClassProperty('Yeelight', 'name', 0);
addClassProperty('Yeelight', 'support', 0);
addClassMethod('Yeelight', 'on_off');
addClassMethod('Yeelight', 'set_bright');
addClassMethod('Yeelight', 'set_name');
//=======================================
//Создание объектов класса
// Поиск устройств
$client = new YeelightClient();
$bulbList_prop = $client->search_prop();
foreach ($bulbList_prop as $bulb) {
//получаем из массива bulbList_prop характеристики устройств
$id = trim($bulb[id]);
$Location = trim($bulb[Location]);
$model = trim($bulb[model]);
$name = trim($bulb[name]);
$COLOR_MODE = trim($bulb[color_mode]);
$powerTXT = $bulb[power];
if ($powerTXT == "on") { $power = 1; }
if ($powerTXT = "off") { $power = 0; }
$bright = trim($bulb[bright]);
$ct = trim($bulb[ct]);
$rgb = dechex($bulb[rgb]);
$hue = trim($bulb[hue]);
$sat = trim($bulb[sat]);
$support = trim($bulb[support]);
//получаем список объектов класса
$objects=getObjectsByClass("Yeelight");
$searhID = 0;
foreach($objects as $obj) {
if ((gg($obj['TITLE'].".id")) == $id){
$searhID += 1;
}
}
if ($searhID) {
echo "Устройство с id".$id." в базе MD уже есть"."<br />";
} else {
echo "Устройство с ID".$id." в базе MD не найдено. Добавляем новый объект"."<br />";
if ($name) {
$objName = $name;
} else {
$objName = "Bulb_".$id;
}
addClassObject('Yeelight', $objName); //создаем объект с новым id
//заполняем классовые свойства объекта
setGlobal($objName.".id",$id);
setGlobal($objName.".model",$model);
setGlobal($objName.".status",$power);
setGlobal($objName.".bright",$bright);
setGlobal($objName.".Location",$Location);
setGlobal($objName.".name",$name);
setGlobal($objName.".support",$support);
//создаем свойства объекта с учетом специфики ламп
if ($model =="stripe" OR $model =="color") {
echo "Лампа цветная - создаем свойства и методы управления цветом"."<br />";
$result = strpos ($support, 'set_rgb');
if ($result) {
setGlobal($objName.".rgb",$rgb);
addClassMethod('Yeelight', 'set_rgb');
echo "Cоздается свойство RGB"."<br />";
}
$result = strpos ($support, 'set_ct_abx');
if ($result) {
setGlobal($objName.".ct",$ct);
addClassMethod('Yeelight', 'set_ct');
echo "Cоздается свойство CT"."<br />";
}
$result = strpos ($support, 'set_hsv');
if ($result) {
setGlobal($objName.".hue",$hue);
setGlobal($objName.".sat",$sat);
addClassMethod('Yeelight', 'set_hsv');
echo "Cоздается свойство HSV"."<br />";
}
} elseif ($model =="mono") {
echo "Лампа монохромная - базовые свойства созданы"."<br />";
}
}
}