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

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
SmoKE_xDDD
Сообщения: 325
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Благодарил (а): 53 раза
Поблагодарили: 147 раз

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

Сообщение SmoKE_xDDD » Сб фев 08, 2020 1:19 pm

Таймер который ставится на включение, если движение в течении действия таймер - чистим его и перезаводим.
Оборудование: Xiaomi + Aqara (Реле, датчики, выключатели)
Навыки: php, html, js
Реализация УД: MJDM + php. Управление с планшета в стене из собственной WEB морды.
Chainik
Сообщения: 1072
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 130 раз
Поблагодарили: 328 раз

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

Сообщение Chainik » Сб фев 08, 2020 3:07 pm

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"";
}
За это сообщение автора Chainik поблагодарил:
lihodeev (Сб фев 08, 2020 3:23 pm)
Рейтинг: 1.25%
lihodeev
Сообщения: 117
Зарегистрирован: Ср июл 25, 2018 10:37 pm
Благодарил (а): 30 раз
Поблагодарили: 6 раз

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

Сообщение lihodeev » Сб фев 08, 2020 3:26 pm

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

Супер! именно так и представлял себе.
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3, Xiaomi Mi Robot Vacuum SKV4000GL
Аватара пользователя
SmoKE_xDDD
Сообщения: 325
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Благодарил (а): 53 раза
Поблагодарили: 147 раз

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

Сообщение SmoKE_xDDD » Сб фев 08, 2020 3:34 pm

Совсем не рациональная трата ресурсов =)
Оборудование: Xiaomi + Aqara (Реле, датчики, выключатели)
Навыки: php, html, js
Реализация УД: MJDM + php. Управление с планшета в стене из собственной WEB морды.
Chainik
Сообщения: 1072
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 130 раз
Поблагодарили: 328 раз

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

Сообщение Chainik » Сб фев 08, 2020 3:44 pm

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

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

Сообщение xor » Сб фев 08, 2020 5:42 pm

lihodeev писал(а):
Сб фев 08, 2020 1:02 pm
в активах - коридор, датчик движения, реле включения света. Есть логика - проходим коридор включается свет, спустя 3 минуты после последней активности свет выключается. Эта часть работает. Хотелка - включить свет не по первому срабатыванию датчика движения (коридор ведет в другую комнату и к входной двери и датчик срабатывает в любом случае) , а спустя какое то время (если задержался в коридоре). У кого какие мысли?
Вы же всё написали уже. При первой сработке дд запускайте таймер. Как он сработает, проверяйте снова дд Если он активен, включайте свет
lihodeev
Сообщения: 117
Зарегистрирован: Ср июл 25, 2018 10:37 pm
Благодарил (а): 30 раз
Поблагодарили: 6 раз

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

Сообщение lihodeev » Сб фев 08, 2020 5:54 pm

Chainik писал(а):
Сб фев 08, 2020 3:07 pm

Я бы попробовал решить так. Заводим отдельное свойство, которое будет фиксировать первое срабатывание (OBJECT.pervoe_srabatyvanie).
А дальше прописываем логику:
Хм.. идея так и остается - супер, делаю скрипт с Вашим кодом, запускаю ииии... не включился свет(но свойство объекта поменялось на 1) в течении 15 сек запускаю еще раз, включился.. как бы все ок, НО когда прописываю код в мотиондетектед датчика - при первом же срабатывании датчика включается свет. Не может ли датчик два раза менять свое состояние к ряду? В качестве бреда - может дребезг контактов??
ЗЫ датчик движения HC-SR501
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3, Xiaomi Mi Robot Vacuum SKV4000GL
lihodeev
Сообщения: 117
Зарегистрирован: Ср июл 25, 2018 10:37 pm
Благодарил (а): 30 раз
Поблагодарили: 6 раз

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

Сообщение lihodeev » Сб фев 08, 2020 6:15 pm

xor писал(а):
Сб фев 08, 2020 5:42 pm
Вы же всё написали уже. При первой сработке дд запускайте таймер. Как он сработает, проверяйте снова дд Если он активен, включайте свет
так свет надо включить если датчик сработал больше одного раза за период (пусть 15 секунд). Потому что я могу просто пройти в комнату мимо ДД и не задержаться в коридоре(не выхожу из дома), а вот если я нахожусь под ним(начал обуваться) только в этом случае мне нужен свет (надо только второе срабатывание и больше подряд )
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3, Xiaomi Mi Robot Vacuum SKV4000GL
Аватара пользователя
xor
Сообщения: 1468
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 131 раз
Поблагодарили: 406 раз

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

Сообщение xor » Сб фев 08, 2020 6:32 pm

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

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

Сообщение lihodeev » Сб фев 08, 2020 6:37 pm

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
откуда может браться?
Raspberry 3, AMS 16, arduinka 2560, Orange pi Zero, Broadlink RM3, Xiaomi Mi Robot Vacuum SKV4000GL
Ответить