Страница 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) даем команду на остановку таймера -
____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) даем команду на остановку таймера -
____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 наоборот !
Заранее СПАСИБО !!!