[Модификация] sensorMovement

Вносятся изменения в файлы или устанавливаются доп программы

Модераторы: immortal, newz20

Ответить
PAV
Сообщения: 970
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва

[Модификация] sensorMovement

Сообщение PAV »

Метод класса sensorMovement.statusChanged (Т.е. действует для всех объектов в классе, исполняется в первую очередь (обычно))
Пока так, но никак не продумаю логику, чтобы система докладывала, если прихожу я.
При существующем коде, если до срабатывания первого датчика система не успела отпинговать мой телефон и определить, что я рядом, то доклада не будет.

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

$this->setProperty('status',$params['status']); // выставляем статус сенсора
$this->setProperty('updatedTime',date("y-m-d H:i")); // выставляем время срабатывания сенсора
if ($params['status']) { // если статус = 1
 sg('somebodyHome',1); // ставим глобальный флаг на то что кто-то дома
 sg('somebodyHomeText','Дома кто-то есть'); // так же ставим свойства глобальной переменной для текстового статуса
 sg('sensorMovementSUM.status', 1);
 sg('sensorMovementSUM.alive', 1);
 sg('sensorMovementSUM.updated', time());
 sg('sensorMovementSUM.updatedTime', date("y-m-d H:i"));
 $ot=$this->object_title;
 clearTimeOut("sensorMovementSUM");
 setTimeOut("sensorMovementSUM","sg('sensorMovementSUM.status',0);",30); 
 
 ClearTimeOut("nobodyHome"); // очищаем таймер события "никого нет дома"
 SetTimeOut("nobodyHome","runScript('nobodyHome');", 1*30*60); // назначаем новый таймер. срабатывает через час после последнего срабатывания датчика.
 $last_register=registeredEventTime('inhouseMovement'); // проверяем когда в последний раз срабатывало событие "движение внутри дома"
 if (!$last_register || ((time()-$last_register)>2*60*60)) { // срабатывало более 2х часов назад (либо никогда не срабатывало ранее)
  say("Ура! Наконец кто-то появился дома!",1);
  if (gg("Yulia.status") > 0 && time() - gg("Yulia.updated") > 90){
  say("Здравствуйте Юлия",1);
  }
  
  if (gg("Andrey.status") > 0 && time() - gg("Andrey.updated") > 90){
  say("Здравствуйте Андрей",1);
  callMethod("доклад.action");
  }
    
  if (timeBetween('06:45', '12:00')) { // движение замечено утром
   runScript('morningGreeting'); // запускаем скрипт "доброе утро"
  }
  if (timeBetween('18:00', '23:00')) { // движение замечено утром
   runScript('eveningGreeting'); // запускаем скрипт "
  }
 }
 registerEvent('inhouseMovement',$this->name,7); // регистрируем событие "движение внутри дома"
}
Последний раз редактировалось PAV Чт июл 03, 2014 12:03 pm, всего редактировалось 2 раза.
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm

Re: sensorMovement

Сообщение Vit »

PAV писал(а):Пока так, но никак не продумаю логику, чтобы система докладывала, если прихожу я.
При существующем коде, если до срабатывания первого датчика система не успела отпинговать мой телефон и определить, что я рядом,

Парни ну хоть может стоит указывать в каком объекте или классе обрабатываете


Вот, теперь понятно все. Спасибо
Последний раз редактировалось Vit Чт июл 03, 2014 12:36 pm, всего редактировалось 2 раза.
PAV
Сообщения: 970
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва

Re: sensorMovement

Сообщение PAV »

А какая фиг разница - это алгоритм, куда хошь его вставляй. Добавил.
Аватара пользователя
Ron
Сообщения: 480
Зарегистрирован: Пт окт 27, 2017 6:44 pm

Re: sensorMovement

Сообщение Ron »

Парни, мозг сломал уже. :roll:
Может на ручник стал и не пойму где.
Вопрос такой:
Там на скрине - когда нет никого, то есть "активность": <пусто>, то хочется что бы эта фраза вобще не отражалась.
И фразу "Кто-то есть" убрать, поскольку динамически очень хорошо отрабатывает %ThisComputer.HomeStatus|0%
Как сделать то?
Вложения
SomebodyHomeText.jpg
SomebodyHomeText.jpg (26.74 КБ) 12843 просмотра
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: sensorMovement

Сообщение nick7zmail »

В активити комнат випсан

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

$somebodyHomeText = LANG_DEVICES_ROOMS_SOMEBODYHOME." ". LANG_DEVICES_ROOMS_ACTIVITY . " " . implode(", ", $res_rooms); 
LANG_DEVICES_ROOMS_SOMEBODYHOME - как раз текст "Кто-то есть."
И тему не обязательно было создавать)) Все вопросы к простым устройствам.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Ron
Сообщения: 480
Зарегистрирован: Пт окт 27, 2017 6:44 pm

Re: sensorMovement

Сообщение Ron »

А, вон оно где заныкалось :), спасиб! (это по пути /var/www/modules/devices/Rooms_update~yStatus.php)
Ну еще похимичить с отключением вывода строки, по таймеру, если "активность" - пусто.
Хотя вариант и с простыми устройствами.
Ну как всегда, спасибище, тебе nick7zmail !!!
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: sensorMovement

Сообщение nick7zmail »

Ноу проблем =) Обращайтесь.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Ron
Сообщения: 480
Зарегистрирован: Пт окт 27, 2017 6:44 pm

Re: sensorMovement

Сообщение Ron »

Вооо... ))
Другое дело! :)
Вложения
Screenshot_20180209-162405.png
Screenshot_20180209-162405.png (97.33 КБ) 12735 просмотров
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

Re: sensorMovement

Сообщение nick7zmail »

Я подобное (в плане температур в комнатах) в шаблон класса вынес)) https://majordomo.smartliving.ru/forum/ ... 816#p70816
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Ron
Сообщения: 480
Зарегистрирован: Пт окт 27, 2017 6:44 pm

Re: sensorMovement

Сообщение Ron »

Оба -на, проморгал от тебя такую красоту!
Щяяяс стырим )))
Ответить