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

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

rtroyakov
Сообщения: 109
Зарегистрирован: Сб июл 11, 2015 2:54 am
Откуда: Московская обл,город Ногинск
Благодарил (а): 27 раз
Поблагодарили: 6 раз

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

Сообщение rtroyakov » Вс апр 09, 2017 8:39 pm

Ж
Последний раз редактировалось rtroyakov Вс апр 09, 2017 8:43 pm, всего редактировалось 1 раз.
rtroyakov
Сообщения: 109
Зарегистрирован: Сб июл 11, 2015 2:54 am
Откуда: Московская обл,город Ногинск
Благодарил (а): 27 раз
Поблагодарили: 6 раз

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

Сообщение rtroyakov » Вс апр 09, 2017 8:41 pm

xor писал(а):http://majordomo.smartliving.ru/Main/Pr ... gFunctions
см.Запланированные задачи и события

SetTimeOut("title","commands", $timeout); -- $timeout в секундах

значит, что через $timeout секунд выполнятся команды "commands"
Уважаемый xor,я про непосредственно 30 секунд этого таймаута самого датчика,именно motiondetected,рнр-строки:это 30 секунд,в течение которых он видит движение или ЧЕРЕЗ 30 секунд только увидит меня.Вот что я не пойму никак.
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

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

Сообщение xor » Вс апр 09, 2017 9:02 pm

Глядя на

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

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

30с - это время, данное объекту для принятия решения - есть движение в поле зрения датчика или нет.
Как-то так.
За это сообщение автора xor поблагодарил:
rtroyakov (Вс апр 09, 2017 9:07 pm)
Рейтинг: 1.16%
rtroyakov
Сообщения: 109
Зарегистрирован: Сб июл 11, 2015 2:54 am
Откуда: Московская обл,город Ногинск
Благодарил (а): 27 раз
Поблагодарили: 6 раз

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

Сообщение rtroyakov » Вс апр 09, 2017 9:08 pm

Спасибо.Теперь понял
skyrider
Сообщения: 138
Зарегистрирован: Ср ноя 22, 2017 11:46 am
Благодарил (а): 35 раз
Поблагодарили: 7 раз

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

Сообщение 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);
    }
}
Где то ошибка, свет не включается, подскажите что поправить.
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Вт дек 04, 2018 8:07 pm

https://connect.smartliving.ru/profile/ ... og163.html
помнится про циклы и подвигнуло написать, где вы такие примеры берете?
код в дд, комнату? проверка по времени двери (можно разными вариантами)

в statusUpdated свой код помещать вдумчиво обращать внимание на порядок вызова классового кода, в примере пересмотреть уставки, можно сократить запросы к бд используя параметр и т.д.
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

Сообщение fandaymon » Вт дек 04, 2018 9:07 pm

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);
    }
}
Где то ошибка, свет не включается, подскажите что поправить.
Лучше так не делать, так как датчик движения проверяется только на 0,1 и 2 секунде. Сработает ли в этот момент ДД - не известно. Продержится ли уровень 1 до проверки - тоже не известно. Проще всего ввести какой-нибудь параметр, например в датчике двери, устанавливать его при открытии двери и далее запускать таймер на 3 секунды, который сбросит этот параметр. В ДД при срабатывании проверять этот параметр, и если он установлен - включать свет

Ещё проблема может быть что ДД реагирует на движение двери и сработает раньше чем датчик двери - в таком случае логику надо будет пересматривать в другую сторону
Logrus
Сообщения: 2079
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

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

Сообщение Logrus » Вт дек 04, 2018 9:49 pm

гетглобал кешируется :lol:
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
skyrider
Сообщения: 138
Зарегистрирован: Ср ноя 22, 2017 11:46 am
Благодарил (а): 35 раз
Поблагодарили: 7 раз

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

Сообщение skyrider » Ср дек 05, 2018 1:16 pm

fandaymon писал(а):
Вт дек 04, 2018 9:07 pm

Лучше так не делать, так как датчик движения проверяется только на 0,1 и 2 секунде. Сработает ли в этот момент ДД - не известно. Продержится ли уровень 1 до проверки - тоже не известно. Проще всего ввести какой-нибудь параметр, например в датчике двери, устанавливать его при открытии двери и далее запускать таймер на 3 секунды, который сбросит этот параметр. В ДД при срабатывании проверять этот параметр, и если он установлен - включать свет

Ещё проблема может быть что ДД реагирует на движение двери и сработает раньше чем датчик двери - в таком случае логику надо будет пересматривать в другую сторону
Дверь открывается наружу, так что проблемы с реакцией датчика движения на дверь не будет. Нужно попробовать как вы советуете, ввести какой-нибудь параметр в датчике двери. Подскажите пример или код для установки параметра при открытии, запуска таймера на 3 секунды и
сброса этого параметра.
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

Сообщение fandaymon » Ср дек 05, 2018 1:33 pm

skyrider писал(а):
Ср дек 05, 2018 1:16 pm
fandaymon писал(а):
Вт дек 04, 2018 9:07 pm

Лучше так не делать, так как датчик движения проверяется только на 0,1 и 2 секунде. Сработает ли в этот момент ДД - не известно. Продержится ли уровень 1 до проверки - тоже не известно. Проще всего ввести какой-нибудь параметр, например в датчике двери, устанавливать его при открытии двери и далее запускать таймер на 3 секунды, который сбросит этот параметр. В ДД при срабатывании проверять этот параметр, и если он установлен - включать свет

Ещё проблема может быть что ДД реагирует на движение двери и сработает раньше чем датчик двери - в таком случае логику надо будет пересматривать в другую сторону
Дверь открывается наружу, так что проблемы с реакцией датчика движения на дверь не будет. Нужно попробовать как вы советуете, ввести какой-нибудь параметр в датчике двери. Подскажите пример или код для установки параметра при открытии, запуска таймера на 3 секунды и
сброса этого параметра.
Добавляем в объект XiOpenclose01 свойство LightOn

На изменение статуса вешаем код

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

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);
}
Ну или в датчике движения просто смотреть когда последний раз открывалась дверь
За это сообщение автора fandaymon поблагодарил:
skyrider (Ср дек 05, 2018 5:41 pm)
Рейтинг: 1.16%
Ответить