Страница 1 из 1

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

Добавлено: Чт июл 03, 2014 10:09 am
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); // регистрируем событие "движение внутри дома"
}

Re: sensorMovement

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

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


Вот, теперь понятно все. Спасибо

Re: sensorMovement

Добавлено: Чт июл 03, 2014 12:01 pm
PAV
А какая фиг разница - это алгоритм, куда хошь его вставляй. Добавил.

Re: sensorMovement

Добавлено: Чт фев 08, 2018 10:04 pm
Ron
Парни, мозг сломал уже. :roll:
Может на ручник стал и не пойму где.
Вопрос такой:
Там на скрине - когда нет никого, то есть "активность": <пусто>, то хочется что бы эта фраза вобще не отражалась.
И фразу "Кто-то есть" убрать, поскольку динамически очень хорошо отрабатывает %ThisComputer.HomeStatus|0%
Как сделать то?

Re: sensorMovement

Добавлено: Пт фев 09, 2018 6:24 am
nick7zmail
В активити комнат випсан

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

$somebodyHomeText = LANG_DEVICES_ROOMS_SOMEBODYHOME." ". LANG_DEVICES_ROOMS_ACTIVITY . " " . implode(", ", $res_rooms); 
LANG_DEVICES_ROOMS_SOMEBODYHOME - как раз текст "Кто-то есть."
И тему не обязательно было создавать)) Все вопросы к простым устройствам.

Re: sensorMovement

Добавлено: Пт фев 09, 2018 3:24 pm
Ron
А, вон оно где заныкалось :), спасиб! (это по пути /var/www/modules/devices/Rooms_update~yStatus.php)
Ну еще похимичить с отключением вывода строки, по таймеру, если "активность" - пусто.
Хотя вариант и с простыми устройствами.
Ну как всегда, спасибище, тебе nick7zmail !!!

Re: sensorMovement

Добавлено: Пт фев 09, 2018 3:43 pm
nick7zmail
Ноу проблем =) Обращайтесь.

Re: sensorMovement

Добавлено: Пт фев 09, 2018 4:31 pm
Ron
Вооо... ))
Другое дело! :)

Re: sensorMovement

Добавлено: Пт фев 09, 2018 5:44 pm
nick7zmail
Я подобное (в плане температур в комнатах) в шаблон класса вынес)) https://majordomo.smartliving.ru/forum/ ... 816#p70816

Re: sensorMovement

Добавлено: Пт фев 09, 2018 6:05 pm
Ron
Оба -на, проморгал от тебя такую красоту!
Щяяяс стырим )))