Страница 1 из 2
как сделать мгновенную реакцию на изменение статуса?
Добавлено: Чт июн 23, 2016 9:50 pm
chip
Добрый день!
Поиск не помог (или руки слишком искривились). Есть esp с прошивкой от homes-smart и датчик движения. Когда датчик срабатывает меняется свойство c 0 на 1 у объекта. Подскажите, как сделать что б при изменении значения на 1 мгновенно запускался скрипт/ метод включения света, желательно с таймером (в случае если через н минут движения нет (статус 0 либо поправьте как лучше логику реализовать) свет выключался.
Спасибо
Re: как сделать мгновенную реакцию на изменение статуса?
Добавлено: Пт июн 24, 2016 12:40 am
ipz
В конструкторе этого класса для свойства задать функцию которая будет вызываться при изменении. (Поле 'Запускать метод при изменении'). Например 'OnChange'.
В конкретном экземпляре объекта эту функцию переопределить, например так
Код: Выделить всё
//$prop=$params['PROPERTY'];
//$t = time();
// $old = $params['OLD_VALUE'];
$new = $params['NEW_VALUE'];
// $obj = $params['ORIGINAL_OBJECT_TITLE'];
if ($new == 1) {
getURL('http://192.168.2.40/?livolo=13601&key=16'); // включили свет
clearTimeOut("Hall_main_lights"); // очистили таймаут
setTimeOut("Hall_main_lights","getURL('http://192.168.2.40/?livolo=13601&key=42');",3*60); // задали новый
}
Re: как сделать мгновенную реакцию на изменение статуса?
Добавлено: Пт июн 24, 2016 8:29 am
Jager
ipz писал(а):Код: Выделить всё
clearTimeOut("Hall_main_lights"); // очистили таймаут
С какого то обновления данная команда неактуальна, при запуске таймера автоматически сбрасывается предыдущий.
Re: как сделать мгновенную реакцию на изменение статуса?
Добавлено: Пт июн 24, 2016 8:41 am
sega6549
ipz писал(а):В конструкторе этого класса для свойства задать функцию которая будет вызываться при изменении. (Поле 'Запускать метод при изменении'). Например 'OnChange'.
В конкретном экземпляре объекта эту функцию переопределить, например так
Код: Выделить всё
//$prop=$params['PROPERTY'];
//$t = time();
// $old = $params['OLD_VALUE'];
$new = $params['NEW_VALUE'];
// $obj = $params['ORIGINAL_OBJECT_TITLE'];
if ($new == 1) {
getURL('http://192.168.2.40/?livolo=13601&key=16'); // включили свет
clearTimeOut("Hall_main_lights"); // очистили таймаут
setTimeOut("Hall_main_lights","getURL('http://192.168.2.40/?livolo=13601&key=42');",3*60); // задали новый
}
этот метод будет отрабатываться когда в свойстве объекта изменился статус на 1, но дело в том что сам модуль esp8266 с прошивкой homes-smart отправляет данные на сервер раз в 5 секунд, и получится что датчик движения сработал и свет включился только через 5 секунд. или я что то не понял? просто сам собираюсь поставить свет в коридоре через датчик движения, и если делать чтоб логику отрабатывала алиса то получится не очень удобно, для себя думаю сделать чтоб esp8266 сама включала свет при сработке датчика движения, а потм уж и отправляля статус на сервер, вроде как в прошивке homes-smart есть такой функционал, сам не пробовал еще, жду датчика с китая
Re: как сделать мгновенную реакцию на изменение статуса?
Добавлено: Пт июн 24, 2016 10:05 am
chip
sega6549 писал(а):
этот метод будет отрабатываться когда в свойстве объекта изменился статус на 1, но дело в том что сам модуль esp8266 с прошивкой homes-smart отправляет данные на сервер раз в 5 секунд, и получится что датчик движения сработал и свет включился только через 5 секунд. или я что то не понял?
В про версии прошивке есть функция active send которая отправляет изменения на выбраном gpio сразу после оного.
Re: как сделать мгновенную реакцию на изменение статуса?
Добавлено: Пт июн 24, 2016 10:18 am
sega6549
chip писал(а):sega6549 писал(а):
этот метод будет отрабатываться когда в свойстве объекта изменился статус на 1, но дело в том что сам модуль esp8266 с прошивкой homes-smart отправляет данные на сервер раз в 5 секунд, и получится что датчик движения сработал и свет включился только через 5 секунд. или я что то не понял?
В про версии прошивке есть функция active send которая отправляет изменения на выбраном gpio сразу после оного.
вот блин, ведь точно же, помню еще не было модуля, ковырял все функции в конструкторе, и видел эту функцию, щас бы даже не вспомнил, но все же зачем так много действий, модуль получил статус от датчика, передал серверу, сервер отработал сценарий, передал команду модулю и модуль включил свет, проще же чтоб модуль сам все сделал без участия сервера, так и проще, и надежнее в плане если сервер тупанет или зависнет, мне кажется так покрасивее будет, а мгновенную реакцию через сервер нужно делать например на датчики пожара или утечки, когда требуется выполнение сложных алгоритмов... поправьте если я не прав, сам еще не все пробовал, у меня в арсенале только модуль и реле, но мнного чего едет
Re: как сделать мгновенную реакцию на изменение статуса?
Добавлено: Пт июн 24, 2016 10:34 am
chip
sega6549 писал(а):chip писал(а):sega6549 писал(а):
этот метод будет отрабатываться когда в свойстве объекта изменился статус на 1, но дело в том что сам модуль esp8266 с прошивкой homes-smart отправляет данные на сервер раз в 5 секунд, и получится что датчик движения сработал и свет включился только через 5 секунд. или я что то не понял?
В про версии прошивке есть функция active send которая отправляет изменения на выбраном gpio сразу после оного.
вот блин, ведь точно же, помню еще не было модуля, ковырял все функции в конструкторе, и видел эту функцию, щас бы даже не вспомнил, но все же зачем так много действий, модуль получил статус от датчика, передал серверу, сервер отработал сценарий, передал команду модулю и модуль включил свет, проще же чтоб модуль сам все сделал без участия сервера, так и проще, и надежнее в плане если сервер тупанет или зависнет, мне кажется так покрасивее будет, а мгновенную реакцию через сервер нужно делать например на датчики пожара или утечки, когда требуется выполнение сложных алгоритмов... поправьте если я не прав, сам еще не все пробовал, у меня в арсенале только модуль и реле, но мнного чего едет
С одной стороны верно, но у меня весь свет на noolite а свисток стоит в сервере, также сервер рулит IR и радио, потому мне удобней решать логику на сервере.
Re: как сделать мгновенную реакцию на изменение статуса?
Добавлено: Пт июн 24, 2016 11:00 am
chip
ipz писал(а):В конструкторе этого класса для свойства задать функцию которая будет вызываться при изменении. (Поле 'Запускать метод при изменении'). Например 'OnChange'.
Эм, кхм, я жутко извиняюсь, видимо со вчера не отошёл, но я в упор не могу найти "конструктор класса", пните пожалуйста в его сторону, или скрин.
Спасибо!
Re: как сделать мгновенную реакцию на изменение статуса?
Добавлено: Пт июн 24, 2016 1:30 pm
sega6549
chip писал(а):ipz писал(а):В конструкторе этого класса для свойства задать функцию которая будет вызываться при изменении. (Поле 'Запускать метод при изменении'). Например 'OnChange'.
Эм, кхм, я жутко извиняюсь, видимо со вчера не отошёл, но я в упор не могу найти "конструктор класса", пните пожалуйста в его сторону, или скрин.
Спасибо!
https://www.youtube.com/watch?v=_2PhJEzUXhI
вот как раз про это как я понял
Re: как сделать мгновенную реакцию на изменение статуса?
Добавлено: Пт июн 24, 2016 3:58 pm
serghei
sega6549 писал(а):..... и если делать чтоб логику отрабатывала алиса то получится не очень удобно, для себя думаю сделать чтоб esp8266 сама включала свет при сработке датчика движения, а потом уж и отправляла статус на сервер......
Золотые слова! Я тоже добиваюсь полной автономности от АМС , а Алису ставить перед фактом , ну и когда хотим поморгать светом с телефона )))