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

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

Модератор: immortal

fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

Сообщение fandaymon » Пт мар 01, 2019 9:08 pm

samolet писал(а):
Пт мар 01, 2019 7:24 pm

прописал вот этот код

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

if (gg('MotionSensorTualet.status')==0)
$objects=array('Tualetvv');
foreach($objects as $o) {
clearTimeOut("lightOffTimer");
SetTimeOut("lightOffTimer","callMethod($o.'.turnoff');",60*25);
}
Ммм.. А зачем так СТРАННО делать?! В чём смысл делать массив из одного элемента и считывать его в цикле? Ну и вишенка на торте - первый if вообще ничего не делает

Почему бы просто не написать

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

if (gg('MotionSensorTualet.status')==0) {
 SetTimeOut("lightOffTimer","callMethod('Tualetvv.turnoff');",60*25);
}
Этот код на форуме встречается с десяток раз...
Аватара пользователя
samolet
Сообщения: 472
Зарегистрирован: Чт июн 29, 2017 10:29 am
Благодарил (а): 46 раз
Поблагодарили: 45 раз

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

Сообщение samolet » Пт мар 01, 2019 9:39 pm

:roll: поменял код, не выключается теперь :? поставил свой код выключается я х.з. почему. для проверки ставил 1 минуту
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

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

Сообщение fandaymon » Пт мар 01, 2019 9:59 pm

samolet писал(а):
Пт мар 01, 2019 9:39 pm
:roll: поменял код, не выключается теперь :? поставил свой код выключается я х.з. почему. для проверки ставил 1 минуту
Ну значит первый иф вообще не нужен. Просто пишем так

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

 SetTimeOut("lightOffTimer","callMethod('Tualetvv.turnoff');",60*25);
Аватара пользователя
samolet
Сообщения: 472
Зарегистрирован: Чт июн 29, 2017 10:29 am
Благодарил (а): 46 раз
Поблагодарили: 45 раз

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

Сообщение samolet » Пт мар 01, 2019 10:20 pm

fandaymon писал(а):
Пт мар 01, 2019 9:59 pm
samolet писал(а):
Пт мар 01, 2019 9:39 pm
:roll: поменял код, не выключается теперь :? поставил свой код выключается я х.з. почему. для проверки ставил 1 минуту
Ну значит первый иф вообще не нужен. Просто пишем так

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

 SetTimeOut("lightOffTimer","callMethod('Tualetvv.turnoff');",60*25);
ВСЕ, сделал по таймеру с условием теперь работает отлично, в коде поставил на 25 мин.

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

if (gg('MotionSensorTualet.status')==0){
$objects=array('Tualetvv');
foreach($objects as $o) {
clearTimeOut("lightOffTimer");
SetTimeOut("lightOffTimer","callMethod($o.'.turnoff');",60*25);
}}
Без массива почему то не работает, ( ну так на всякий,,,,, выключатель соноф с родной прошивкой)
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

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

Сообщение xor » Сб мар 02, 2019 2:13 am

clearTimeOut("lightOffTimer"); // не нужно, в следующей строке он, если и был перепишется
Аватара пользователя
samolet
Сообщения: 472
Зарегистрирован: Чт июн 29, 2017 10:29 am
Благодарил (а): 46 раз
Поблагодарили: 45 раз

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

Сообщение samolet » Сб мар 02, 2019 11:10 am

вечером попробую
zeleneew
Сообщения: 20
Зарегистрирован: Ср сен 11, 2019 9:52 pm
Благодарил (а): 3 раза
Поблагодарили: 0

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

Сообщение zeleneew » Чт мар 12, 2020 10:20 pm

В простых устройствах настроил (добавил) датчик движения. привязал свойства к объекту. при обнаружении движения датчиком на простом устройстве происходит соответствующая индикация. Через закладку "связанные устройства" настроил действие "Включить на время (Включить другое устройство на некоторое время по событию)" включение освещения на 15 сек.
по факту движения освещение включается. если движений не обнаруживается, что через 15 сек освещение отключается и тут же включается снова на 15 сек.

Как изменить настройки, чтоб включение происходило только если произошло изменение свойств Motion01.status в значение = 1 и не происходило повторного включения после истечения заданных 15 сек.

Как я понял (может я не прав) первое включение происходит т.к. произошло изменение свойств Motion01.status в значение = 1. а повторное включение происходит из за изменения свойств Motion01.status в значение = 0 (или любое другое, отличное от предыдущего).
zeleneew
Сообщения: 20
Зарегистрирован: Ср сен 11, 2019 9:52 pm
Благодарил (а): 3 раза
Поблагодарили: 0

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

Сообщение zeleneew » Чт мар 12, 2020 11:00 pm

zeleneew писал(а):
Чт мар 12, 2020 10:20 pm
В простых устройствах настроил (добавил) датчик движения. привязал свойства к объекту. при обнаружении движения датчиком на простом устройстве происходит соответствующая индикация. Через закладку "связанные устройства" настроил действие "Включить на время (Включить другое устройство на некоторое время по событию)" включение освещения на 15 сек.
по факту движения освещение включается. если движений не обнаруживается, что через 15 сек освещение отключается и тут же включается снова на 15 сек.

Как изменить настройки, чтоб включение происходило только если произошло изменение свойств Motion01.status в значение = 1 и не происходило повторного включения после истечения заданных 15 сек.

Как я понял (может я не прав) первое включение происходит т.к. произошло изменение свойств Motion01.status в значение = 1. а повторное включение происходит из за изменения свойств Motion01.status в значение = 0 (или любое другое, отличное от предыдущего).
Не уверен, но предварительно помогает решение по замене в SMotions в методе motionDetected кода:

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

require(DIR_MODULES.'devices/SMotions_motionDetected.php');
на код:

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

if ($params['NEW_VALUE'] == "1") {
require(DIR_MODULES.'devices/SMotions_motionDetected.php');
}
Неужели нет более элегантного решения?
Аватара пользователя
Nail
Сообщения: 374
Зарегистрирован: Пн мар 05, 2018 7:09 am
Откуда: Самара
Благодарил (а): 174 раза
Поблагодарили: 28 раз

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

Сообщение Nail » Пт мар 13, 2020 9:05 am

zeleneew писал(а):
Чт мар 12, 2020 10:20 pm
В простых устройствах ....... включение освещения на 15 сек.
по факту движения освещение включается. если движений не обнаруживается, что через 15 сек освещение отключается и тут же включается снова на 15 сек.
У меня несколько таких ПУ связанных с датчиками движения , но впервые с таким сталкиваюсь. У меня все работает четко вкл и выкл. по таймеру(от 60 сек до 90 сек.) без повторных включений. Попробуйте протестируйте со временем более 15 сек.- ну хотя бы 30 сек. и более? Или ПУ криво стоит :D.
У меня такая беда в ПУ второй раз Термостат не управляет тенами на температуру включения и выключения , т.е. теряет связь со связанными устройствами , помогает только новое создание с нуля УД. :lol: (так как я не знаю где и как копать)
Mini AMD A6 1450 Quad-core.Ubuntu Server 18.04 (64-bit). MegaD. Zigbee2mqtt+SLS ZigBee Gateway. Broadlink.
lihodeev
Сообщения: 148
Зарегистрирован: Ср июл 25, 2018 10:37 pm
Благодарил (а): 43 раза
Поблагодарили: 8 раз

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

Сообщение lihodeev » Пт мар 13, 2020 9:43 am

еслм я правильно понял задачу - то у меня работает следующий код в датчик движения- действия -мотиондетектед

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

//если стоит статус 1 в обьекте (управления светом при движении )
//то включим свет если солнце село и время до 23,30
if ((timeBetween((gg('ThisComputer.SunSetTime')),'23:30')){ 
 callMethod('contKUH.turnon');
}
//запустим таймер (15 мин), по истечении которого свет будет выключен

clearTimeOut("lightOffTimerbig");
SetTimeOut("lightOffTimerbig","callMethod('contKUH.turnOff');",60*15);

как то так
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3, Xiaomi Mi Robot Vacuum SKV4000GL
Ответить