Страница 4 из 5

Re: действия после срабатывания датчика движения

Добавлено: Вт дек 19, 2017 5:23 pm
Vovix
Gelezako писал(а):это выход, но в принципе зачем плодить копии времени события с датчиков, если уже есть встроенное свойство Updated Timestamp, если конечно вы их подключили как простые устройства. Попробую реализовать такую проверку.
нет, я не использую Простые устройства!!!
код такой (возможно у вас он есть):

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

$last_register=registeredEventTime('inhouseMovement');
registerEvent('inhouseMovement',$this->name,2);
if (!$last_register || ((time()-$last_register)>3*60*60)) {
    say("Cработал датчик!");
}
в данном примере меня интересует данный датчик снова только через (3*60*60) секунд, т.е. через 3 часа!

Re: действия после срабатывания датчика движения

Добавлено: Пн дек 25, 2017 11:04 pm
2007-i
Не подскажите как реализовать какое то действие по датчику движения (Объект: ESP82660022a64e-> свойство: ESP82660022a64e.gpio4) но с возвращением в исходное состояние. Например сработал датчик движения, посылается get команда на включение светодиодной ленты (pwm=255) но после пропадания движения через допустим 3 секунды возвращает значение pwm в исходное состояние которое было до срабатывания движения, например (pwm=10)?

Re: действия после срабатывания датчика движения

Добавлено: Вт дек 26, 2017 11:56 am
Vovix
2007-i писал(а):Не подскажите как реализовать какое то действие по датчику движения (Объект: ESP82660022a64e-> свойство: ESP82660022a64e.gpio4) но с возвращением в исходное состояние. Например сработал датчик движения, посылается get команда на включение светодиодной ленты (pwm=255) но после пропадания движения через допустим 3 секунды возвращает значение pwm в исходное состояние которое было до срабатывания движения, например (pwm=10)?
вариантов реализации может быть несколько, например один из (наверно не самый лучший):
1. Создаем метод у объекта ESP82660022a64e, например назовем его ChangeESPgpio4
2. В коде метода пишем реализацию следующего алгоритма:
____1) проверим состояние ESP82660022a64e.gpio4
____2) если есть движение, то отправляем get запрос на включение ленты
____3) даем команду на остановку таймера -

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

clearTimeOut("Название таймера"); 
____4) далее запускаем таймер

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

setTimeOut("Название таймера","ваш get запрос на ВыКЛЮЧЕНИЕ ленты",3); 
3. делаем привязку на запуск этого метода при изменении свойства ESP82660022a64e.gpio4

примерно так!

Re: действия после срабатывания датчика движения

Добавлено: Вт дек 26, 2017 7:10 pm
2007-i
Vovix писал(а):
2007-i писал(а):Не подскажите как реализовать какое то действие по датчику движения (Объект: ESP82660022a64e-> свойство: ESP82660022a64e.gpio4) но с возвращением в исходное состояние. Например сработал датчик движения, посылается get команда на включение светодиодной ленты (pwm=255) но после пропадания движения через допустим 3 секунды возвращает значение pwm в исходное состояние которое было до срабатывания движения, например (pwm=10)?
вариантов реализации может быть несколько, например один из (наверно не самый лучший):
1. Создаем метод у объекта ESP82660022a64e, например назовем его ChangeESPgpio4
2. В коде метода пишем реализацию следующего алгоритма:
____1) проверим состояние ESP82660022a64e.gpio4
____2) если есть движение, то отправляем get запрос на включение ленты
____3) даем команду на остановку таймера -

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

clearTimeOut("Название таймера");
____4) далее запускаем таймер

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

setTimeOut("Название таймера","ваш get запрос на ВыКЛЮЧЕНИЕ ленты",3);
3. делаем привязку на запуск этого метода при изменении свойства ESP82660022a64e.gpio4

примерно так!
Спасибо.
Забыл написать что прошивка от wifi-iot.com и есть возможность считывать состояние портов (в данном случает значение pwm, либо через свойства обьекта либо через get запрос: http://[ip_adr]/pwmprint

Я не совсем силён в программировании, поэтому не знаю как правильно считать состояние pwm и записать его что бы потом отправить это же значение (т.е. ту же яркость ленты). Т.е. в коридоре горит свет на значении pwm=70, проходишь мимо, срабатывает датчик и яркость меняется на pwm=255, потом при отсутствии движения яркость устанавливается снова на pwm=70.
Как то так.

Re: действия после срабатывания датчика движения

Добавлено: Вт дек 26, 2017 8:23 pm
Vovix
2007-i писал(а):....

Спасибо.
Забыл написать что прошивка от wifi-iot.com и есть возможность считывать состояние портов (в данном случает значение pwm, либо через свойства обьекта либо через get запрос: http://[ip_adr]/pwmprint

Я не совсем силён в программировании, поэтому не знаю как правильно считать состояние pwm и записать его что бы потом отправить это же значение (т.е. ту же яркость ленты). Т.е. в коридоре горит свет на значении pwm=70, проходишь мимо, срабатывает датчик и яркость меняется на pwm=255, потом при отсутствии движения яркость устанавливается снова на pwm=70.
Как то так.
для Спасибо есть кнопочка!!!
А программистом придется стать... раз решили использовать MDM!
по прошивке wifi-iot.com все прописано у них-же, почитайте!!!

Re: действия после срабатывания датчика движения

Добавлено: Вт дек 26, 2017 9:44 pm
2007-i
Vovix писал(а): А программистом придется стать... раз решили использовать MDM!
по прошивке wifi-iot.com все прописано у них-же, почитайте!!!
Накидал скрипт. Так правильно будет?

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

$value=getGlobal("ESP82660022a64e.pwm0"); // состояние pwm0
if ((getGlobal('ESP82660022a64e.gpio4')) =="1") // если есть движение
{
 getURL('http://192.168.10.165/?pwm0=255', 0);
}
clearTimeOut("Название таймера"); // остановка таймера
setTimeOut("Название таймера",'http://192.168.10.165/?pwm0=$value', 0); // запуск таймера и отправка команды с предыдущим значением pwm   
Если есть ошибки, пожалуйста поправьте, пока нет возможности добавить в мажордомо для проверки.

Re: действия после срабатывания датчика движения

Добавлено: Вт дек 26, 2017 11:36 pm
skysilver
2007-i писал(а):Если есть ошибки, пожалуйста поправьте, пока нет возможности добавить в мажордомо для проверки.

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

setTimeOut('Название таймера', 'getURL("http://192.168.10.165/?pwm0='.$value.'", 0);', 0); // запуск таймера и отправка команды с предыдущим значением pwm       
clearTimeOut('Название таймера') можно не вызывать.

Re: действия после срабатывания датчика движения

Добавлено: Ср дек 27, 2017 12:18 am
2007-i
skysilver писал(а):
2007-i писал(а):Если есть ошибки, пожалуйста поправьте, пока нет возможности добавить в мажордомо для проверки.

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

setTimeOut('Название таймера', 'getURL("http://192.168.10.165/?pwm0='.$value.'", 0);', 0); // запуск таймера и отправка команды с предыдущим значением pwm        
clearTimeOut('Название таймера') можно не вызывать.
Как я понимаю это для принудительного останова таймера что бы избежать ошибок. Нет?

Re: действия после срабатывания датчика движения

Добавлено: Ср дек 27, 2017 12:20 am
skysilver
2007-i писал(а):Как я понимаю это для принудительного останова таймера что бы избежать ошибок. Нет?
Да, но clear и так вызывается внутри setTimeOut. Так что можно, но необязательно.

Re: действия после срабатывания датчика движения

Добавлено: Вт апр 03, 2018 11:48 am
dengi.76
Привет ДРУЗЬЯ ! В датчике движения Broadlink в метод logicAction у объекта "входная дверь" имею такой код :

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

$ot = $this->object_title;
$status = $this->getProperty('status');
$updatedTime = $this->getProperty('updated');
$passed = time() - $updatedTime;
$newTimeout = 0;

if (!$status) {
    ClearTimeOut($ot.'_passed');
    say("Входная дверь закрыта",2);
}

if ($passed < 60 && $status) {
    $newTimeout = 60;
    say("Входная дверь открыта",2);
} elseif ($passed < 90 && $status) {
    $newTimeout = 120;
    say("Входная дверь открыта ".round($passed/60)." минуту",2);
} elseif ($passed < 240 && $status) {
    $newTimeout = 120;
    say("Входная дверь открыта ".round($passed/60)." минуты",2);
} elseif ($passed < 1900 && $status) {
    $newTimeout = 300;
    say("Входная дверь открыта ".round($passed/60)." минут",2);
}

if ($newTimeout > 0) {
    setTimeOut($ot.'_passed','callMethod("'.$ot.'.logicAction");',$newTimeout);
}
, и он прекрасно работает ! Посоветуйте что нужно изменить в коде чтоб он заработал в датчиках движения Xiaomi, т.к. у датчика от Broadlink свойства 0 при закрытой, 1 при открытой, у Xiaomi наоборот !
Заранее СПАСИБО !!!