MRGBW-D 4 independent channels отвязать вход от выхода

Добрый день, использую диммер для св.лент MRGBW-D с прошивкой на 4 независимых канала. Появилась необходимость обрабатывать двойное нажатие на нескольких входах чтобы включать другие устройства.
Если правильно понимаю, для этого входы нужно отвязывать от выходов. Причем все…
Карта регистров от базовой прошивки диммера я так понял не совпадает с этой прошивкой. В 5ый регистр не дает записать 1. В принципе регистр отсутствует.

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

Добрый день.
Но ведь в таблице указано, что аппаратная обработка входов настраивается в 16-18 holding.
Надо использовать таблицу именно от установленной версии прошивки.
Но вообще - в ближайшем будущем будет прошивка обновлена. И да, сразу с поддержкой аппаратной обработки типов нажатий.

Регистры 16-18 эффекта не дают ((
Остановил watchdog, wb-mqtt-serial
Записал 1 в соотв регистр. Стартанул wb-mqtt-serial. Правило привязанное к изменению входа модуля не отрабатывает (((

Из таблицы:

Режим управления внешними входами:

0 — управление отключено
1 — управление включено

Делите отладку задачи на части. Подпишитесь на топик для начала. В нем изменения отображаются?

ОК. Подпишусь для проверки.

И все-таки 1 - включено аппаратное или программное управление входом или выходом ? В таблице указано что значение по-умолчанию 0 из чего сделал вывод что именно программное управление входом отключено. Вывод вполне может быть ложным.

Можно полностью расшифровать понятие “управление включено” или “управление выключено” из таблицы регистров ?

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

“Управление включено” - диммер будет реагировать на активирование входов и соответствующим образом управлять нагрузкой.
“Управление выключено” - диммер не будет реагировать на активирование входов. Управление диммером можно осуществлять только записью значений в соответствующие регистры или через движок правил.

Уточняющий вопрос. При “управление выключено” я могу правилом считывать изменения состояния входов или это полная деактивация входов модуля ?

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

Вне зависимости от состояния регистров 16-18 ?
Мне с одной стороны нужно сохранить управление лентой с другой нужно добавить управление другим устройством (по двойному нажатию).

Да, состояние входов будут всегда отображаться в соответствующих топиках. Главное, чтобы в шаблоне эти каналы были выбраны для опроса.

ОК. Спасибо проверю.
На паузе…

Подисался на топик. Вижу что при кратковременном нажатии в mqtt сообщения о новом статусе не приходят. Хотя должно быть два сообщения 1 и 0. При долгом нажатии порядка 1с сообщения приходят (1 и 0). При этом в регистах 16-18 записана 1.

Куда копать дальше ?

В модуле стоит предрелизная прошивка на 4 независимых канала. Финального релиза ведь не было?

А как часто проходит опрс именно этого регистра? Вообще - если в промежуток между замыканием-размыканием входа не было запроса к нему - то он и не отобразится, естественно. Но как раз для обнаружения коротких событий созданы регистры счетчиков нажатий. По их изменению ии можно определить.
Проверьте.

Нет, не было. Но уже в ближайшем будущем будет. И, кстати с аппаратной обработкой типов нажатий.

Это разве не шаблоном определяется ? Все каналы опрашиваются с интервалом 20мс. Этот в том числе. Смотрю в WebUI Serial Device Driver Configuration.

Честно, не знаю каков стандартный интервал импульса от кнопочного выключателя… Мне казалось чтобы сделать меньше 20мс нужно постараться … Попробую чуть задержать нажатие …

Нет, дело в том что планировщик драйвера будет выдерживать 20 мс (или настроенное) только в том случае если на шине одно устройство с одним регистром. Это минимальное значение. Опрос (запрос-ответ) одного регистра на скорости 9600 занимает 25-40 мс. А если устройств несколько, на каждом не по одному регистру - то цикл может быть и полсекунды и больше.

Да уж… с двойным нажатием через правила получилось не очень. На шине 12 модулей. Считаю изменение счетчика нажатий за интервал времени. Если быстро нажать аппаратно модуль светодиодных лент отрабатывает включение/выключение, а по mqtt события изменения счетчика нажатия не происходит (( в итоге получается что если нажал очень коротко, то нужно нажимать больше 2х раз.
Посмотрите пожалуйста код. Может есть очевидные недоработки и ошибки?

var vent_su1_timeout_ms = 180 * 1000; //время работы вентилятора в мс
var vent_su1_timer_id = null;

defineVirtualDevice(“vent_wc1”, {
title: “Вентилятор су1”,
cells: {
OnOff: {
type: “switch”,
value: false
},
lastUpdated: {
type: “value”,
value: 0
}
}
});

defineRule(“vent1_switch_rule”, {
whenChanged: “vent_wc1/OnOff”,
then: function (newValue, devName, cellName) {
dev[“wb-gpio/EXT2_R3A6”] = newValue;
}
});

defineRule(“vent1_push_rule”, {
whenChanged: “wb-mrgb_97/Input 1 counter”,
then: function (newValue, devName, cellName) {
//log("New value = ",newValue);
timeStamp = new Date();
lapsed = timeStamp.getTime() - Number(dev[“vent_wc1”][“lastUpdated”]);
dev[“vent_wc1”][“lastUpdated”] = timeStamp.getTime();

        //log("lapsed ", lapsed);
        //log("now is ", timeStamp.getTime());
        //log ("last updated ", Number(dev["vent_wc1"]["lastUpdated"]));
        //log("Time lapsed", timeStamp.getTime() - Number(dev["vent_wc1"]["lastUpdated"]));
        
        if (lapsed < 8500) { //запуск вентилятора если кнопка была нажата дважды в течении 8.5 секунд
          log("wb-gpio_EXT2_R3A6", dev["wb-gpio/EXT2_R3A6"]);
          dev["vent_wc1"]["OnOff"] = true;
          if (vent_su1_timer_id) {
            clearTimeout(vent_su1_timer_id);
          }
          vent_su1_timer_id = setTimeout(function () {
            dev["vent_wc1"]["OnOff"] = false;
            timeStamp = new Date();
            dev["vent_wc1"]["lastUpdated"] = timeStamp.getTime();
            vent_su1_timer_id = null;
          }, vent_su1_timeout_ms);
        }

    }

});
][“lastUpdated”] = timeStamp.getTime();
vent_su1_timer_id = null;
}, vent_su1_timeout_ms);
}

    }

});

Для уменьшения интервала опроса счетчиков срабатывания входов диммера можно увеличить скорость работы шины RS-485, отключить все ненужные каналы, у некритичных ко времени каналов время опроса увеличить, а у критичных ко времени - счетчиков - уменьшить (если сейчас большое). Если есть возможность, то подключить на отдельный порт.