как сделать мгновенную реакцию на изменение статуса?
Модератор: immortal
-
- Сообщения: 158
- Зарегистрирован: Пн ноя 09, 2015 11:03 pm
- Благодарил (а): 43 раза
- Поблагодарили: 7 раз
как сделать мгновенную реакцию на изменение статуса?
Добрый день!
Поиск не помог (или руки слишком искривились). Есть esp с прошивкой от homes-smart и датчик движения. Когда датчик срабатывает меняется свойство c 0 на 1 у объекта. Подскажите, как сделать что б при изменении значения на 1 мгновенно запускался скрипт/ метод включения света, желательно с таймером (в случае если через н минут движения нет (статус 0 либо поправьте как лучше логику реализовать) свет выключался.
Спасибо
Поиск не помог (или руки слишком искривились). Есть esp с прошивкой от homes-smart и датчик движения. Когда датчик срабатывает меняется свойство c 0 на 1 у объекта. Подскажите, как сделать что б при изменении значения на 1 мгновенно запускался скрипт/ метод включения света, желательно с таймером (в случае если через н минут движения нет (статус 0 либо поправьте как лучше логику реализовать) свет выключался.
Спасибо
-
- Сообщения: 238
- Зарегистрирован: Чт ноя 26, 2015 10:54 pm
- Благодарил (а): 38 раз
- Поблагодарили: 45 раз
Re: как сделать мгновенную реакцию на изменение статуса?
В конструкторе этого класса для свойства задать функцию которая будет вызываться при изменении. (Поле 'Запускать метод при изменении'). Например '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); // задали новый
}
-
- Сообщения: 708
- Зарегистрирован: Сб авг 18, 2012 10:21 am
- Благодарил (а): 26 раз
- Поблагодарили: 183 раза
Re: как сделать мгновенную реакцию на изменение статуса?
С какого то обновления данная команда неактуальна, при запуске таймера автоматически сбрасывается предыдущий.ipz писал(а):Код: Выделить всё
clearTimeOut("Hall_main_lights"); // очистили таймаут
-
- Сообщения: 535
- Зарегистрирован: Чт авг 20, 2015 11:32 am
- Откуда: Ярославль
- Благодарил (а): 61 раз
- Поблагодарили: 75 раз
- Контактная информация:
Re: как сделать мгновенную реакцию на изменение статуса?
этот метод будет отрабатываться когда в свойстве объекта изменился статус на 1, но дело в том что сам модуль esp8266 с прошивкой homes-smart отправляет данные на сервер раз в 5 секунд, и получится что датчик движения сработал и свет включился только через 5 секунд. или я что то не понял? просто сам собираюсь поставить свет в коридоре через датчик движения, и если делать чтоб логику отрабатывала алиса то получится не очень удобно, для себя думаю сделать чтоб esp8266 сама включала свет при сработке датчика движения, а потм уж и отправляля статус на сервер, вроде как в прошивке homes-smart есть такой функционал, сам не пробовал еще, жду датчика с китая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); // задали новый }
-
- Сообщения: 158
- Зарегистрирован: Пн ноя 09, 2015 11:03 pm
- Благодарил (а): 43 раза
- Поблагодарили: 7 раз
Re: как сделать мгновенную реакцию на изменение статуса?
В про версии прошивке есть функция active send которая отправляет изменения на выбраном gpio сразу после оного.sega6549 писал(а): этот метод будет отрабатываться когда в свойстве объекта изменился статус на 1, но дело в том что сам модуль esp8266 с прошивкой homes-smart отправляет данные на сервер раз в 5 секунд, и получится что датчик движения сработал и свет включился только через 5 секунд. или я что то не понял?
-
- Сообщения: 535
- Зарегистрирован: Чт авг 20, 2015 11:32 am
- Откуда: Ярославль
- Благодарил (а): 61 раз
- Поблагодарили: 75 раз
- Контактная информация:
Re: как сделать мгновенную реакцию на изменение статуса?
вот блин, ведь точно же, помню еще не было модуля, ковырял все функции в конструкторе, и видел эту функцию, щас бы даже не вспомнил, но все же зачем так много действий, модуль получил статус от датчика, передал серверу, сервер отработал сценарий, передал команду модулю и модуль включил свет, проще же чтоб модуль сам все сделал без участия сервера, так и проще, и надежнее в плане если сервер тупанет или зависнет, мне кажется так покрасивее будет, а мгновенную реакцию через сервер нужно делать например на датчики пожара или утечки, когда требуется выполнение сложных алгоритмов... поправьте если я не прав, сам еще не все пробовал, у меня в арсенале только модуль и реле, но мнного чего едетchip писал(а):В про версии прошивке есть функция active send которая отправляет изменения на выбраном gpio сразу после оного.sega6549 писал(а): этот метод будет отрабатываться когда в свойстве объекта изменился статус на 1, но дело в том что сам модуль esp8266 с прошивкой homes-smart отправляет данные на сервер раз в 5 секунд, и получится что датчик движения сработал и свет включился только через 5 секунд. или я что то не понял?
-
- Сообщения: 158
- Зарегистрирован: Пн ноя 09, 2015 11:03 pm
- Благодарил (а): 43 раза
- Поблагодарили: 7 раз
Re: как сделать мгновенную реакцию на изменение статуса?
С одной стороны верно, но у меня весь свет на noolite а свисток стоит в сервере, также сервер рулит IR и радио, потому мне удобней решать логику на сервере.sega6549 писал(а):вот блин, ведь точно же, помню еще не было модуля, ковырял все функции в конструкторе, и видел эту функцию, щас бы даже не вспомнил, но все же зачем так много действий, модуль получил статус от датчика, передал серверу, сервер отработал сценарий, передал команду модулю и модуль включил свет, проще же чтоб модуль сам все сделал без участия сервера, так и проще, и надежнее в плане если сервер тупанет или зависнет, мне кажется так покрасивее будет, а мгновенную реакцию через сервер нужно делать например на датчики пожара или утечки, когда требуется выполнение сложных алгоритмов... поправьте если я не прав, сам еще не все пробовал, у меня в арсенале только модуль и реле, но мнного чего едетchip писал(а):В про версии прошивке есть функция active send которая отправляет изменения на выбраном gpio сразу после оного.sega6549 писал(а): этот метод будет отрабатываться когда в свойстве объекта изменился статус на 1, но дело в том что сам модуль esp8266 с прошивкой homes-smart отправляет данные на сервер раз в 5 секунд, и получится что датчик движения сработал и свет включился только через 5 секунд. или я что то не понял?
-
- Сообщения: 158
- Зарегистрирован: Пн ноя 09, 2015 11:03 pm
- Благодарил (а): 43 раза
- Поблагодарили: 7 раз
Re: как сделать мгновенную реакцию на изменение статуса?
Эм, кхм, я жутко извиняюсь, видимо со вчера не отошёл, но я в упор не могу найти "конструктор класса", пните пожалуйста в его сторону, или скрин.ipz писал(а):В конструкторе этого класса для свойства задать функцию которая будет вызываться при изменении. (Поле 'Запускать метод при изменении'). Например 'OnChange'.
Спасибо!
-
- Сообщения: 535
- Зарегистрирован: Чт авг 20, 2015 11:32 am
- Откуда: Ярославль
- Благодарил (а): 61 раз
- Поблагодарили: 75 раз
- Контактная информация:
Re: как сделать мгновенную реакцию на изменение статуса?
https://www.youtube.com/watch?v=_2PhJEzUXhIchip писал(а):Эм, кхм, я жутко извиняюсь, видимо со вчера не отошёл, но я в упор не могу найти "конструктор класса", пните пожалуйста в его сторону, или скрин.ipz писал(а):В конструкторе этого класса для свойства задать функцию которая будет вызываться при изменении. (Поле 'Запускать метод при изменении'). Например 'OnChange'.
Спасибо!
вот как раз про это как я понял
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: как сделать мгновенную реакцию на изменение статуса?
Золотые слова! Я тоже добиваюсь полной автономности от АМС , а Алису ставить перед фактом , ну и когда хотим поморгать светом с телефона )))sega6549 писал(а):..... и если делать чтоб логику отрабатывала алиса то получится не очень удобно, для себя думаю сделать чтоб esp8266 сама включала свет при сработке датчика движения, а потом уж и отправляла статус на сервер......
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS