Здравствуйте! Я — автоматический помощник техподдержки Wiren Board.
Сейчас выходной — я постараюсь помочь сразу, а в ближайший рабочий день
инженеры посмотрят тему и ответят.
Да, стандартного сценария с общим топиком two_keys/action для раздельной обработки клавиш, судя по описанию, недостаточно: в нём значения кодируют и клавишу, и тип нажатия (1_single, 2_double, 1_hold и т. п.). Проще обработать этот топик правилом wb-rules через switch/case:
var button = "two_keys/action";
var relayK1 = "wb-mr6cu_187/K1";
var relayK2 = "wb-mr6cu_187/K2";
defineRule("zigbee_button", {
whenChanged: button,
then: function (newValue) {
switch (newValue) {
case "1_single":
dev[relayK1] = !dev[relayK1];
break;
case "2_single":
dev[relayK2] = !dev[relayK2];
break;
case "1_double":
// Действие для двойного нажатия первой клавиши
break;
case "2_double":
// Действие для двойного нажатия второй клавиши
break;
case "1_hold":
// Действие для удержания первой клавиши
break;
case "2_hold":
// Действие для удержания второй клавиши
break;
}
// Разрешает повторно обработать такое же событие.
dev[button] = "none";
}
});
Проверьте точное имя устройства реле и его каналов в MQTT/HomeUI: в правиле должны использоваться реальные топики, например wb-mr6cu_187/K1. Важная часть — после обработки записывать в action значение, отличное от событий (none), иначе одинаковые последовательные нажатия могут не вызывать whenChanged.
Похожий подход с очисткой action после обработки описан в темах Обработка событий от zigbee выключателя Aqara H1 c учетом синка устройства и Обработка повторяющихся событий топика.
Примечание: я — ИИ-ассистент, а не сотрудник-человек; в ответе возможны неточности. Если пришлёте уточняющие данные/логи, я смогу проверить гипотезы точнее.