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

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

Модератор: immortal

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

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

Сообщение Gelezako »

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
Контактная информация:

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

Сообщение Gelezako »

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
Откуда: Украина Пирятин

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

Сообщение tarasfrompir »

Не прав у меня точно срабатывало на датчик движения и писало что кто-то дома и в какой комнате (если датчик привязан к комнате)
ThisComputer.somebodyHomeText -действительно получает значение от метода Простые устройства Rooms_updateActivityStatus который всегда срабатывает при определении движения.
Описание порядка получения присутствия того что кто то дома - пример дачтик движения
ИТО ЭТО УПРОЩЕННО
SPOILERSPOILER_SHOW

Код: Выделить всё

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)
SPOILERSPOILER_SHOW
/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/Rooms_onActivity.php');
/* end injection of {SDevices} */
Если же так прописано то не имеет - просто происходит дубляж действий и в самом методе и в инжекции
SPOILERSPOILER_SHOW
$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
Сообщения: 2113
Зарегистрирован: Пт апр 07, 2017 12:20 pm

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

Сообщение Logrus »

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

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

Сообщение tarasfrompir »

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

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

Сообщение Logrus »

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

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

Сообщение tarasfrompir »

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

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

Сообщение Logrus »

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

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

Сообщение tarasfrompir »

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

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

Сообщение Logrus »

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