Добрый вечер. Написал небольшое правило. Работать будет хорошо с дискретными модулями ввода (С модбас устройствами к сожалению возникнут трудности). Например WBIO-DI-DR-14.
логика довольно проста: При нажатии смотрим время. При отпускании смотрим ещё раз и сравниваем сколько прошло. Если меньше секунды - короткое нажатие, если больше секунды - длинное нажатие. Вместо wb-gpio/A1_OUT укажите нужное Вам устройство. Вместо логов укажите нужные Вам реакции.
var timerLast;
var timerTime;
defineRule("long_press", {
whenChanged: "wb-gpio/A1_OUT",
then: function(newValue, devName, cellName) {
if (newValue) {
timerLast = Date.now();
}else{
timerTime = Date.now();
if ((timerTime - timerLast) <= 1000) {
log("короткое нажатие");
} else if ((timerTime - timerLast) >= 1000) {
log("длинное нажатие");
}
}
}
});