WB-MR14 и короткое нажатие кнопки


#1

Здравствуйте.
Имеем Wirenboard5 и модуль WB-MR14.
К модулю WB-MR14 подключены звонковые кнопки (без фиксации).
На нажатие кнопки реле на WB-MR14 срабатывает исправно.
Однако, в правиле нажатие кнопки короче примерно 1 секунды (короткое нажатие) не ловится.
Длинное нажатие кнопки ловится исправно.
Вот лог нажатий кнопки, видны только длинные нажатия. Причем при длинных нажатиях ловятся как факт нажатия, так и факт отпускание кнопки:

Включить отладку
2019-12-12 23:02:08Button is press. Value= true (это нажатие)
2019-12-12 23:02:08nopressbutton_flag: 0
2019-12-12 23:02:15Button is press. Value= false (это отпускание)
2019-12-12 23:02:15nopressbutton_flag: 0
2019-12-12 23:02:35Button is press. Value= true (это нажатие)
2019-12-12 23:02:35nopressbutton_flag: 0
2019-12-12 23:02:42Button is press. Value= false (это отпускание и т.д.)
2019-12-12 23:02:42nopressbutton_flag: 0
2019-12-12 23:03:12Снять блокировку после нажатия кнопки: 1
2019-12-12 23:04:42Button is press. Value= true
2019-12-12 23:04:42nopressbutton_flag: 0
2019-12-12 23:04:47Button is press. Value= false
2019-12-12 23:04:47nopressbutton_flag: 0
2019-12-12 23:05:13Button is press. Value= true
2019-12-12 23:05:13nopressbutton_flag: 0
2019-12-12 23:05:17Button is press. Value= false
2019-12-12 23:05:17nopressbutton_flag: 0

Режим работы шины 485 в приложенном файле.

Кусок правила на сработку кнопки:
defineRule(“pressbutton_detector_1”, {//определение принудительного выключения света в коридоре, при уходе
whenChanged: “wb-mr14_21/Input 1”, //если нажата кнопка при входе (не важно, на включение или нет, просто факт нажатия)
then: function (newValue) {
nopressbutton_flag = 0;
log ("Button is press. ",“Value=”,newValue);
log ("nopressbutton_flag: ",nopressbutton_flag);
if (pressbutton_timer_1_id) {
clearTimeout(pressbutton_timer_1_id);
}
pressbutton_timer_1_id = setTimeout(clear_button_timer, pressbutton_timer_1_timeout_ms);
}
});

Вопрос. Как ловить короткое нажатие кнопки?
Благодарю.

Андрей


#2

Добрый день!

Короткое нажатие слежением за

вам, скорее всего, не поймать - оно может попасться между циклами опроса реле по Modbus.
Чтобы узнать, что оно было, вам нужно смотреть на регистр со счётчиком нажатий. И, наверно, будет полезно в целом оптимизировать скорость опроса по Modbus - отключить лишние регистры, увеличить скорость (если поддерживается).


#3

Здравствуйте.
Прошу пояснить, что значит отключить лишние регистры (это на самом модуле wb-mr14 или в брокере MQTT убрать лишние подписки или как-то еще?) и как это сделать?
Прошу подсказать, как увеличить скорость опроса?
Прошу подсказать, по какому триггеру (или как-то иначе) запускать сценарий опроса регистра со счетчиком нажатий?
Я пока умею запускать сценарий только по факту изменения какого-либо контрола.


#4

Здравствуйте.
Прошу экспертов помочь в поиске ответов на вопросы выше.


#5

Это написано буквально в документации на WB-MR14: https://wirenboard.com/wiki/index.php/WB-MR14_Modbus_14_Channel_Relay_Module

искать по “счетчика нажатий”


#6

Благодарю!
Помогло.

Андрей