Добрый день!
Задачу надо структурировать и систематизировать, тогда она решается, как множестве мелких подзадач, работающих как единое целое, это удобно и у реализации, и в дальнейшем обслуживании.
В первую очередь, я бы провел ревезию сигналов. Если я правильно понял, то у вас из оборудования WB есть только контроллер и реле MR6C. Значит, необходимо составить таблицу ввода/вывода, какой канал контроллерной сборки у вас будет за что отвечать. Например, вот такую:
| # |
Устройство |
Канал |
Направление |
Сигнал |
| 1 |
WB-MR6C |
IN1 |
Вход |
Кнопка калитки |
| 2 |
WB-MR6C |
IN2 |
Вход |
Датчик движения |
| 3 |
WB-MR6C |
K1 |
Выход |
Подсветка калитки |
| 4 |
WB-MR6C |
K2 |
Выход |
Освещение дорожки |
| 5 |
WB-MR6C |
K3 |
Выход |
Звонок |
| 6 |
WB-MR6C |
K4 |
Выход |
Электромагнит замка |
Все входы и выходы у нас будут находится на реле, логика - на контроллере. Имейте в виду, что последовательность “длинный-короткий-короткий” модулем на распознается, он может только “короткое”, “длиное”, “двойное”, “короткое-длиное”. Будет проще взять для работы “короткое-длиное”, чем “городить” решение на скриптах.
Второй шаг - выделить и структурировать алгоритмы. Мое предложение:
- Датчик движения сработал ночью (20:00–5:00) → включается подсветка калитки. Если движения больше нет — через минуту подсветка гаснет сама. Днём датчик ничего не включает.
- Нажал кнопку → срабатывает звонок. Так на каждое нажатие, в любое время суток.
- Первое нажатие кнопки ночью (20:00–5:00) → включается освещение дорожки на 10 минут. Если нажать ещё раз, пока дорожка уже горит — ничего не происходит, повторно не включается и таймер не сбрасывается. Днём кнопка дорожку не включает.
- Особая комбинация — длинное нажатие, потом два коротких подряд (с паузой между нажатиями не больше 1.5 секунды) → открывается замок калитки. Работает в любое время суток. Если между нажатиями пауза больше 1.5 секунды — комбинация не засчитывается, нужно начинать заново.
Третий шаг - реализация. И тут есть два пути. Первый - самообрзазование. Много читать, много пробовать, будет весело, но далеко не сразу, вначале будет больно, как любят говорить программисты. Если хотите сделать сами, то начните вот с этим ссылок:
- Движок правил wb-rules - Wiren Board — что такое wb-rules и с чего начать.
- wb-rules/README.md at master · wirenboard/wb-rules · GitHub — справочник по всем функциям (defineRule, таймеры и т.д.).
- Примеры правил - Wiren Board — готовые примеры кода, в том числе с распознаванием нажатий.
- https://learn.javascript.ru — учебник JS с нуля, если новичок не писал на JS вообще.
Второй путь - открывайте гугл, запускайте режим ИИ, говорите, что вы хотите написать скрипты для Wiren Board, отдаете ему список сигналов и поочередно алгоритмы. Я сейчас проверил, “гуголь” дает вполне себе вменяемый результат. Не факт, что все заработает с первого раза, но как правило вторая-третья итерация уже рабочая, а дальше можно делать эти итерации до бесконечности, что-то меняя или улучшая… как говорили программисты в древности - “полировать глюкало” )