как сделать мгновенную реакцию на изменение статуса?

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

chip
Сообщения: 158
Зарегистрирован: Пн ноя 09, 2015 11:03 pm
Благодарил (а): 43 раза
Поблагодарили: 7 раз

как сделать мгновенную реакцию на изменение статуса?

Сообщение chip » Чт июн 23, 2016 9:50 pm

Добрый день!

Поиск не помог (или руки слишком искривились). Есть esp с прошивкой от homes-smart и датчик движения. Когда датчик срабатывает меняется свойство c 0 на 1 у объекта. Подскажите, как сделать что б при изменении значения на 1 мгновенно запускался скрипт/ метод включения света, желательно с таймером (в случае если через н минут движения нет (статус 0 либо поправьте как лучше логику реализовать) свет выключался.

Спасибо
ipz
Сообщения: 238
Зарегистрирован: Чт ноя 26, 2015 10:54 pm
Благодарил (а): 38 раз
Поблагодарили: 45 раз

Re: как сделать мгновенную реакцию на изменение статуса?

Сообщение ipz » Пт июн 24, 2016 12:40 am

В конструкторе этого класса для свойства задать функцию которая будет вызываться при изменении. (Поле 'Запускать метод при изменении'). Например '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); // задали новый

    }
 
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: как сделать мгновенную реакцию на изменение статуса?

Сообщение Jager » Пт июн 24, 2016 8:29 am

ipz писал(а):

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

 clearTimeOut("Hall_main_lights"); // очистили таймаут 
С какого то обновления данная команда неактуальна, при запуске таймера автоматически сбрасывается предыдущий.
sega6549
Сообщения: 535
Зарегистрирован: Чт авг 20, 2015 11:32 am
Откуда: Ярославль
Благодарил (а): 61 раз
Поблагодарили: 75 раз
Контактная информация:

Re: как сделать мгновенную реакцию на изменение статуса?

Сообщение sega6549 » Пт июн 24, 2016 8:41 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); // задали новый

    }
этот метод будет отрабатываться когда в свойстве объекта изменился статус на 1, но дело в том что сам модуль esp8266 с прошивкой homes-smart отправляет данные на сервер раз в 5 секунд, и получится что датчик движения сработал и свет включился только через 5 секунд. или я что то не понял? просто сам собираюсь поставить свет в коридоре через датчик движения, и если делать чтоб логику отрабатывала алиса то получится не очень удобно, для себя думаю сделать чтоб esp8266 сама включала свет при сработке датчика движения, а потм уж и отправляля статус на сервер, вроде как в прошивке homes-smart есть такой функционал, сам не пробовал еще, жду датчика с китая
Тут можно задать вопрос по MajorDoMo VK
Канал по MajorDoMo youtube
chip
Сообщения: 158
Зарегистрирован: Пн ноя 09, 2015 11:03 pm
Благодарил (а): 43 раза
Поблагодарили: 7 раз

Re: как сделать мгновенную реакцию на изменение статуса?

Сообщение chip » Пт июн 24, 2016 10:05 am

sega6549 писал(а): этот метод будет отрабатываться когда в свойстве объекта изменился статус на 1, но дело в том что сам модуль esp8266 с прошивкой homes-smart отправляет данные на сервер раз в 5 секунд, и получится что датчик движения сработал и свет включился только через 5 секунд. или я что то не понял?
В про версии прошивке есть функция active send которая отправляет изменения на выбраном gpio сразу после оного.
sega6549
Сообщения: 535
Зарегистрирован: Чт авг 20, 2015 11:32 am
Откуда: Ярославль
Благодарил (а): 61 раз
Поблагодарили: 75 раз
Контактная информация:

Re: как сделать мгновенную реакцию на изменение статуса?

Сообщение sega6549 » Пт июн 24, 2016 10:18 am

chip писал(а):
sega6549 писал(а): этот метод будет отрабатываться когда в свойстве объекта изменился статус на 1, но дело в том что сам модуль esp8266 с прошивкой homes-smart отправляет данные на сервер раз в 5 секунд, и получится что датчик движения сработал и свет включился только через 5 секунд. или я что то не понял?
В про версии прошивке есть функция active send которая отправляет изменения на выбраном gpio сразу после оного.
вот блин, ведь точно же, помню еще не было модуля, ковырял все функции в конструкторе, и видел эту функцию, щас бы даже не вспомнил, но все же зачем так много действий, модуль получил статус от датчика, передал серверу, сервер отработал сценарий, передал команду модулю и модуль включил свет, проще же чтоб модуль сам все сделал без участия сервера, так и проще, и надежнее в плане если сервер тупанет или зависнет, мне кажется так покрасивее будет, а мгновенную реакцию через сервер нужно делать например на датчики пожара или утечки, когда требуется выполнение сложных алгоритмов... поправьте если я не прав, сам еще не все пробовал, у меня в арсенале только модуль и реле, но мнного чего едет
Тут можно задать вопрос по MajorDoMo VK
Канал по MajorDoMo youtube
chip
Сообщения: 158
Зарегистрирован: Пн ноя 09, 2015 11:03 pm
Благодарил (а): 43 раза
Поблагодарили: 7 раз

Re: как сделать мгновенную реакцию на изменение статуса?

Сообщение chip » Пт июн 24, 2016 10:34 am

sega6549 писал(а):
chip писал(а):
sega6549 писал(а): этот метод будет отрабатываться когда в свойстве объекта изменился статус на 1, но дело в том что сам модуль esp8266 с прошивкой homes-smart отправляет данные на сервер раз в 5 секунд, и получится что датчик движения сработал и свет включился только через 5 секунд. или я что то не понял?
В про версии прошивке есть функция active send которая отправляет изменения на выбраном gpio сразу после оного.
вот блин, ведь точно же, помню еще не было модуля, ковырял все функции в конструкторе, и видел эту функцию, щас бы даже не вспомнил, но все же зачем так много действий, модуль получил статус от датчика, передал серверу, сервер отработал сценарий, передал команду модулю и модуль включил свет, проще же чтоб модуль сам все сделал без участия сервера, так и проще, и надежнее в плане если сервер тупанет или зависнет, мне кажется так покрасивее будет, а мгновенную реакцию через сервер нужно делать например на датчики пожара или утечки, когда требуется выполнение сложных алгоритмов... поправьте если я не прав, сам еще не все пробовал, у меня в арсенале только модуль и реле, но мнного чего едет
С одной стороны верно, но у меня весь свет на noolite а свисток стоит в сервере, также сервер рулит IR и радио, потому мне удобней решать логику на сервере.
chip
Сообщения: 158
Зарегистрирован: Пн ноя 09, 2015 11:03 pm
Благодарил (а): 43 раза
Поблагодарили: 7 раз

Re: как сделать мгновенную реакцию на изменение статуса?

Сообщение chip » Пт июн 24, 2016 11:00 am

ipz писал(а):В конструкторе этого класса для свойства задать функцию которая будет вызываться при изменении. (Поле 'Запускать метод при изменении'). Например 'OnChange'.
Эм, кхм, я жутко извиняюсь, видимо со вчера не отошёл, но я в упор не могу найти "конструктор класса", пните пожалуйста в его сторону, или скрин.

Спасибо!
sega6549
Сообщения: 535
Зарегистрирован: Чт авг 20, 2015 11:32 am
Откуда: Ярославль
Благодарил (а): 61 раз
Поблагодарили: 75 раз
Контактная информация:

Re: как сделать мгновенную реакцию на изменение статуса?

Сообщение sega6549 » Пт июн 24, 2016 1:30 pm

chip писал(а):
ipz писал(а):В конструкторе этого класса для свойства задать функцию которая будет вызываться при изменении. (Поле 'Запускать метод при изменении'). Например 'OnChange'.
Эм, кхм, я жутко извиняюсь, видимо со вчера не отошёл, но я в упор не могу найти "конструктор класса", пните пожалуйста в его сторону, или скрин.

Спасибо!
https://www.youtube.com/watch?v=_2PhJEzUXhI
вот как раз про это как я понял
Тут можно задать вопрос по MajorDoMo VK
Канал по MajorDoMo youtube
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: как сделать мгновенную реакцию на изменение статуса?

Сообщение serghei » Пт июн 24, 2016 3:58 pm

sega6549 писал(а):..... и если делать чтоб логику отрабатывала алиса то получится не очень удобно, для себя думаю сделать чтоб esp8266 сама включала свет при сработке датчика движения, а потом уж и отправляла статус на сервер......
Золотые слова! Я тоже добиваюсь полной автономности от АМС , а Алису ставить перед фактом , ну и когда хотим поморгать светом с телефона )))
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Ответить