Страница 2 из 4

Re: Как выключить свет?

Добавлено: Сб фев 08, 2020 1:19 pm
SmoKE_xDDD
Таймер который ставится на включение, если движение в течении действия таймер - чистим его и перезаводим.

Re: Как выключить свет?

Добавлено: Сб фев 08, 2020 3:07 pm
Chainik
lihodeev писал(а): Сб фев 08, 2020 1:02 pm в активах - коридор, датчик движения, реле включения света. Есть логика - проходим коридор включается свет, спустя 3 минуты после последней активности свет выключается. Эта часть работает. Хотелка - включить свет не по первому срабатыванию датчика движения (коридор ведет в другую комнату и к входной двери и датчик срабатывает в любом случае) , а спустя какое то время (если задержался в коридоре). У кого какие мысли?
Я бы попробовал решить так. Заводим отдельное свойство, которое будет фиксировать первое срабатывание (OBJECT.pervoe_srabatyvanie).
А дальше прописываем логику:

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

//Проверяем, было ли уже первое срабатывание
if (gg('OBJECT.pervoe_srabatyvanie') == 1)  {
//Уже было первое срабатывание и текущее срабатывание не первое
//тут ДЕЙСТВИЕ по управлению светом (код)
} else {
//Ранее срабатываний не было, тогда текущее срабатывание является первым (зафиксируем это)
sg('OBJECT.pervoe_srabatyvanie', 1);
//Устанавливаем время, через которое произойдет новый эпизод, когда очередное срабатывание надо считать первым (обнулим свойство, допустим, через 15 секунд)
SetTimeOut("MyTimer_999","sg('OBJECT.pervoe_srabatyvanie', 0);",15);
return"";
}

Re: Как выключить свет?

Добавлено: Сб фев 08, 2020 3:26 pm
lihodeev
Chainik писал(а): Сб фев 08, 2020 3:07 pm
Я бы попробовал решить так. Заводим отдельное свойство, которое будет фиксировать первое срабатывание (OBJECT.pervoe_srabatyvanie).
А дальше прописываем логику:

Супер! именно так и представлял себе.

Re: Как выключить свет?

Добавлено: Сб фев 08, 2020 3:34 pm
SmoKE_xDDD
Совсем не рациональная трата ресурсов =)

Re: Как выключить свет?

Добавлено: Сб фев 08, 2020 3:44 pm
Chainik
SmoKE_xDDD писал(а): Сб фев 08, 2020 3:34 pm Совсем не рациональная трата ресурсов =)
А в чем нерациональная трата ресурсов? В обращениях к БД? MDM и так много раз в секунду обращается к базе... Несколько лишних обращений картины не изменят.

Re: Как выключить свет?

Добавлено: Сб фев 08, 2020 5:42 pm
xor
lihodeev писал(а): Сб фев 08, 2020 1:02 pm в активах - коридор, датчик движения, реле включения света. Есть логика - проходим коридор включается свет, спустя 3 минуты после последней активности свет выключается. Эта часть работает. Хотелка - включить свет не по первому срабатыванию датчика движения (коридор ведет в другую комнату и к входной двери и датчик срабатывает в любом случае) , а спустя какое то время (если задержался в коридоре). У кого какие мысли?
Вы же всё написали уже. При первой сработке дд запускайте таймер. Как он сработает, проверяйте снова дд Если он активен, включайте свет

Re: Как выключить свет?

Добавлено: Сб фев 08, 2020 5:54 pm
lihodeev
Chainik писал(а): Сб фев 08, 2020 3:07 pm
Я бы попробовал решить так. Заводим отдельное свойство, которое будет фиксировать первое срабатывание (OBJECT.pervoe_srabatyvanie).
А дальше прописываем логику:
Хм.. идея так и остается - супер, делаю скрипт с Вашим кодом, запускаю ииии... не включился свет(но свойство объекта поменялось на 1) в течении 15 сек запускаю еще раз, включился.. как бы все ок, НО когда прописываю код в мотиондетектед датчика - при первом же срабатывании датчика включается свет. Не может ли датчик два раза менять свое состояние к ряду? В качестве бреда - может дребезг контактов??
ЗЫ датчик движения HC-SR501

Re: Как выключить свет?

Добавлено: Сб фев 08, 2020 6:15 pm
lihodeev
xor писал(а): Сб фев 08, 2020 5:42 pm Вы же всё написали уже. При первой сработке дд запускайте таймер. Как он сработает, проверяйте снова дд Если он активен, включайте свет
так свет надо включить если датчик сработал больше одного раза за период (пусть 15 секунд). Потому что я могу просто пройти в комнату мимо ДД и не задержаться в коридоре(не выхожу из дома), а вот если я нахожусь под ним(начал обуваться) только в этом случае мне нужен свет (надо только второе срабатывание и больше подряд )

Re: Как выключить свет?

Добавлено: Сб фев 08, 2020 6:32 pm
xor
lihodeev писал(а): Сб фев 08, 2020 6:15 pm
xor писал(а): Сб фев 08, 2020 5:42 pm Вы же всё написали уже. При первой сработке дд запускайте таймер. Как он сработает, проверяйте снова дд Если он активен, включайте свет
так свет надо включить если датчик сработал больше одного раза за период (пусть 15 секунд). Потому что я могу просто пройти в комнату мимо ДД и не задержаться в коридоре(не выхожу из дома), а вот если я нахожусь под ним(начал обуваться) только в этом случае мне нужен свет (надо только второе срабатывание и больше подряд )
ну при первом же срабатывании запускайте таймер 15 с, а при сработке дд проверяйте его наличие. если такой таймер есть, значит, уже не первое срабатывание и можно вкл свет. как движа не будет более 15 с, можно выключать и система снова будет ждать второго срабатывания дд

Re: Как выключить свет?

Добавлено: Сб фев 08, 2020 6:37 pm
lihodeev
lihodeev писал(а): Сб фев 08, 2020 5:54 pm
Хм.. идея так и остается - супер, делаю скрипт с Вашим кодом, запускаю ииии... не включился свет(но свойство объекта поменялось на 1) в течении 15 сек запускаю еще раз, включился.. как бы все ок, НО когда прописываю код в мотиондетектед датчика - при первом же срабатывании датчика включается свет. Не может ли датчик два раза менять свое состояние к ряду? В качестве бреда - может дребезг контактов??
ЗЫ датчик движения HC-SR501
прикольно - из истории статуса
2020-02-08 17:34:39 0 /objects/?job=8348922
2020-02-08 17:34:32 1 /objects/?object=pirPRH&op=m&m=update&v=0
2020-02-08 17:34:31 0 /objects/?job=8348910
2020-02-08 17:34:29 1 /objects/?object=pirPRH&op=m&m=update&v=1
откуда может браться?