Для затравки - смотрю люди мучаются .....
САМИ МЕТОДЫ ОПИСАНЫ ИЗ ФАЙЛОВ - ТО ЧТО У ВАС ДОПИСАНО В МАЖОРИКЕ НЕ ВКЛЮЧЕНО ЗДЕСЬ...!!!
МЕТОД SDevices_statusUpdated запускается при изменении значения свойства устройство.status
ЕСЛИ ОПЯТЬ НИЧЕГО НЕ ПОЛУЧИЛИ ТО заканчиваем метод.
2. Берет переменную NobodyHomeMode.active (определяет активировано ли НИКОГО НЕТ ДОМА)
3. Устанавливает таймер на 20 секунд.
4. Устанавливает значение на то что датчи активирован.
5. Запускает метод logicAction для текущего датчика.
6. Если активировано "Никого нет дома" (NobodyHomeMode.active) и включено игнорирование срабатывание датчика то ПРЕКРАЩАЕТ работу текущего метода.
7. Если НЕактивировано "Никого нет дома" (NobodyHomeMode.active) то запускает метод (NobodyHomeMode.deactivate) (ЛАЖОНУЛСЯ - устанавливает значение что КТО ТО ДОМА -изменяет) Этот метод нихрена пока что не делает.
8. И запускает таймер на 1 час для указания того что ктото ДОМА.
9. Указавает в связаной комнате (где установлен датчик движения) что КТО ТО в этой КОМНАТЕ. (Запускает мемод onActivity для связаной комнаты.)
то включает все устрйства
2. То же и при включении режима ЕКО - но с точностью до наооборот...
2. этот же метод запускает updateActivityStatus.
А тот в свою очередь проверяет все комнаты на присутствие 1 в SomebodyHere. и сообщает (передает значение в титульную страницу ) есть ли кто здесь.
После этого метод updateActivityStatus ждет время заданое в IdleDelay (которого кстати нет в свойствах комнаты надо создать самому ну или ждет 10 минут которые прописаны жестко в коде - это срок задержки на перевод в состояние onIdle)
И переводит комнаты в состояние onIdle. И после опять сообщает что ктото в комнате (ах) уже был на титульной странице Мажордома.
2. А вот ДЕАктивация - выключает все устройства у которых указано - "выключать на рассвете"
Датчик открытия/закрытия
2. запускает метод setUpdatedText
3. Выставляет значения на датчик что тот жив
4. Если присутсвует поле aliveTimeout (в часах) то берет из него данные и запускает
таймер на время в часах на указание того что датчик мертв.
ЕСЛИ же такого поля нет то время указывается для этого таймера 2 суток.
5. Если указано значение isActivity (обращать внимание на этот датчик при срабатывании в комнате)
и если активирован режим никого нет дома то запускется метод деактивации режима НИкого нет доМА
6. очищаются все таймеры на НИКОГО НЕТ ДОМА
7. и запускается таймер на 1 час для активации метода НИКОГО НЕТ ДОМА
8. Если датчик привязан к комнате то запускается метод активности в комнате
9. запускается метод logicAction для этого датчика
Такая переменна ThisComputer.nobodyHome не используется - со слов Сергея
И указывает его в стандартной шапке страницы
2. Иначе Указывает что в определенных комнатах произошла активность.
Код: Выделить всё
if ($linked_room) {
callMethodSafe($linked_room.'.onActivity', array('sensor'=>$ot));
}
Код: Выделить всё
if ($linked_room) {
callMethodSafe($linked_room.'.onActivity', array('sensor'=>$ot));
}
а тот в свою очередь запускает метод комната.Rooms_updateActivityStatus (тоесть это - Rooms_updateActivityStatus).
Код: Выделить всё
if (getGlobal('NobodyHomeMode.active')) {
$somebodyHomeText = LANG_DEVICES_ROOMS_NOBODYHOME." ".LANG_DEVICES_ROOMS_ACTIVITY." " . date('H:i', $rooms[0]['time']) . " (" . $rooms[0]['room'] . ")";
} else {
$res_rooms = array();
for ($i = 0; $i < $total; $i++) {
if ($rooms[$i]['active']) {
$res_rooms[] = $rooms[$i]['room'];
}
}
$somebodyHomeText = LANG_DEVICES_ROOMS_SOMEBODYHOME." ". LANG_DEVICES_ROOMS_ACTIVITY . " " . implode(", ", $res_rooms);
}
echo $somebodyHomeText;
setGlobal('somebodyHomeText', $somebodyHomeText);
А на основной странице отображается %ThisComputer.somebodyHomeText% состояние что кто то дома
..
от где то так...