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

Все получится, такое тестировал:

var buttons = ['wb-mr6c_201/Input 1','wb-mr6c_201/Input 2'];
var timeout = 3000;
var timer = false;
var channels = [
  'wb-mr6c_201/K1', 'wb-mr6c_201/K2',
  'wb-mr6c_201/K3', 'wb-mr6c_201/K4',
  'wb-mr6c_201/K5',  'wb-mr6c_201/K6',
];
defineRule("long_press", {
  whenChanged: buttons,
  then: function(value) {
    if (value) {
      timer = setTimeout(function() {
        for (var i=0;i<channels.length;i++) 
          dev[channels[i]] = false;
        timer = false;
      }, timeout);
    } else if (timer) {
      clearTimeout(timer);
      timer = false;
    }
  }
});

Добрый день!

В версии 1.17.7 мы доработали алгоритм обработки нажатий.

Основные отличия:

  • Короткое нажатие теперь не обязательно должно укладываться во время двойного нажатия. Нажатие, по длительности меньшее, чем время длинного нажатия, считается коротким
  • Время двойного нажатия начинает отсчитываться после окончания первого нажатия и второе нажатие должно начаться в это время
  • Обработку двойного и “короткого, а затем длинного” нажатия можно отключить, установив время двойного нажатия равным нулю. При этом будет моментальная реакция на короткие нажатия
  • Изменились настройки по умолчанию:
    • время длинного нажатия 1000 мс
    • время двойного нажатия 300 мс

Шаблон для версии 1.17.7: config-wb-mr6-fw1_7.json (317.7 КБ)
(технически изменение только одно: минимальное время двойного нажатия теперь равно 0).

Приглашаем попробовать новый алгоритм и оставить отзывы.

3 лайка

Тестирую пару недель на живом объекте. Проблем нет, поведение предсказуемое и ожидаемое. Спасибо!

2 лайка

Аналогичные изменения по обработке нажатий заехали также в WB-MRGBW-D версии 3.0.4

2 лайка

в 1.17.8 режим “кнопка без фиксации” сломался

Добрый день!

Опишите, пожалуйста, подробнее: какое оборудование, что делаете, что получаете и что ожидаете получить?

WB-MR6C v.2 все входы были настроены как кнопки без фиксации, переключали соответствующие выходы, после обновления стали работать как “кнопки с фиксацией”, настройки не менял никакие, только прошивку обновил. Воспроизвелось на одном модуле, на нем все входы были настроены как кнопки без фиксации, если это важно. На других модулях -все ок, но там режимы входов смешанные.

При обновлении прошивки все настройки взаимодействия входов и выходов сбрасываются к значениям по-умолчанию (1: выключатель с фиксацией). При этом, если в файле конфигурации контроллера явно заданы режимы входов и выходов, то при установлении связи с модулем эти режимы запишутся в модуль, и все будет работать как и раньше. Если в конфигурации контроллера эти режимы не были выставлены, то модуль продолжит работать с настройками по умолчанию. Предполагаю, что дело в этом.
Посмотрите, присутствуют ли настройки для режимов взаимодействия входов и выходов в файле /mnt/data/etc/wb-mqtt-serial.conf

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

Попробовал обновить одно реле на новую прошивку, но обнаружил проблему в шаблоне.
Скачал шаблон config-wb-mr6-fw1_7.json из сообщения выше и положил в /mnt/data/etc/wb-mqtt-serial.conf.d/templates.
После этого даже ничего не обновляя в модулях, при заходе в настройку wb-mqtt-serial выдается ошибка на имеющиеся модули mr6c на страндартной прошивке.
Видимо данный шаблон заменяет шаблон по умолчанию. Также в меню при выборе шаблона пропадает шаблон по умолчанию для mr6c. Если новый шаблон убрать из папки, все работает нормально.

Да, если требуется одно устройство с другим шаблоном - то следует его (имя) в шаблоне изменить и положить сам файл в пользовательский каталог шаблонов, /etc/wb-mqtt-serial.conf.d/templates/

В данном шаблоне задано имя:
“device”: {
“name”: “WB-MR6C support buttons”,

Также:
“ru”: {
“WB-MR6C_template_title”: “WB-MR6C v.2, WB-MR6LV/x, WB-MR6HV/x fw1.17 с поддержкой кнопок”,}

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

Чтобы драйвер воспринимал эти шаблоны как разные нужно у нового шаблона изменить device_type, например так:

"device_type": "WB-MR6C-buttons",

Также можно скорректировать title (отображается в выпадающем списке устройств на странице настроек) и id (используется для mqtt-топика).

Добрый день, поставил последнюю версию, это то, чего нехватало, очень круто, что теперь можно обходиться без правил на одном устройстве. Но у меня все же есть большое желание делать автоматизацию, которая будет управлять и другими устройствами, подписываясь на события кнопок.
Как я понял, сейчас события кнопок можно получить только бинарные (нажато/отжато).
Но раз уж контроллер уже внутри знает, какой тип нажатия был, может его тоже надо транслировать в mqtt? Например, добавить в топик state значения кроме 0/1. (сейчас планирую завязаться на счетчики состояний)

Именно счетчики и являются индикатором срабатывания типов нажатия.

Cтоит похожая задача посредством ПЛК (не WB) воспроизводить сценарии по управлению в зависимости от типа нажатия по входу MR6C v.2.
WB-MR6C v.2 управляет через матрицы группами света в одном помещении. А нужно удаленно через ПЛК выключать-включать устройства (группы света, сигнализацию) в других помещениях.

  1. Нельзя ли тип ПОСЛЕДНЕГО нажатия записывать в отдельный регистр? Хотя бы для нулевого входа?

  2. Еще пожелание. Можно сделать mapping- матрицы с задержкой включения/выключения? Такой вопрос тоже возникал выше для управления вентилятором/светом.

Для каждого входа есть счетчик для каждого типа нажатия. Достаточно проверить состояние счетчика - если изменился - то событие было.

Да, такая задача стоит, но не совсем матрица.

А если между опросами контроллером счетчиков произошло изменение разных счетчиков, какое было последним?

Если опрашивать редко, так что можно успеть несколько раз нажать - то конечно “последнее” не установить. А для чего такое моет понадобиться?

Может расширить возможности и упростить реализацию системы автоматизированного управления устройствами в квартире, доме, офисе, складе…
Выглядит примерно так.
Реализуется распределенная система управления. В центре системы ПЛК (или универсальный комп.). Блоки реле с входами раскиданы по разным помещениям/этажам и управляют группами света, группами розеток, отоплением, теплыми полами, жалюзи, замками, сигнализацией, и и т.д.
Один из входов реле (кнопка с несколькими типами нажатий) выполняет функцию Мастер-кнопки. Тип нажатия по этому входу может не только определять состояние выхода/ов данного реле, но и являться источником данных для формирования команды ПЛК на отключение/включение устройств или силовых линий, находящихся в других помещениях, на других этажах или вне дома, склада, офиса…
ПЛК (или универсальный комп.) по modbus периодически опрашивает регистр реле, хранящий тип последнего нажатия мастер-кнопки (s, s-s, l, s-l) и в соответствии с определенным алгоритмом отправляет по шине команды на блоки реле, управляющие устройствами в других помещениях или вне помещений.
Пример использования.
Вы ложитесь спать и используя мастер-кнопку рядом с кроватью можете:

  • погасить весь свет в доме или в части помещений;
  • включить/выключить ночную подсветку, чтобы дойти куда-то;
  • отключить розетки в других помещениях;
  • поставить на охрану часть дома;
  • закрыть рольставни;
  • реализовать некие сценарии управления ( “Имитация присутствия”; “Экономия электроэнергии”; “Доброе утро”; “спокойной ночи”; “Охрана” и т.д. и т.п…)

Таких мастер-кнопок может быть несколько:
у входной двери; в спальне, в гостинной; в гараже, в комнате охраны…
Получаем возможность запуска нескольких (до четырех) сценариев управления объектом непосредственно из места нахождения пользователя. При этом для управления базовыми сценариями можно обходиться без гаджетов (умных колонок, панелей управления, смартфонов), что актуально для пожилых людей, охранников…