Main

Включение света по датчику движения

Имеется -- сенсор движения на базе контроллера безопасности, реле освещения на базе 1-wire ключа.

На данной странице рассмотрим простой сценарий включения освещения в комнате по датчику движения.

Для функционирования данного сценария

1.Создадим в системе объект ReleKabinet , который будет иметь следующие свойства

В методе объекта напишем следующий код:

if($params['VALUE'])
{
   sg("ReleKabinet.status","1");
   //say('Освещение в кабинете включено', 1);
   $this->setProperty('statusText','Включено');
} 
else 
{
   sg("ReleKabinet.status","0"); 
   //say('Освещение в кабинете выключено', 1);
   $this->setProperty('statusText','Выключено');
}

2. Создадим объект для датчика движения sensorMovement1

Напишем код для метода данного объекта

if(timeBetween('22:00','06:30'))
{ 
   // проверка времени
   sg("ReleKabinet.status","1");
   sg('ReleKabinet.statusText','Включено');
   clearTimeOut("kabinetLight");
   SetTimeOut("kabinetLight",'sg("ReleKabinet.status","0"); 
   sg("ReleKabinet.statusText","Выключено");',10*60);
}

в данном коде видно что стоит условие на то, что сценарий будет срабатывать в вечернее и ночное время. Также стоит ограничение, выключения света через 10 минут, если в комнате нет движения

3. Для подключения нагрузки используем 1-wire ключ на базе компонента MAXIM/DALLAS DS2413

Данное устройство имеет следующие настройки в системе

Управление освещением в комнате с помощью 1-wire ключа можно организовать и через меню управления системой

На данном примере мы рассмотрели реализацию управления освещением в комнате как в ручном, так и автоматическом (с помощью датчика движения) режиме.

 
 

Обсуждение

 

Vip: Обсуждение страницы Включение света по датчику движения

Urbas81: У меня вопрос по DS2413, есть у меня модуль, 1 вход на оптроне и выход на реле, как можно нажав кнопку на данном модуле замкнуть реле программно (при этом Sensed.A перейдет из 1 в 0, в ручном режиме все работает, подаю напряжение на вход оптопары, или замыкаю кнопку которая после оптопары подтягивает линию к 0, и Sensed.A меняется), а вот можно ли его получить, точнее не получить, а обрабатывать мгновенно, в какой цикл его поместиь?

sergejey: У меня вопрос по DS2413, есть у меня модуль, 1 вход на оптроне и выход на реле, как можно нажав кнопку на данном модуле замкнуть реле программно (при этом Sensed.A перейдет из 1 в 0, в ручном режиме все работает, подаю напряжение на вход оптопары, или замыкаю кнопку которая после оптопары подтягивает линию к 0, и Sensed.A меняется), а вот можно ли его получить, точнее не получить, а обрабатывать мгновенно, в какой цикл его поместиь? Мгновенно реагировать из системы на изменение свойств 1wire не получится. Точнее, придётся исхитриться. Система опрашивает значение свойств 1-wire в лучшем случае раз в секунду (если добавить свойство в "избранные"). Для мгновенной реакции нужно чтобы был какой-то отдельный "демон" который либо опрашивал сеть чаще чем раз в секунду либо как-то работал по принципу реагирования на событие, если OWFS может так работать. Как вариант, сделать эксперимент убрав в цикле ./scripts/cycle_onewire_starred.php задержку опроса шины (строчка sleep(1);).

anemcov: У меня вопрос по DS2413, есть у меня модуль, 1 вход на оптроне и выход на реле, как можно нажав кнопку на данном модуле замкнуть реле программно (при этом Sensed.A перейдет из 1 в 0, в ручном режиме все работает, подаю напряжение на вход оптопары, или замыкаю кнопку которая после оптопары подтягивает линию к 0, и Sensed.A меняется), а вот можно ли его получить, точнее не получить, а обрабатывать мгновенно, в какой цикл его поместиь? а если удерживать кнопку до тех пор, пока не произойдет опрос устройства и не сработает реле? Или такой вариант не подходит под условаия задачи?

Urbas81: У меня вопрос по DS2413, есть у меня модуль, 1 вход на оптроне и выход на реле, как можно нажав кнопку на данном модуле замкнуть реле программно (при этом Sensed.A перейдет из 1 в 0, в ручном режиме все работает, подаю напряжение на вход оптопары, или замыкаю кнопку которая после оптопары подтягивает линию к 0, и Sensed.A меняется), а вот можно ли его получить, точнее не получить, а обрабатывать мгновенно, в какой цикл его поместиь? Мгновенно реагировать из системы на изменение свойств 1wire не получится. Точнее, придётся исхитриться. Система опрашивает значение свойств 1-wire в лучшем случае раз в секунду (если добавить свойство в "избранные"). Для мгновенной реакции нужно чтобы был какой-то отдельный "демон" который либо опрашивал сеть чаще чем раз в секунду либо как-то работал по принципу реагирования на событие, если OWFS может так работать. Как вариант, сделать эксперимент убрав в цикле ./scripts/cycle_onewire_starred.php задержку опроса шины (строчка sleep(1);). Ну 1 секунда меня устроит после добавления галочки на избранное, я не могу сообразить, куда прописать условие if(Sensed.A=='0') {Rele.status='1'} чтоб оно сразу отработалось, до этого все примеры были где нажимается кнопка и там прописывается код, а сдесь ничего в интерфейсе не нажимается.

Urbas81: У меня вопрос по DS2413, есть у меня модуль, 1 вход на оптроне и выход на реле, как можно нажав кнопку на данном модуле замкнуть реле программно (при этом Sensed.A перейдет из 1 в 0, в ручном режиме все работает, подаю напряжение на вход оптопары, или замыкаю кнопку которая после оптопары подтягивает линию к 0, и Sensed.A меняется), а вот можно ли его получить, точнее не получить, а обрабатывать мгновенно, в какой цикл его поместиь? а если удерживать кнопку до тех пор, пока не произойдет опрос устройства и не сработает реле? Или такой вариант не подходит под условаия задачи? Да, но в каком месте включить реле?

Urbas81: Перефразирую, есть метод onNewMinute можно ли получить onNewSec, метод который вызывается каждую секунду?

sergejey: Перефразирую, есть метод onNewMinute можно ли получить onNewSec, метод который вызывается каждую секунду? Если речь именно о 1-wire, то нет необходимости в таком методе. Делается по-другому -- нужное свойство помечается как избранное и оно будет сканироваться каждую секунду. Далее, можно настроить связанный метод или просто код, который может проверять значение изменившегося свойства. Например, если свойство 1-wire устройства назвыается "Sensed.A", то код может быть таким: if ($changed_values['Sensed.A']) { if ($changed_values['Sensed.A']['VALUE']) { // значение 1 } else { // значение 0 } } (если используется не встроенный код, а вызывается метод какой-то, то вместо $changed_values надо использовать $params)

Urbas81: Вставил данный код под таблицей свойств данного датчика в поле: Действие при изменении: Сценарий: никакой реакции, также вместо INA.in ставил Sensed.A if ($changed_values) { if ($changed_values) { say("Питание подано"); } else { say("Питание пропало"); } } галочка на избранное установлена, никакой реакции. Или я не в то место прописал. Спасибо что терпите меня :D

sergejey: А можно скриншот настроек 1-wire устройства (там где видны все свойства и прописанный код)?

Urbas81: http://s018.radikal.ru/i515/1301/5c/bdc9a21c6698.jpg на данном скриншоте попытка исполнить код через сценарии, результат аналогичен.

paf: на данном скриншоте попытка исполнить код через сценарии, результат аналогичен. А фраза алогична! Ну в дым! Толи было, толи нет? Если скриншот очевиден, то к чему подпись?

sergejey: На скриншоте ошибка в системе, точнее в названии -- два раза Сценарий как название поля, хотя второе должно называться Код. Попробуй переключить настройку "Действие при изменении" на второе значения Сценарий, которое ближе к самому коду. Да! И вместо INA.in надо использовать Sensed.A -- первое это название свойства объекта, а второе это название свойства 1-wire устройства. В массиве $changed_values используется именно последнее.

Urbas81: Смутновато понял, что надо сделать, но буду еще пробовать, спасибо.

Urbas81: Вроде заработало, с таким кодом if ($changed_values) { if ($changed_values) { say("Питание подано"); } else { say("Питание пропало"); } } удалил вообще названия полей тоже работает, странно, вчера я это тоже проделывал, не работало, буду дальше смотреть. Еще раз спасибо за помощь.

Urbas81: Странно, задержка получается около 10 секунд от срабатывания входа и до включения выхода, хотя интервал проверки стоит 1 сек, и установлена галочка на избранном.

denis: Если вообще обратиться к таймингам 1wire, то там никто и не обещал быстрого "отклика". Поэтому делать включение света от датчика движения (кнопки и прочее) на 1wire я бы не советовал. Можно делать то, что некритично по времени включения т.е. от 0,5 до 2 сек. Т.к. В случае если на одной линии висят термометры ds18b20 то если мне не изменяет память период их опроса в некоторых режимах может достигать 750 мс (0.75 сек), что уже очень некомфортно для освещения.

denis: Плюс задержка на обработку события хотя бы даже 1 секунда - и уже будешь немного нервничать в темноте ))

Urbas81: Когдая я проводил опыты, я работал с одной микросхемой DS2413, вход и выход, задержки получаись от 6 до 10 сек, дома были подключены еще 4 DS18b20 и кажется одна DS2406, задержки были такими же, но иногда реакция наблюдалась и через 2 сек после нажатия, но после отпускания опять секунд 10, закономерности я так и не уловил. Вход планировалось использовать для контроля напряжения.

denis: у меня выходы ds2408 переключаются примерно за 2-5 секунд каждый, т.е. 8 выходов могут в целом переключиться за 30-40 секунд!!! Ну это только подтверждает, что у всех все примерно одинаково с 1wire. И надо понимать, что основной "цикл" программы далеко не за милисекунды прокручивается.

sergejey: Я думаю тут дело не в цикле программы, а в скорости работы с 1-wire через OWFS. Программа обращается к функциям сканирования библиотеки OWFS и она может сама по себе долго отрабатывать.

denis: Я думаю тут дело не в цикле программы, а в скорости работы с 1-wire через OWFS. Программа обращается к функциям сканирования библиотеки OWFS и она может сама по себе долго отрабатывать. и это тоже имеет место быть! - надо просто предупредить новеньких, что на 1-wire щелкать выключателем для мгновенного включения лампочки скорее всего не получится! (ну только если не одно устройство на ветке и нет термометров на ней же) Плюс к этому надо уметь обрабатывать свойство set_alarm (как-то так называется), чтобы получать состояние устройства 1wire (при его изменении) без его прямого опроса. Я вот 1wire вижу только как средство диагностики или управления процессами в которых скорость реакции некритична. Ну в самом деле какая разница через сколько секунд я узнаю, что въездные ворота закрылись? главное знать что они закрыты)))

Alekseym6: состояние DS2413 читается не из uncached? ранее без MDM моя система работала на скриптах bash и php, mysql, cron. в системе 19 DS18b20, 8 DS2413. реакция на включение света менее 1 сек. сейчас время реакции на включение света плавает в большом диапазоне 1-8 сек. как провести debug для определения тормозов?

sergejey: состояние DS2413 читается не из uncached? ранее без MDM моя система работала на скриптах bash и php, mysql, cron. в системе 19 DS18b20, 8 DS2413. реакция на включение света менее 1 сек. сейчас время реакции на включение света плавает в большом диапазоне 1-8 сек. как провести debug для определения тормозов? а как подключен в системе ключ? стоит какое-то время для опроса или это свойство добавленно в избранное? в последнем случае система пытается опрашивать такие свойства каждую секунду. конечно, было бы хорошо разобраться где "затык" -- то ли в опросе (система получает информацию об изменении с задержкой), то ли в реакции -- реагирует с задержкой. либо и там и там. надо копать :)

Alekseym6: скрипт указан на странце свойств датчика, произведена замена задержки ( sleep(1) на usleep(500000) ) в цикле. при работе cycle.php видно, что цикл ow опрашивается 2 раза в сек, но пока результата нет. на данный момент скоростную реакцию я оставил на своем bash скрипте. может стоит составлять скрипт (в MDM) управления светом, как одиночным постоянным циклом, составленным автоматически из переменных в WEB-админке.

anemcov: скрипт указан на странце свойств датчика, произведена замена задержки ( sleep(1) на usleep(500000) ) в цикле. при работе cycle.php видно, что цикл ow опрашивается 2 раза в сек, но пока результата нет. на данный момент скоростную реакцию я оставил на своем bash скрипте. может стоит составлять скрипт (в MDM) управления светом, как одиночным постоянным циклом, составленным автоматически из переменных в WEB-админке. Прошу прощения за офф-топик, но кто-то из участников форума уже высказывал мысль по поводу автономности исполнительных механизмов. И я все больше принимаю его сторону. Если хотите, чтобы все работало быстро - исключайте сервер из исполнительной цепочки, пускай он только регистрирует события.

Alekseym6: ранее мой коттедж обслуживала железка tp-link mr3020 + USB->OW свет включался, отопление регулировалось, энергопотребление минимально, motion делал снимки по движению. Теперь хочу красоту, стильность, скорость, видеорегистрацию и все в одном. поставил MDM (здорово ребята потрудились - красота) на 2 ядра AMD E450. теперь решаю вопрос по скорости реакции на ключи вкл/выкл.

anemcov: ранее мой коттедж обслуживала железка tp-link mr3020 + USB->OW свет включался, отопление регулировалось, энергопотребление минимально, motion делал снимки по движению. Теперь хочу красоту, стильность, скорость, видеорегистрацию и все в одном. поставил MDM (здорово ребята потрудились - красота) на 2 ядра AMD E450. теперь решаю вопрос по скорости реакции на ключи вкл/выкл. Если чисто на MDM завязывать - быстродействие навряд-ли будет высокое. Все-таки PHP не самый быстрый интерпретатор. Я у себя на тестовой системе выключатель прицепил к GPIO, скриптом на Python прослушиваю и обрабатываю нажатия (пока мигаю светодиодом, потом планирую заменить на реле). Также Питоном отправляю веб-запросы в МДМ. Ну и из МДМ отправляю команды в скрипт, чтобы двусторонний обмен получился. И даже в этом случае есть небольшая задержка включения. Но по ощущениям она сопоставима с задержкой включения энергосберегающих ламп.

Alekseym6: изменить назначение "избранное" в свойствах OW для быстрой реакции на событие -> при установке галочки создавать короткий скрипт с конкретными действиями и собрать в cycle последовательность или разветвление таких скриптов.

shemnik69: Может тема уже не актуальна но напишу всем это поможет. Итак основной вопрос как добиться срабатывания реле включения лампы мгновенно т.е сразу и иметь автономное управление как с сервера по сценарию либо через выключатель по своему разумению. Добавлю еще одну немаловажную функцию что управление освещением должно быть отделено от сервера. Т.е. управляется но на уровне воздействия и контроля. Это можно сделать! только сочетая схемное решение и программную часть. Сложного ничего нет. Зато на выходе гарантрованный результат и четкая независимая от капризов сервера работа. Я уже подробно расписывал как это работает вот здесь http://www.ab-log.ru/forum/viewtopic.ph ... 2&start=20 поэтому чтобы не повторятся можно либо посмотреть внимательно либо задать вопрос.

sergejey: Так и не обязательно всё на MDM завязывать. Более того, излишняя централизация только вредит делу. Управление светом я тоже собираюсь делать автономное, но с отправкой уведомлений в систему и возможностью получать из системы команды.

shemnik69: Совершенно верно. На МД нужно возлагать только информативно указательную и предупредительную часть. А полный контроль на мой взгляд не особо нужен да и очень становится не комфортно при каких либо проблемах...когда сервер "Has fallen"... а вообще мне по роду работы именно близка распределенная система, когда выход из строя или отключение части элементов не приводит к полному краху всей системы. А по управлению освещением я постараюсь весь наработанный материал приложить он многим придется ко двору... С Уважением!

Ivan: Решил тоже подключить DS2413 к системе (Эмуляция на ардуине через библиотеку viewtopic.php?f=6&t=1464&hilit=OneWireHub) И понял что не смогу сделать обработку датчика присутствия т.к. цикл читает данные их Chached OneWide. То есть если открыть uncached то статус меняется. В тоже время в Мажордомо нет. Покопался в исходниках - так и есть читает только Chached. Что конечно оправдано если читаешь градусник (вычисления от 400мс до 2сек). Но для ключей DS2413 почти мгновенно. Можно ли как то расширить настройки свойств где можно было бы указывать что данное свойство читать из uncached Я осознаю что читать раз в секунду параметер с удалённого датчика очень будет тормозить систему. Но всё же, должна быть такая возможность Неверной ход: В исходниках видел флаг настройки '/uncached' но она похоже берётся у УРЛ. Но в цикле его не используешь - и нельзя т.к. параллельно висят градусники (медленные) Верный: В таблице есть путь на каждое свойство, если добавить в свойство колонку uncached и в скрипте при запросе свойства добавлять '/uncached'+owpropertties.path , то можно решить эту проблему PS: Отдельно Сергею - можно я реализую у себя, проверю, и Вы включите это в общий код? PS2: По возможности попробую найти проблему с STARRED

Ivan: Пописал onewire.class.php , попробовал работает. Но пришёл к выводу что это свойство пригодится только для cycle_onewire_starred.php То есть лучше расширить starred свойство 0-Обычное 1-каждый раз (как сейчас) 2-каждый раз без кеша

sergejey: PS: Отдельно Сергею - можно я реализую у себя, проверю, и Вы включите это в общий код? PS2: По возможности попробую найти проблему с STARRED Буду только рад. Я бы предложил Starred считывать всегда без кэша, что бы не запутывать пользователей этим понятием. Раз актуальность свойства так важна, то всегда его без кэша читаем.

Ivan: Это будет тормозить цикл для градусников (с пассивным питанием) А вот ключи будут почти сразу читаться

sergejey: Это будет тормозить цикл для градусников (с пассивным питанием) А вот ключи будут почти сразу читаться Можно градусники не отмечать как starred и поставить минимально необходимый период опроса для них.

I_I_Imonder: Доброго времени. Имеется netping подключил к нему датчик движения прикрутил к мж , 1 если есть движение и соответственно 0 если нет, МЖ опрашивает нетпинг каждую секунду. пишется это все в свойство Motion.status, не могу придумать метод чтобы при появлении 1 включался свет и каждые 10 секунд смотрел в Motion.Status если там 1 то ничего не далать, а если ноль то выключить свет. Помогите плз..

sergejey: Доброго времени. Имеется netping подключил к нему датчик движения прикрутил к мж , 1 если есть движение и соответственно 0 если нет, МЖ опрашивает нетпинг каждую секунду. пишется это все в свойство Motion.status, не могу придумать метод чтобы при появлении 1 включался свет и каждые 10 секунд смотрел в Motion.Status если там 1 то ничего не далать, а если ноль то выключить свет. Помогите плз.. Можно установить метод, который будет запускаться при изменении свойства (через настройку свойства класса). Соответственно в нём делать проверку на 0/1 и в случае 1 включать свет и устанавливать таймер на выключение через 10 секунд. Соответственно, если каждый раз будет устанавливаться 1, то таймер будет сам отодвигаться.

I_I_Imonder: Примерно вот так? if($params) { sg("DKabinet.Status","1"); say('Освещение в кабинете включено', 1); } else { sg("DKabinet.Status","0"); say('Освещение в кабинете выключено', 1); }

mmalva: Включение работает моментально если датчик движения сам вызывает метод запросом GET. "Можно установить метод, который будет запускаться при изменении свойства (через настройку свойства класса). " Нужно!!! Это позволяет избежать задержек. Более того отнеситесь к датчику более детально. Сразу в классе датчика создайте свойства "вкл\выкл", длительность задержки повторного срабатывания, время последнего срабатывания, время последнего опроса(делайте датчик сразу с обратной связью). а задержку датчика устанавливаем так. Class: inhouseMovementSensors M statusOFF if ($this->getProperty('on') == 1) { if ($this->getProperty('status') == 1) { if (getGlobal('ThisComputer'.'.'.'cycle_pingRun') > $this->getProperty('updatedTimestamp') + $this->getProperty('aliveTimeOut')) { $this->setProperty('status', '0'); $this->callMethod('statusChanged', array('status'=>'0')); } } }

rtroyakov: Всем привет.Разъясните,пожалуйста:вот в статье "включения света по датчику движения",в пошаговом описании есть такое: if(timeBetween('22:00','06:30')) { // проверка времени sg("ReleKabinet.status","1"); sg('ReleKabinet.statusText','Включено'); clearTimeOut("kabinetLight"); SetTimeOut("kabinetLight",'sg("ReleKabinet.status","0"); sg("ReleKabinet.statusText","Выключено");',10*60); } Откуда появляется таймер kabinetlight и где его нужно создать,что в нём записать,как заполнить? Я во "встроенных функциях/запланированные задачи и события" так и не понял кто для кого и что чистит.... Надеюсь на скорый ответ.Спасибо

Jager: Откуда появляется таймер kabinetlight и где его нужно создать,что в нём записать,как заполнить? Я во "встроенных функциях/запланированные задачи и события" так и не понял кто для кого и что чистит.... Надеюсь на скорый ответ.Спасибо У меня вот так включается свет по датчику callMethod('Megad1-11.turnOn'); //Включается свет
SetTimeOut("lightOffTimer","callMethod('Megad1-11.turnOff');",60);
 //Создается таймер с именем lightOffTimer (имя произвольное) который через 60 сек запускает метод Megad1-11.turnOff который соответственно свет выключает.

rtroyakov: Jager,привет,пока ты здесь,поясни,пожалуйста: 1)Твой весь этот код прописан ГДЕ?(я полагаю, в методе ДАТЧИКА?) 2) Допустим,с таким же именем lightOffTimer создаю таймер ГДЕ?(В классе Timer?) 3)В методе lightOffTimer я уже пишу код на "выключение" предыдущего "включения" свыше?

Jager: Jager,привет,пока ты здесь,поясни,пожалуйста: 1)Твой весь этот код прописан ГДЕ?(я полагаю, в методе ДАТЧИКА?) Да 2) Допустим,с таким же именем lightOffTimer создаю таймер ГДЕ?(В классе Timer?) Командой SetTimeOut таймер создается сам, ничего нигде прописывать не надо. 3)В методе lightOffTimer я уже пишу код на "выключение" предыдущего "включения" свыше? Не в методе, а в строке создающей таймер пишите нужное действие по истечении времени, через запятую указываете время срабатывания таймера. В общем в метод который срабатывает по датчику пишите указанные выше две строки. В первой вызываете метод на включение callMethod('Megad1-11.turnOn'); Во второй когда создаете таймер указываете метод на выключение SetTimeOut("lightOffTimer","callMethod('Megad1-11.turnOff');",60); И все.

rtroyakov: Спасибо ,Jager!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Jager: Спасибо ,Jager!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Вот так можете посмотреть свои запущенные таймеры в реальном времени http://joxi.ru/LQ2KbVKUq6Y7mj.jpg

ILGAS: Всем привет. Нашел маленький недостаток в коде взятый у Сергея в connect. В коридоре и на кухне датчик работает отлично (коридор проходной, а кухня большая, там датчик периодически щелкает когда попадаю в зону действия), но во второй прихожей (она маленькая) свет выключается через, установленное в таймере, время, пока нахожусь в прихожей. Как я понял, датчик движения постоянно находится в замкнутом состоянии (постоянно он меня видит и не отключается) , я не успеваю одеться за данный период времени, конечно можно выставить и 15-20 мин, но тогда, если я просто зашел и вышел, свет будет гореть все это время. Похоже нужно сделать еще один таймер, который через определенный период будет добавлять время к таймеру (дополнительное время), чтобы он не выключался пока датчик реагирует на движение. Но как переписать код знаний не достаточно.

Jager: Всем привет. Нашел маленький недостаток в коде взятый у Сергея в connect. В коридоре и на кухне датчик работает отлично (коридор проходной, а кухня большая, там датчик периодически щелкает когда попадаю в зону действия), но во второй прихожей (она маленькая) свет выключается через, установленное в таймере, время, пока нахожусь в прихожей. Как я понял, датчик движения постоянно находится в замкнутом состоянии (постоянно он меня видит и не отключается) , я не успеваю одеться за данный период времени, конечно можно выставить и 15-20 мин, но тогда, если я просто зашел и вышел, свет будет гореть все это время. Похоже нужно сделать еще один таймер, который через определенный период будет добавлять время к таймеру (дополнительное время), чтобы он не выключался пока датчик реагирует на движение. Но как переписать код знаний не достаточно. Посмотрите внимательнее на свой датчик движения, практически во всех есть регулировка времени активности. В некоторых моделях это подстроечный резистор, в некоторых джамперы.

ILGAS: Всем привет. Нашел маленький недостаток в коде взятый у Сергея в connect. В коридоре и на кухне датчик работает отлично (коридор проходной, а кухня большая, там датчик периодически щелкает когда попадаю в зону действия), но во второй прихожей (она маленькая) свет выключается через, установленное в таймере, время, пока нахожусь в прихожей. Как я понял, датчик движения постоянно находится в замкнутом состоянии (постоянно он меня видит и не отключается) , я не успеваю одеться за данный период времени, конечно можно выставить и 15-20 мин, но тогда, если я просто зашел и вышел, свет будет гореть все это время. Похоже нужно сделать еще один таймер, который через определенный период будет добавлять время к таймеру (дополнительное время), чтобы он не выключался пока датчик реагирует на движение. Но как переписать код знаний не достаточно. Посмотрите внимательнее на свой датчик движения, практически во всех есть регулировка времени активности. В некоторых моделях это подстроечный резистор, в некоторых джамперы. У меня тык обычные датчики движения, там нету регулировки.

Jager: У меня тык обычные датчики движения, там нету регулировки. Через что подключены ваши датчики движения к мдм? Если через megaD, то настройте порт на P&R.

ILGAS: У меня тык обычные датчики движения, там нету регулировки. Через что подключены ваши датчики движения к мдм? Если через megaD, то настройте порт на P&R. MegaD порт настроен "R" Отправлено с моего SM-G7508Q через Tapatalk

Jager: MegaD порт настроен "R" Сделайте P&R, тогда при появлении движения свет будет включаться а после пропадания сразу выключаться, без таймера.

ILGAS: MegaD порт настроен "R" Сделайте P&R, тогда при появлении движения свет будет включаться а после пропадания сразу выключаться, без таймера. это не выход, я могу там на пару секунд замереть и свет будет мигать.

Jager: MegaD порт настроен "R" Сделайте P&R, тогда при появлении движения свет будет включаться а после пропадания сразу выключаться, без таймера. это не выход, я могу там на пару секунд замереть и свет будет мигать.Так вы сами себе противоречите, ранее вы писали "Как я понял, датчик движения постоянно находится в замкнутом состоянии (постоянно он меня видит и не отключается) "

ILGAS: "Как я понял, датчик движения постоянно находится в замкнутом состоянии (постоянно он меня видит и не отключается) " Вы правы, если вы знаете как работают датчики движения, вы должны меня понять. Не всегда датчик движения на все 100% работает как нам хочется. PS Jager, Спасибо Вам за то, что Вы помогаете.

zelevova: Сделайте P&R, тогда при появлении движения свет будет включаться а после пропадания сразу выключаться, без таймера. это не выход, я могу там на пару секунд замереть и свет будет мигать. Тогда сделай P&R, тогда при появлении движения свет будет включаться а после пропадания выключаться по таймеру. Итого если ты вышел из помещения свет выключится в течении времени заданного в таймере. Если ты еще тут и не шевелишься, то у тебя есть время заданное в таймере пошевелиться что бы свет не начал мигать. :)

ILGAS: Сделайте P&R, тогда при появлении движения свет будет включаться а после пропадания сразу выключаться, без таймера. это не выход, я могу там на пару секунд замереть и свет будет мигать. Тогда сделай P&R, тогда при появлении движения свет будет включаться а после пропадания выключаться по таймеру. Итого если ты вышел из помещения свет выключится в течении времени заданного в таймере. Если ты еще тут и не шевелишься, то у тебя есть время заданное в таймере пошевелиться что бы свет не начал мигать. :) Хорошая идея, теперь осталось реализовать. Постараюсь сам, но шанс что разберусь не большой.

zelevova: Судя по коннекту у тебя свет и датчик связан через класс "комнаты". У меня так же. Можешь посмотреть в коннекте. Что бы сильно не копаться скажу что в метод комнат "onActivity" я прописал включение света, в метод "onIdle" выключение. Время таймера выключения задается свойством "IdleDelay" класса "Комнаты".

ILGAS: Судя по коннекту у тебя свет и датчик связан через класс "комнаты". У меня так же. Можешь посмотреть в коннекте. Что бы сильно не копаться скажу что в метод комнат "onActivity" я прописал включение света, в метод "onIdle" выключение. Время таймера выключения задается свойством "IdleDelay" класса "Комнаты". Спасибо. вечером постараюсь посмотреть.

rtroyakov: Привет всем.Извиняюсь за,может,тупой вопрос,но:"Как сделать ВЫКЛЮЧЕНИЕ света по датчику?" Вот,например,вся детская.Когда там долго(допустим,1 час) никого нет,т.е. нет движения в комнате в независимости от времени суток,как выключить и свет,и розетки(выключить всё,обесточить)?

m-malva: Привет всем.Извиняюсь за,может,тупой вопрос,но:"Как сделать ВЫКЛЮЧЕНИЕ света по датчику?" Вот,например,вся детская.Когда там долго(допустим,1 час) никого нет,т.е. нет движения в комнате в независимости от времени суток,как выключить и свет,и розетки(выключить всё,обесточить)? после срабатывания датчика запустите сценарии или метод который включает у вас освещение и сбросте таймер и снова запустите таймер который запустит скрипт или метод выключения света.

rtroyakov: Так в том и дело,что мне не нужно свет ВКЛючать.Нужно,чтоб датчик "наблюдал",а когда понял,что движения долго нет-обесточил всю комнату.

devoff: rtroyakov как писали выше, создайте метод или сценарий, но не включайте свет, а через заданный таймер выключите. У Вас как настроено управление светом ?

rtroyakov: У Вас как настроено управление светом ? Собственно,ещё никак.Один датчик,с помощью Jager,настроен и из подъезда передаёт объекту (L1out) из класса Rele команду на включение -> таймер -> отключение ,т.е. вот так: if (gg("isDark")) { sg("L1out.status","1"); SetTimeOut("L1outOFF",'sg("L1out.status","0");',2*60); } PS:У меня MegaD

Jager: "Как сделать ВЫКЛЮЧЕНИЕ света по датчику?" Вот,например,вся детская.Когда там долго(допустим,1 час) никого нет,т.е. нет движения в комнате в независимости от времени суток,как выключить и свет,и розетки(выключить всё,обесточить)? В метод который вызывает датчик движения вставьте вот такую строку SetTimeOut("MotionOffTimer","runScript('ваш сценарий');"60*60);  Соответственно в сценарий пропишите все действия которые должны исполнятся после срабатывания таймера. Только это есть смысл использовать там где люди бывают временно, т.е. коридор, туалет и т.д. В детской ребенок например может читать книгу и его движений может быть недостаточно для срабатывания датчика, в какой то момент у него отключится свет, розетки и т.д. У меня например автоматически свет включается и отключается по таймеру во всех проходных помещениях, в комнатах свет выключается принудительно только при постановке на охрану.

rtroyakov: Jager,СПАСИБО.Вы,как всегда,НАВЫСОТЕ-ВЕЗДЕ,где нужна помощь!!!

Jager: Jager,СПАСИБО.Вы,как всегда,НАВЫСОТЕ-ВЕЗДЕ,где нужна помощь!!! Так это все из учебника http://majordomo.smartliving.ru/Main/Pr ... gFunctions

rtroyakov: Парни,подскажите,точнее,разъясните,пожалуйста, русским языком: вот в этой строчке clearTimeOut($this->object_title.'_detected'); setTimeOut($this->object_title.'_detected',"setGlobal('".$this->object_title.".motionDetected',0);",30); Что означает цифра 30 таймаута? Т.е. 30 секунд чего?

xor: http://majordomo.smartliving.ru/Main/ProgrammingFunctions см.Запланированные задачи и события SetTimeOut("title","commands", $timeout); -- $timeout в секундах значит, что через $timeout секунд выполнятся команды "commands"

rtroyakov: Ж

rtroyakov: http://majordomo.smartliving.ru/Main/ProgrammingFunctions см.Запланированные задачи и события SetTimeOut("title","commands", $timeout); -- $timeout в секундах значит, что через $timeout секунд выполнятся команды "commands" Уважаемый xor,я про непосредственно 30 секунд этого таймаута самого датчика,именно motiondetected,рнр-строки:это 30 секунд,в течение которых он видит движение или ЧЕРЕЗ 30 секунд только увидит меня.Вот что я не пойму никак.

xor: Глядя на clearTimeOut($this->object_title.'_detected'); 
setTimeOut($this->object_title.'_detected',"setGlobal('".$this->object_title.".motionDetected',0);",30);   можно сказать, что этот таймаут через 30 с установит свойство motionDetected вашего объекта в 0 и всё. т.е., если датчик установил это свойство в 1 (есть обнаружение движения), через 30 с, если не будет нового срабатывания, свойство сбросится в 0. 30с - это время, данное объекту для принятия решения - есть движение в поле зрения датчика или нет. Как-то так.

rtroyakov: Спасибо.Теперь понял

[ Обсудить на форуме ]

 

MajorDomo

Информация

Проекты

Партнёры

edit SideBar

 
 
 

 

Blix theme adapted by David Gilbert, powered by PmWiki