Страница 2 из 11
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср янв 24, 2018 1:56 pm
Gelezako
tarasfrompir1 писал(а):Железко для Тебя ответил в шапку...
я нашёл обновление про то что добавил запись в первый пост как формируется HomeStatus, но уточнения какое свойство использовалось к примеру для датчика движения нет. Я про фразу:
"7. Если НЕактивировано "Никого нет дома" (NobodyHomeMode.active) то запускает метод (NobodyHomeMode.deactivate) устанавливает значение что КТО ТО ДОМА."
Я немного разобрался и вот как раз простые устройства уже оперируют свойством "ThisComputer.somebodyHomeText".
Резюмирую:
"ThisComputer.HomeStatus" инициализируется в onNewMinute
"ThisComputer.somebodyHomeText" инициализируется в простых устройствах
поправьте если что
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср янв 24, 2018 2:08 pm
Gelezako
Logrus писал(а):
ThisComputer.HomeStatus
вызывается раз в минуту и находится в Timer onNewMinute
можно и изменить под себя
я некоторое время использовал этот код в onNewMinute, но получается что в HomeStatus почти всегда устанавливает значение "Дома никого". Редкие вызовы метода cm("NobodyHomeMode.deactivate") лишь могут сбросить это состояние в "Дома кто-то есть" и то только на одну минуту. Как то это не очень точно описывает ситуацию нахождения кого-то дома. У вас такое же поведение?
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср янв 24, 2018 3:39 pm
tarasfrompir
Не прав у меня точно срабатывало на датчик движения и писало что кто-то дома и в какой комнате (если датчик привязан к комнате)
ThisComputer.somebodyHomeText -действительно получает значение от метода Простые устройства Rooms_updateActivityStatus который всегда срабатывает при определении движения.
Описание порядка получения присутствия того что кто то дома - пример дачтик движения
ИТО ЭТО УПРОЩЕННО
Код: Выделить всё
if ($linked_room) {
callMethodSafe($linked_room.'.onActivity', array('sensor'=>$ot));
}
Вот этот код из SMotions_motionDetected запускает метод комната.onActivity (тоесть это - Rooms_onActivity) (
если датчик привязан к комнате)
Код: Выделить всё
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 а уж потом метод onNewMinute каждую минуту обновляет значение ThisComputer.HomeStatus из значения ThisComputer.somebodyHomeText.
Код: Выделить всё
if (getGlobal('NobodyHomeMode.active')) {
$homeStatus.=' Дома никого';
} else {
$homeStatus.=' Дома кто-то есть';
}
$homeStatus.=' '.getGlobal('Security.stateDetails');
$homeStatus.=' '.getGlobal('System.stateDetails');
$homeStatus.=' '.getGlobal('Communication.stateDetails');
setGlobal('HomeStatus',$homeStatus);
вот где то так...
ПС
Для Logrus - все таки теперь имеет (если в методе Rooms.onActivity)
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/Rooms_onActivity.php');
/* end injection of {SDevices} */
Если же так прописано то не имеет - просто происходит дубляж действий и в самом методе и в инжекции
$latestActivity=$this->getProperty('LatestActivity');
$this->setProperty('LatestActivity',time());
$this->setProperty('LatestActivityTime',date('H:i'));
$this->setProperty('SomebodyHere',1);
$ot=$this->object_title;
if ($this->getProperty("IdleDelay")) {
$activity_timeout=(int)$this->getProperty("IdleDelay");
} else {
$activity_timeout=10*60;
}
clearTimeOut($ot."_activity_timeout");
setTimeOut($ot."_activity_timeout","callMethod('".$ot.".onIdle');",$activity_timeout);
$this->callMethod("updateActivityStatus");
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/Rooms_onActivity.php');
/* end injection of {SDevices} */
.
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср янв 24, 2018 4:00 pm
Logrus
У вас такое же поведение?
Нет, у меня в коннекте класс юзерс, класс режимы работы об!ект никогонетдома, может и еще где.
Т.е. если есть пользователь по вайфай или жпс, ствавится единичка, сбрасывается таймером через полчаса
в принципе аналогично и датчики движения в комнатах
в режиме уже это проверяется и в зависимости от условий 0,1,2 кто-то дома, никого нет, все спят
там еще сбрасывание таймеров от простых устройств и вызов онактивити при переключении режима, все работает (вроде идеально, хм)
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср янв 24, 2018 4:12 pm
tarasfrompir
Для Gelezako
Не обязательно смотри 2 поста выше... где ПС ДляLogrus
ВОТ ТУТ ТЕПЕРЬ И ПРОБЛЕМА у кого деактивировано простые устройства тот пользуется методом. у кого нет тот по идее должен убрать все до инжекции в методе Rooms.onActivity и Rooms.updateActivityStatus.
Поставил на работе так версию 1.1 так там все это есть и само тело метода и инжекция...
Получается надо делится на две половинки у кого активировано простые устройства и у кого отключены оные...
Буду двигаться к ПРОСТЫМ устройствам... (мне нравится как бы их не хаяли).
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср янв 24, 2018 4:43 pm
Logrus
я использую простые устройства, но из- за определения пользователей по вайфаю и жпс, пришлось извращаться, попутно и все спят туда же сделал
вот и про гибкость, что раньше говорил и про боязнь что там что- либо поменяется и т.д.
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср янв 24, 2018 5:03 pm
tarasfrompir
Да все просто - небыло Полной логики .
Счас начали напихать ее понемногу - но пока толку не много...
Но ничего прорвемся...
Re: Простые устройства / Simple Devices описание методов
Добавлено: Ср янв 24, 2018 6:24 pm
Logrus
с предыдущей страницы
// у кого-то видел местоположение пользователя по gps выводят
с seenAt и изменение в модуле жпс трекер (портянка с геолокации и была в отдельном свойстве)
имхо, у разработчиков у самих нет окончательного и полного видения
это ни в коей мере ни к кому не в обиду сказано
Re: Простые устройства / Simple Devices описание методов
Добавлено: Чт янв 25, 2018 10:53 am
tarasfrompir
По поводу seenAt - по моим разборам она нигде не задействована - кроме как на стартовой странице -
По логике вещей она должна отображать последнее место положение данного пользователя.
Но слово последнее мне не нравится. Както уж если гулять так гулять.... Пусть бы всегда показывало...(ПО ГПС определять или другими вариантами?)
Ниоткуда не берется - ее и я пытаюсь задействовать... (в распознавании лиц).
ПС
Сейчас с этим застрял в чисто (електрическом) вопросе..
Кончилась халява а комп жрет немало - думаю над переходом на более экономный вариант...
Поэтому пока только на работе прорабатываю...
Re: Простые устройства / Simple Devices описание методов
Добавлено: Чт фев 01, 2018 2:14 am
Logrus
Для Logrus - все таки теперь имеет (если в методе Rooms.onActivity)
не имеет и в первом посту ошибка
А уж этот только этот метод устанавливает значение ThisComputer.somebodyHomeText а уж потом метод onNewMinute каждую минуту обновляет значение ThisComputer.HomeStatus из значения ThisComputer.somebodyHomeText.
По поводу seenAt - по моим разборам она нигде не задействована - кроме как на стартовой странице
в нее из модуля жпс пишется