Простые устройства / Simple Devices описание методов
Добавлено: Чт янв 18, 2018 3:26 pm
Положу здесь описание методов простых устройств...
Для затравки - смотрю люди мучаются .....
САМИ МЕТОДЫ ОПИСАНЫ ИЗ ФАЙЛОВ - ТО ЧТО У ВАС ДОПИСАНО В МАЖОРИКЕ НЕ ВКЛЮЧЕНО ЗДЕСЬ...!!!
МЕТОД SDevices_statusUpdated запускается при изменении значения свойства устройство.status
ДАТЧИК ДВИЖЕНИЯ
Режим еко ---
МЕТОД Rooms_onActivity.php -(тут нашел старую запись немного сумбурную)
метод ТЕМНОЕ ВРЕМЯ СУТОК (не ночной режим)
НОЧНОЙ РЕЖИМ - пока ничего не делает...
Датчик открытия/закрытия
ПЕРЕМЕННЫЕ Свойства обьектов
Такая переменна ThisComputer.nobodyHome не используется - со слов Сергея
ThisComputer.somebodyHomeText - получает значение при запуске метода Rooms_updateActivityStatus
И указывает его в стандартной шапке страницы
%ThisComputer.somebodyHomeText%- получает значение от простых устройств...
Для простых устройств переменная устройство.status при активации ее в 1 запускает всю цепь событий простых устройств...
Для затравки - смотрю люди мучаются .....
САМИ МЕТОДЫ ОПИСАНЫ ИЗ ФАЙЛОВ - ТО ЧТО У ВАС ДОПИСАНО В МАЖОРИКЕ НЕ ВКЛЮЧЕНО ЗДЕСЬ...!!!
МЕТОД SDevices_statusUpdated запускается при изменении значения свойства устройство.status
СпойлерПоказать
обновляет время последнего срабатывания устройство.updatedText
СпойлерПоказать
1. Ждем переменные от метода SDevices_statusUpdated.php, если еще не выполнен то ждем еще 3 секунды к его исполнению.
ЕСЛИ ОПЯТЬ НИЧЕГО НЕ ПОЛУЧИЛИ ТО заканчиваем метод.
2. Берет переменную NobodyHomeMode.active (определяет активировано ли НИКОГО НЕТ ДОМА)
3. Устанавливает таймер на 20 секунд.
4. Устанавливает значение на то что датчи активирован.
5. Запускает метод logicAction для текущего датчика.
6. Если активировано "Никого нет дома" (NobodyHomeMode.active) и включено игнорирование срабатывание датчика то ПРЕКРАЩАЕТ работу текущего метода.
7. Если НЕактивировано "Никого нет дома" (NobodyHomeMode.active) то запускает метод (NobodyHomeMode.deactivate) (ЛАЖОНУЛСЯ - устанавливает значение что КТО ТО ДОМА -изменяет) Этот метод нихрена пока что не делает.
8. И запускает таймер на 1 час для указания того что ктото ДОМА.
9. Указавает в связаной комнате (где установлен датчик движения) что КТО ТО в этой КОМНАТЕ. (Запускает мемод onActivity для связаной комнаты.)
ЕСЛИ ОПЯТЬ НИЧЕГО НЕ ПОЛУЧИЛИ ТО заканчиваем метод.
2. Берет переменную NobodyHomeMode.active (определяет активировано ли НИКОГО НЕТ ДОМА)
3. Устанавливает таймер на 20 секунд.
4. Устанавливает значение на то что датчи активирован.
5. Запускает метод logicAction для текущего датчика.
6. Если активировано "Никого нет дома" (NobodyHomeMode.active) и включено игнорирование срабатывание датчика то ПРЕКРАЩАЕТ работу текущего метода.
7. Если НЕактивировано "Никого нет дома" (NobodyHomeMode.active) то запускает метод (NobodyHomeMode.deactivate) (ЛАЖОНУЛСЯ - устанавливает значение что КТО ТО ДОМА -изменяет) Этот метод нихрена пока что не делает.
8. И запускает таймер на 1 час для указания того что ктото ДОМА.
9. Указавает в связаной комнате (где установлен датчик движения) что КТО ТО в этой КОМНАТЕ. (Запускает мемод onActivity для связаной комнаты.)
СпойлерПоказать
1. При выключени режима ЕКО... Перебирает все устройства имеющие свойство - groupEcoOn и если оно (свойство имеет значение 1 )
то включает все устрйства
2. То же и при включении режима ЕКО - но с точностью до наооборот...
то включает все устрйства
2. То же и при включении режима ЕКО - но с точностью до наооборот...
СпойлерПоказать
1. обновляется состояние присутствия в комнате (комната.SomebodyHere - назначает 1)
2. этот же метод запускает updateActivityStatus.
А тот в свою очередь проверяет все комнаты на присутствие 1 в SomebodyHere. и сообщает (передает значение в титульную страницу ) есть ли кто здесь.
После этого метод updateActivityStatus ждет время заданое в IdleDelay (которого кстати нет в свойствах комнаты надо создать самому ну или ждет 10 минут которые прописаны жестко в коде - это срок задержки на перевод в состояние onIdle)
И переводит комнаты в состояние onIdle. И после опять сообщает что ктото в комнате (ах) уже был на титульной странице Мажордома.
2. этот же метод запускает updateActivityStatus.
А тот в свою очередь проверяет все комнаты на присутствие 1 в SomebodyHere. и сообщает (передает значение в титульную страницу ) есть ли кто здесь.
После этого метод updateActivityStatus ждет время заданое в IdleDelay (которого кстати нет в свойствах комнаты надо создать самому ну или ждет 10 минут которые прописаны жестко в коде - это срок задержки на перевод в состояние onIdle)
И переводит комнаты в состояние onIdle. И после опять сообщает что ктото в комнате (ах) уже был на титульной странице Мажордома.
СпойлерПоказать
1. Активация этого режима - пока не дает ничего
2. А вот ДЕАктивация - выключает все устройства у которых указано - "выключать на рассвете"
2. А вот ДЕАктивация - выключает все устройства у которых указано - "выключать на рассвете"
Датчик открытия/закрытия
СпойлерПоказать
1. Обновляет время срабатывания датчика
2. запускает метод setUpdatedText
3. Выставляет значения на датчик что тот жив
4. Если присутсвует поле aliveTimeout (в часах) то берет из него данные и запускает
таймер на время в часах на указание того что датчик мертв.
ЕСЛИ же такого поля нет то время указывается для этого таймера 2 суток.
5. Если указано значение isActivity (обращать внимание на этот датчик при срабатывании в комнате)
и если активирован режим никого нет дома то запускется метод деактивации режима НИкого нет доМА
6. очищаются все таймеры на НИКОГО НЕТ ДОМА
7. и запускается таймер на 1 час для активации метода НИКОГО НЕТ ДОМА
8. Если датчик привязан к комнате то запускается метод активности в комнате
9. запускается метод logicAction для этого датчика
2. запускает метод setUpdatedText
3. Выставляет значения на датчик что тот жив
4. Если присутсвует поле aliveTimeout (в часах) то берет из него данные и запускает
таймер на время в часах на указание того что датчик мертв.
ЕСЛИ же такого поля нет то время указывается для этого таймера 2 суток.
5. Если указано значение isActivity (обращать внимание на этот датчик при срабатывании в комнате)
и если активирован режим никого нет дома то запускется метод деактивации режима НИкого нет доМА
6. очищаются все таймеры на НИКОГО НЕТ ДОМА
7. и запускается таймер на 1 час для активации метода НИКОГО НЕТ ДОМА
8. Если датчик привязан к комнате то запускается метод активности в комнате
9. запускается метод logicAction для этого датчика
Такая переменна ThisComputer.nobodyHome не используется - со слов Сергея
СпойлерПоказать
ThisComputer.nobodyHome -- такой переменной у меня нигде не используется и в поиске не могу найти. Есть NobodyHomeMobde.active -- это в отдельном объекте.
И указывает его в стандартной шапке страницы
СпойлерПоказать
1. Если активно Никого нет домА - то указывает что кто то был и в каких комнатах была активность.
2. Иначе Указывает что в определенных комнатах произошла активность.
2. Иначе Указывает что в определенных комнатах произошла активность.
СпойлерПоказать
Описание порядка получения присутствия того что кто то дома - пример датчик движения ОБЯЗАТЕЛЬНО ДОЛЖЕН БЫТЬ ПРИВЯЗАН К КОМНАТЕ
Вот этот код из SMotions_motionDetected запускает метод комната.onActivity (тоесть это - Rooms_onActivity) (если датчик привязан к комнате)
а тот в свою очередь запускает метод комната.Rooms_updateActivityStatus (тоесть это - Rooms_updateActivityStatus).
А на основной странице отображается %ThisComputer.somebodyHomeText% состояние что кто то дома
..
от где то так...
Код: Выделить всё
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% состояние что кто то дома
..
от где то так...