Простые устройства / Simple Devices описание методов

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Простые устройства / Simple Devices описание методов

Сообщение Gelezako » Ср янв 24, 2018 1:56 pm

tarasfrompir1 писал(а):Железко для Тебя ответил в шапку...
я нашёл обновление про то что добавил запись в первый пост как формируется HomeStatus, но уточнения какое свойство использовалось к примеру для датчика движения нет. Я про фразу:
"7. Если НЕактивировано "Никого нет дома" (NobodyHomeMode.active) то запускает метод (NobodyHomeMode.deactivate) устанавливает значение что КТО ТО ДОМА."
Я немного разобрался и вот как раз простые устройства уже оперируют свойством "ThisComputer.somebodyHomeText".

Резюмирую:
"ThisComputer.HomeStatus" инициализируется в onNewMinute
"ThisComputer.somebodyHomeText" инициализируется в простых устройствах
поправьте если что
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Простые устройства / Simple Devices описание методов

Сообщение Gelezako » Ср янв 24, 2018 2:08 pm

Logrus писал(а): ThisComputer.HomeStatus
вызывается раз в минуту и находится в Timer onNewMinute
можно и изменить под себя
я некоторое время использовал этот код в onNewMinute, но получается что в HomeStatus почти всегда устанавливает значение "Дома никого". Редкие вызовы метода cm("NobodyHomeMode.deactivate") лишь могут сбросить это состояние в "Дома кто-то есть" и то только на одну минуту. Как то это не очень точно описывает ситуацию нахождения кого-то дома. У вас такое же поведение?
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Простые устройства / Simple Devices описание методов

Сообщение tarasfrompir » Ср янв 24, 2018 3:39 pm

Не прав у меня точно срабатывало на датчик движения и писало что кто-то дома и в какой комнате (если датчик привязан к комнате)
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} */
.
Последний раз редактировалось tarasfrompir Ср янв 24, 2018 4:15 pm, всего редактировалось 3 раза.
Спасибо нам ПОМОЖЕТ..!
Logrus
Сообщения: 2084
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Простые устройства / Simple Devices описание методов

Сообщение Logrus » Ср янв 24, 2018 4:00 pm

У вас такое же поведение?
Нет, у меня в коннекте класс юзерс, класс режимы работы об!ект никогонетдома, может и еще где.
Т.е. если есть пользователь по вайфай или жпс, ствавится единичка, сбрасывается таймером через полчаса
в принципе аналогично и датчики движения в комнатах
в режиме уже это проверяется и в зависимости от условий 0,1,2 кто-то дома, никого нет, все спят
там еще сбрасывание таймеров от простых устройств и вызов онактивити при переключении режима, все работает (вроде идеально, хм)
За это сообщение автора Logrus поблагодарил:
Samir77 (Ср май 27, 2020 1:06 am)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Простые устройства / Simple Devices описание методов

Сообщение tarasfrompir » Ср янв 24, 2018 4:12 pm

Для Gelezako
Не обязательно смотри 2 поста выше... где ПС ДляLogrus
ВОТ ТУТ ТЕПЕРЬ И ПРОБЛЕМА у кого деактивировано простые устройства тот пользуется методом. у кого нет тот по идее должен убрать все до инжекции в методе Rooms.onActivity и Rooms.updateActivityStatus.
Поставил на работе так версию 1.1 так там все это есть и само тело метода и инжекция...
Получается надо делится на две половинки у кого активировано простые устройства и у кого отключены оные...
Буду двигаться к ПРОСТЫМ устройствам... (мне нравится как бы их не хаяли).
Спасибо нам ПОМОЖЕТ..!
Logrus
Сообщения: 2084
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Простые устройства / Simple Devices описание методов

Сообщение Logrus » Ср янв 24, 2018 4:43 pm

я использую простые устройства, но из- за определения пользователей по вайфаю и жпс, пришлось извращаться, попутно и все спят туда же сделал
вот и про гибкость, что раньше говорил и про боязнь что там что- либо поменяется и т.д.
За это сообщение автора Logrus поблагодарил:
Samir77 (Ср май 27, 2020 1:06 am)
Рейтинг: 1.16%
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Простые устройства / Simple Devices описание методов

Сообщение tarasfrompir » Ср янв 24, 2018 5:03 pm

Да все просто - небыло Полной логики .
Счас начали напихать ее понемногу - но пока толку не много...
Но ничего прорвемся...
Спасибо нам ПОМОЖЕТ..!
Logrus
Сообщения: 2084
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Простые устройства / Simple Devices описание методов

Сообщение Logrus » Ср янв 24, 2018 6:24 pm

с предыдущей страницы
// у кого-то видел местоположение пользователя по gps выводят
с seenAt и изменение в модуле жпс трекер (портянка с геолокации и была в отдельном свойстве)
имхо, у разработчиков у самих нет окончательного и полного видения
это ни в коей мере ни к кому не в обиду сказано
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Аватара пользователя
tarasfrompir
Сообщения: 3216
Зарегистрирован: Ср мар 02, 2016 8:18 pm
Откуда: Украина Пирятин
Благодарил (а): 223 раза
Поблагодарили: 815 раз

Re: Простые устройства / Simple Devices описание методов

Сообщение tarasfrompir » Чт янв 25, 2018 10:53 am

По поводу seenAt - по моим разборам она нигде не задействована - кроме как на стартовой странице -
По логике вещей она должна отображать последнее место положение данного пользователя.
Но слово последнее мне не нравится. Както уж если гулять так гулять.... Пусть бы всегда показывало...(ПО ГПС определять или другими вариантами?)
Ниоткуда не берется - ее и я пытаюсь задействовать... (в распознавании лиц).
ПС
Сейчас с этим застрял в чисто (електрическом) вопросе..
Кончилась халява а комп жрет немало - думаю над переходом на более экономный вариант...
Поэтому пока только на работе прорабатываю...
Спасибо нам ПОМОЖЕТ..!
Logrus
Сообщения: 2084
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Простые устройства / Simple Devices описание методов

Сообщение Logrus » Чт фев 01, 2018 2:14 am

Для Logrus - все таки теперь имеет (если в методе Rooms.onActivity)
не имеет и в первом посту ошибка
А уж этот только этот метод устанавливает значение ThisComputer.somebodyHomeText а уж потом метод onNewMinute каждую минуту обновляет значение ThisComputer.HomeStatus из значения ThisComputer.somebodyHomeText.
По поводу seenAt - по моим разборам она нигде не задействована - кроме как на стартовой странице
в нее из модуля жпс пишется
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Ответить