Тест новой прошивки для реле WB-MR* с поддержкой обработки нажатий

тестирую прошивки с первого дня выхода, обновил 5 реле WB-MR6C v.2 и один WB-MRM2-mini
ко всем входам всех WB-MR6C v.2 подцеплены кнопки, режимы работы по требованиям проекта, но в основном это - долгое нажатие любой кнопки - выкл всего на модуле, одинарное - переключение соответствующего выхода, на некоторых кнопках переключение 2 и более выходов. Есть кнопки с отработкой одинарного, двойного и долгого нажатия. Везде всё ок. Время ожидания двойного клика настроил как мне удобно, тоже все ок, антидребезг тоже работает, по крайней мере на моих не самых качественных кнопках я ложных срабатываний не заметил.
Жду в релиз и хочу перейти с testing в stable

3 лайка

Спасибо за отзыв. Поделитесь, пожалуйста, значениями, которые вы выставили. И расскажите, чем не устроили заводские.

Вставлю свои 5 копеек. Выше обсуждали, что реле ожидает двойное нажатие даже когда на него нет обработчиков. По умолчанию второе нажатие ожидается 500мс, вроде. Это иногда не удобно - нажал один раз, чтобы свет переключить и не понимаешь сработало или нет. Если уменьшить время ожидания второго клика до 200мс, то этот момент уже не особо раздражает)

Мой кейс: пока что одна кнопка в прихожей, она переключает свет в прихожей по одинарному нажатию и отключает весь свет в доме по длинному (мастер-выключатель).

2 лайка

Время защиты от дребезга входа (мс): 50 мс, не помню какое было по-умолчанию, наверное такое же.
Время длинного нажатия (мс): 1000
Время двойного нажатия, мс: 400
Причина проста: хотелось более быстрой реакции, не удобно долго ждать

1 лайк

Создал тему самопроизвольное включение реле MR6 на новой прошивке.

После установки системы на объект подобрал для себя оптимальные параметры по реакции:
если на входе не висит двойной клик, то:
-антидребезг 20 мс, длинное нажатие 800 мс, двойное нажатие 200 мс
если есть двойные клики, то:
-антидребезг 50 мс, длинное нажатие 800 мс, двойное нажатие 400 мс

Пока кажется, что пользоваться удобно. Реакция практически мгновенная, в глаза не бросается.
В первом случае увеличение антидребезга вызывает неадекватное срабатывание одинарного клика, поэтому было подобрано значение в 20 мс, с ним адекватно.

3 лайка

У меня вопрос:
возможно ли реализовать публикацию события (одинарное\двойное\долгое нажатие) в mqtt топик по средствам шаблона?
например в такой /devices/wb-mr6c_148/once/i1=0 или 1
/devices/wb-mr6c_148/duble/i1=0 или 1
/devices/wb-mr6c_148/long/i1=0 или 1

Здравствуйте!

Нет, данное событие никак не известно контроллеру, оно формируется внутри самого модуля. Чтобы определить из контроллера, что нажатие произошло нужно опрашивать счетчик выбранных событий и проверять, изменился ли он.

Тестирую модуль MR6C (has already latest fw 1.17.5)

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

Ожидаемое поведение, что если не включено двойное нажатие, то одинарное должно происходить мгновенно, сразу после размыкания сухих контактов.

Для наглядности подписался на топик и добавил время с наносекундами:

$ mosquitto_sub -h 127.0.0.1 -v -t '/devices/wb-mr6c_201/#' | xargs -IL date +"%s.%N: L"
1648181237.387702268: /devices/wb-mr6c_201/controls/input_1 State 1
1648181237.539706706: /devices/wb-mr6c_201/controls/input_1 State 0
1648181237.917321864: /devices/wb-mr6c_201/controls/input_1 Single Press Counter 116
1648181237.949349882: /devices/wb-mr6c_201/controls/K1 1

1648181447.631433186: /devices/wb-mr6c_201/controls/K2 1
1648181447.639101125: /devices/wb-mr6c_201/controls/input_2 State 1
1648181447.793052160: /devices/wb-mr6c_201/controls/input_2 State 0

Видно задержку 0.5сек. Второй вход настроек как кнопка без фиксации, тут мгновенно.

wb-mqtt-serial.conf:

 {
     "channels" : [
         {"enabled" : true, "name" : "Single Press Counter"},
         {"enabled" : true, "name" : "Long Press Counter"},
         {"enabled" : true, "name" : "Double Press Counter"}
     ],
     "device_type" : "button_mapping_matrix",
     "in1_lp" : 1,
     "in1_sp" : 3,
     "in2_lp" : 1,
     "in3_lp" : 1,
     "in4_lp" : 1,
     "in5_lp" : 1,
     "name" : "Input 1"
 }

Вот так выглядит в web:

Пробовал менять enabled на false для “Double Press Counter” непосредственно в файле, поведение не изменилось.

Здравствуйте! Спасибо за обратную связь.
Да, все верно. Алгоритм обработки типов нажатий более сложный: всегда происходит определение одного из 4-х типов нажатий. Отключить обработку какого-либо типа нажатия сейчас нельзя. Из-за этого могут иногда быть заметны задержки реакции. Для уменьшения времени задержки реакции на одиночное нажатие попробуйте уменьшить параметр Double Press Time (ms).

Разработчики сейчас думают над оптимизацией алгоритма обработки нажатий.

Данное поведение обсуждалось в данной теме выше: Тест новой прошивки для реле WB-MR* с поддержкой обработки нажатий - #13 от пользователя rlovd

Выставил время срабатывания 100мс и перестало вообще включаться:

1648186777.955447600: /devices/wb-mr6c_201/controls/input_1 State 0
1648186778.449481990: /devices/wb-mr6c_201/controls/input_1 State 1
1648186778.526575546: /devices/wb-mr6c_201/controls/input_1 State 0
1648186779.062177114: /devices/wb-mr6c_201/controls/input_1 State 1
1648186779.260206465: /devices/wb-mr6c_201/controls/input_1 State 0
1648186779.641986257: /devices/wb-mr6c_201/controls/input_1 State 1
1648186779.797651215: /devices/wb-mr6c_201/controls/input_1 State 0

Не происходит включение реле… если ставить 150мс то срабатывает

Такого параметра в настройках нет. Какой именно параметр изменяете?

А время защитаы от дребезга - какое?

Двойное нажатие выставлял. При 150мс становится быстрей реакция. Но думаю надо ловить отпускание кнопки и срабатывать когда двойное нажатие не нужно.

image

Защита от дребезга галочки не стоит (какой значение при этом используется загадка?):

image

По умолчанию 50 мс. Запишите желаемое, чтобы не было сомнений.

Установил дребезг 50мс

"in1_debounce_ms" : 50,
"in1_dp_time" : 100,

Результат тотже, не включается реле.
Еще поэкспериментировал, выставлял dp_time 110, 120, 130, 140, 150 и заметил следующее, чтобы реле сработало надо успеть за 150мс (видимо за время dp_time) нажать и отпустить кнопку, если между нажатием и отпусканием проходит больше времени чем установлено в dp_time то реле не переключается. Да все верно, выставил dp_time 100мс и прям быстрое нажатие приводит к сработке реле.

Быстрое нажатие, реле сработало:
1648202477.284810635: /devices/wb-mr6c_201/controls/input_1 State 1
1648202477.360994713: /devices/wb-mr6c_201/controls/K1 1
1648202477.369899744: /devices/wb-mr6c_201/controls/input_1 State 0
1648202477.410014362: /devices/wb-mr6c_201/controls/input_1 Single Press Counter 293

Слегка долгое нажатие на кнопку, не срабатывает:
1648202479.109493154: /devices/wb-mr6c_201/controls/input_1 State 1
1648202479.335966123: /devices/wb-mr6c_201/controls/input_1 State 0

Подтверждаю, тоже заметил у себя.
Выставил время двойного нажатия в 200 мс, антидребезг в 20. Когда настраивал и тестировал, видимо, быстро нажимал на клавиши и переключение происходило адекватно. На следующий день пришел уже без оборудования, “как пользователь”, и понял, что не всегда успеваю уложиться в заданный интервал и клик просто не проходит. Причем не проходит логика ни одинарного клика ни долгого. То есть нажатие получается просто холостое, что странно. В моем понимании, все, что по продолжительностью меньше времени долгого нажатия, должно рассматриваться как клик.

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

Собирался уже записывать видео с демонстрацией, вы опередили меня с этой проблемой=)

Мне сегодня пришли выключатели кнопочные от SE, вот я и стал тестировать как оно в живую. (там весьма тугая пружина стоит).

Получается долгое нажатие проще через JS отловить через таймер и вход настроить как кнопку без фиксации, стабильнее и более понятнее будет работать. В таком виде как сейчас неудобно и ожидаешь как минимум, что при отпускании кнопки свет “моргнет” сразу, а не через задержку.

с модбас модулями через JS не получится в долгие и двойные нажатия. Для этого лучше модуль wd-14