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

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

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

Ответить
PAV
Сообщения: 949
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 68 раз
Поблагодарили: 94 раза

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

Сообщение PAV » Чт июл 03, 2014 10:09 am

Метод класса 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
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: sensorMovement

Сообщение Vit » Чт июл 03, 2014 11:05 am

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

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


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

Re: sensorMovement

Сообщение PAV » Чт июл 03, 2014 12:01 pm

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

Re: sensorMovement

Сообщение Ron » Чт фев 08, 2018 10:04 pm

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

Re: sensorMovement

Сообщение nick7zmail » Пт фев 09, 2018 6:24 am

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

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

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

Re: sensorMovement

Сообщение Ron » Пт фев 09, 2018 3:24 pm

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

Re: sensorMovement

Сообщение nick7zmail » Пт фев 09, 2018 3:43 pm

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

Re: sensorMovement

Сообщение Ron » Пт фев 09, 2018 4:31 pm

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

Re: sensorMovement

Сообщение nick7zmail » Пт фев 09, 2018 5:44 pm

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

Re: sensorMovement

Сообщение Ron » Пт фев 09, 2018 6:05 pm

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