Re: Включение света по датчику движения
Добавлено: Вс апр 09, 2017 8:39 pm
Ж
Уважаемый xor,я про непосредственно 30 секунд этого таймаута самого датчика,именно motiondetected,рнр-строки:это 30 секунд,в течение которых он видит движение или ЧЕРЕЗ 30 секунд только увидит меня.Вот что я не пойму никак.xor писал(а):http://majordomo.smartliving.ru/Main/Pr ... gFunctions
см.Запланированные задачи и события
SetTimeOut("title","commands", $timeout); -- $timeout в секундах
значит, что через $timeout секунд выполнятся команды "commands"
Код: Выделить всё
clearTimeOut($this->object_title.'_detected');
setTimeOut($this->object_title.'_detected',"setGlobal('".$this->object_title.".motionDetected',0);",30); Код: Выделить всё
if (gg('XiOpenclose01.status')==0) {
for ($i=1;$i>=3;$i++) {
if (gg('XiMotion04.status')==1) {
sg('Relay05.status',1);
break;
}
sleep(1);
}
}Лучше так не делать, так как датчик движения проверяется только на 0,1 и 2 секунде. Сработает ли в этот момент ДД - не известно. Продержится ли уровень 1 до проверки - тоже не известно. Проще всего ввести какой-нибудь параметр, например в датчике двери, устанавливать его при открытии двери и далее запускать таймер на 3 секунды, который сбросит этот параметр. В ДД при срабатывании проверять этот параметр, и если он установлен - включать светskyrider писал(а): Вт дек 04, 2018 7:57 pm В прихожей установлен датчик открытия двери , датчик движения и реле на свет.
Задача включить свет в прихожей когда входят в дверь из подъезда, при срабатывании датчика дверей (XiOpenclose01.status') и после этого в течении 3 сек срабатывает датчик движения ('XiMotion04.status'), то включается свет ('Relay05.status'), переделал под себя вот такой код и поместил его в метод датчика открытия двери XiOpenclose01 добавив его сюда SOpenClose-> statusUpdated *Где то ошибка, свет не включается, подскажите что поправить.Код: Выделить всё
if (gg('XiOpenclose01.status')==0) { for ($i=1;$i>=3;$i++) { if (gg('XiMotion04.status')==1) { sg('Relay05.status',1); break; } sleep(1); } }
Дверь открывается наружу, так что проблемы с реакцией датчика движения на дверь не будет. Нужно попробовать как вы советуете, ввести какой-нибудь параметр в датчике двери. Подскажите пример или код для установки параметра при открытии, запуска таймера на 3 секунды иfandaymon писал(а): Вт дек 04, 2018 9:07 pm
Лучше так не делать, так как датчик движения проверяется только на 0,1 и 2 секунде. Сработает ли в этот момент ДД - не известно. Продержится ли уровень 1 до проверки - тоже не известно. Проще всего ввести какой-нибудь параметр, например в датчике двери, устанавливать его при открытии двери и далее запускать таймер на 3 секунды, который сбросит этот параметр. В ДД при срабатывании проверять этот параметр, и если он установлен - включать свет
Ещё проблема может быть что ДД реагирует на движение двери и сработает раньше чем датчик двери - в таком случае логику надо будет пересматривать в другую сторону
Добавляем в объект XiOpenclose01 свойство LightOnskyrider писал(а): Ср дек 05, 2018 1:16 pmДверь открывается наружу, так что проблемы с реакцией датчика движения на дверь не будет. Нужно попробовать как вы советуете, ввести какой-нибудь параметр в датчике двери. Подскажите пример или код для установки параметра при открытии, запуска таймера на 3 секунды иfandaymon писал(а): Вт дек 04, 2018 9:07 pm
Лучше так не делать, так как датчик движения проверяется только на 0,1 и 2 секунде. Сработает ли в этот момент ДД - не известно. Продержится ли уровень 1 до проверки - тоже не известно. Проще всего ввести какой-нибудь параметр, например в датчике двери, устанавливать его при открытии двери и далее запускать таймер на 3 секунды, который сбросит этот параметр. В ДД при срабатывании проверять этот параметр, и если он установлен - включать свет
Ещё проблема может быть что ДД реагирует на движение двери и сработает раньше чем датчик двери - в таком случае логику надо будет пересматривать в другую сторону
сброса этого параметра.
Код: Выделить всё
if (gg('XiOpenclose01.status')==0) {
sg('XiOpenclose01.LightOn',1);
SetTimeOut('DoorLightOn',"sg('XiOpenclose01.LightOn',0);",3);
}Код: Выделить всё
if (gg("XiOpenclose01.LightOn')==1) {
sg('Relay05.status',1);
}