В ней будут объекты класса Rooms у которых есть разные датчики класса (и подклассов) keySensors, связанные с помощью их свойства LinkedRoom.
Неживые серым цветом. Объекты подкласса AlarmSensors, в моем случае class_id = 52 тоже выделены.
Написал на коленках, на красивый дизайн не претендую. Делал чтобы убедиться, что у меня тут порядок. Но в итоге отловил 4 инцидента, о которых даже не подозревал или уже давно забыл. Таблицу можно повесить в домашние страницы, но я применяю только в технических целях. Запускаю сценарий по ссылке и смотрю результат.
Код сценария:
Код: Выделить всё
$f=0; // флаг начала комнаты
$t=0; // флаг начала таблицы
$locat=['','Дом','Баня','Подсобка','Улица','Теплица','Курятник'];
$objRooms=getObjectsByClass('Rooms');
$objSensors=getObjectsByClass('keySensors');
foreach($objRooms as $objr) {
$objr=getObject($objr['TITLE']);
foreach($objSensors as $objs) {
$objs=getObject($objs['TITLE']);
if ($objr->object_title == $objs->getProperty('LinkedRoom')) {
// При первом разе открыть спойлер с именем комнаты
if (!$f) {
$f=1;
echo '<details open>'.
'<summary><big>'.
'<b style="color:#008080">'. $objr->description .' '. $objr->object_title .'</b>'.
'<b style="color:#ff0000">'. $objr->getProperty('Alarms').'</b>'.
'</big></summary>';
}
if (!$t) {
echo '<table border="1" bordercolor="grey">'; $t=1;
echo '<tr>';
echo '<td>ID</td>';
echo '<td>Название</td>';
echo '<td>Статус</td>';
echo '<td>Описание</td>';
echo '<td>Локация</td>';
echo '<td>Живой</td>';
echo '<td>Обновлен</td>';
echo '</tr>';
}
// Разный цвет текста
if ($objs->getProperty('alive')<1) { $cn='<font color="gray">'; $ce='</font>'; }
elseif ($objs->class_id==52) { $cn='<font color="red">'; $ce='</font>'; }
else { $cn=''; $ce=''; }
// Напечатать имена и описание объектов
echo '<tr>';
echo '<td>'.$cn.$objs->id.$ce.'</td>';
echo '<td>'.$cn.$objs->object_title.$ce.'</td>';
echo '<td>'.$cn.$objs->getProperty('status').$ce.'</td>';
echo '<td>'.$cn.$objs->description.$ce.'</td>';
echo '<td>'.$cn.$locat[$objs->location_id].$ce.'</td>';
echo '<td>'.$cn.$objs->getProperty('alive').$ce.'</td>';
$updt=$objs->getProperty('updated');
if ($updt) { echo '<td>'.$cn.date("d.m.Y H:i", $updt).$ce.'</td>'; }
echo '</tr>';
}
}
if ($t) { echo '</table>'; $t=0;}
if ($f) { echo '</details><br />'; $f=0;}
}
'<b style="color:#ff0000">'. $objr->getProperty('Alarms').'</b>'.
оставил для примера как добавить нужное свойство объекта комнаты в название.