Обработка нажатий Zigbee кнопки и интеграция ее в Яндекс Алису

Добрый день!

Возникла проблема по интеграции Zigbee кнопки Aqara в Яндекс Алису.

Соответственно используем свойство event и три топика чтобы отдавать значения.
Обработал все возможные “не нужные” события которые могут приходит от Zigbee кнопки
и вспомогательных контролов.
Все ОК, кроме одного момента:
при перезагрузке скрипта в УДЯ в устройстве все равно “всплывает” предпоследнее событие,
хотя в отладке скрипта ничего не наблюдается.

defineVirtualDevice("Alice_additions", {
  title: "Alice additional Virtual devices",
  cells: {
    "separator1": {
      title: "========== Aqara_remote Action_converter",
      type: "text",
      value: "==========",
      order: 1
    },
    "Aqara_remote_13_action_click": {
      type: "text",
      value: "",
      lazyInit: true,
      order: 2
    },
    "Aqara_remote_13_action_double_click": {
      type: "text",
      value: "",
      lazyInit: true,
      order: 3
    },
    "Aqara_remote_13_action_long_press": {
      type: "text",
      value: "",
      lazyInit: true,
      order: 4
    }
  }
});



// ============================================================
// СКРИПТ ПЕРЕЗАГРУЖЕН
// ============================================================
log("=== СКРИПТ ПЕРЕЗАГРУЖЕН: " + new Date().toISOString() + " ===");

// ============================================================
// ОТСЛЕЖИВАНИЕ ИЗМЕНЕНИЙ ПОЛЕЙ Aqara_remote_13 (ВСЕ СООБЩЕНИЯ)
// ============================================================
log("[TRACK] Подписка на Aqara_remote_13_action_click");
trackMqtt("/devices/Alice_additions/controls/Aqara_remote_13_action_click", function(msg) {
  log("[FULL] Aqara_remote_13_action_click:");
  log("  Полный msg: " + JSON.stringify(msg));
  log("  msg.value: " + msg.value);
  log("  Тип msg.value: " + typeof msg.value);
  log("  Время: " + new Date().toISOString());
});

log("[TRACK] Подписка на Aqara_remote_13_action_double_click");
trackMqtt("/devices/Alice_additions/controls/Aqara_remote_13_action_double_click", function(msg) {
  log("[FULL] Aqara_remote_13_action_double_click:");
  log("  Полный msg: " + JSON.stringify(msg));
  log("  msg.value: " + msg.value);
  log("  Тип msg.value: " + typeof msg.value);
  log("  Время: " + new Date().toISOString());
});

log("[TRACK] Подписка на Aqara_remote_13_action_long_press");
trackMqtt("/devices/Alice_additions/controls/Aqara_remote_13_action_long_press", function(msg) {
  log("[FULL] Aqara_remote_13_action_long_press:");
  log("  Полный msg: " + JSON.stringify(msg));
  log("  msg.value: " + msg.value);
  log("  Тип msg.value: " + typeof msg.value);
  log("  Время: " + new Date().toISOString());
});

// ============================================================
// ОСНОВНОЙ ОБРАБОТЧИК НАЖАТИЙ КНОПКИ Aqara_remote_13
// ============================================================
var noReactionFirst_Aqara_remote_13_Message = true;

// Флаги инициализации для каждого контрола
var initFlags = {
  click: false,
  double_click: false,
  long_press: false
};

trackMqtt("/devices/Aqara_remote_13/controls/action", function (newValue) {
  // Игнорируем первое сообщение от кнопки при старте
  if (noReactionFirst_Aqara_remote_13_Message) {
    log("[IGNORE] Первое сообщение от Aqara_remote_13, игнорируем");
    noReactionFirst_Aqara_remote_13_Message = false;
    return;
  }
  
  var fullPath = null;
  var fieldValue = null;
  var flagKey = null;
  
  if (newValue.value === "single") {
    fullPath = "Alice_additions/Aqara_remote_13_action_click";
    fieldValue = "click";
    flagKey = "click";
  } else if (newValue.value === "double") {
    fullPath = "Alice_additions/Aqara_remote_13_action_double_click";
    fieldValue = "double_click";
    flagKey = "double_click";
  } else if (newValue.value === "hold") {
    fullPath = "Alice_additions/Aqara_remote_13_action_long_press";
    fieldValue = "long_press";
    flagKey = "long_press";
  } else {
    log("[UNKNOWN] Неизвестное значение: " + newValue.value);
    return;
  }
  
  // Если контрол ещё не создавался — создаём и игнорируем дубль
  if (!initFlags[flagKey]) {
    log("[INIT] " + fullPath + ": первое создание (дубль будет игнорироваться)");
    dev[fullPath] = fieldValue;
    initFlags[flagKey] = true;
    return;
  }
  
  // Контрол уже существует — обновляем значение
  log("[CHANGE] " + fullPath + ": " + fieldValue);
  dev[fullPath] = fieldValue;
});

соответственно добавлено lazyInit: false, чтобы избежать отправки сообщений в MQTT при перезагрузке скрипта

где-то есть какая-то особенность обработки сообщений … или в движке правил, или в интеграции с Алисой, и баг все-таки …
подскажите пожалуйста в чем может быть проблема

даже в принципе для проверки достаточно и такого варианта

var noReactionFirst_Master_button_Message = true;
trackMqtt("/devices/wb-gpio/controls/W1_IN", function (newValue) {
  if (noReactionFirst_Master_button_Message) {
    noReactionFirst_Master_button_Message = false;
    return;
  }
  if (newValue.value === "1") {
    dev["Alice_additions/Master_button_action_click"] = "click";
  } else if (newValue.value === "0") {
    dev["Alice_additions/Master_button_action_long_press"] = "long_press";
  }
});
Thinking

Search uploaded documents
Found 5 uploaded document excerpts for ‘wb-rules trackMqtt initial message dev value event restart duplicate’

Search uploaded documents
Found 5 uploaded document excerpts for ‘wb-rules retain device control event retain true initial value restore’

Здравствуйте! Я — автоматический помощник техподдержки Wiren Board.
Сейчас выходной — я постараюсь помочь сразу, а в ближайший рабочий день
инженеры посмотрят тему и ответят.

Похоже, у вас не ошибка Zigbee-кнопки, а восстановление прошлого значения в wb-rules / виртуальном устройстве: в базе есть описание, что первоначальные состояния устройств могут сохраняться в постоянном хранилище и восстанавливаться при загрузке сценария, а для случая, когда при перезагрузке нужно всегда получать строго заданное значение, можно использовать forceDefault в описании контрола.

Что можно проверить:

  1. Посмотреть, не включено ли у этих event-контролов сохранение/восстановление состояния при старте.
  2. Для event-свойств задать поведение так, чтобы на старте они не поднимали предыдущее значение, а получали пустое/дефолтное.
  3. Если проблема именно после перезапуска скрипта, а не после нажатия кнопки, это дополнительно похоже на восстановление значения из хранилища, а не на новый MQTT-событие от Aqara.
  4. В логах wb-rules посмотреть, что происходит в момент старта:
journalctl -u wb-rules -n 200 --no-pager

Если хотите, я могу помочь переделать ваш defineVirtualDevice, чтобы event-поля не всплывали после перезагрузки. Для этого пришлите, пожалуйста:

  • версию wb-rules / релиз контроллера,
  • как именно вы отправляете событие в УДЯ,
  • и нужен ли вам вариант с forceDefault или без сохранения состояния.

Примечание: я — ИИ, а не человек; в моих ответах возможны неточности.
Инженеры посмотрят тему в ближайший рабочий день. Если хотите ускорить —
приложите диагностические данные.

Добрый день!

Это не ошибка Zigbee-кнопки и не баг движка правил, а штатное поведение виртуального устройства: если у контрола не задан forceDefault, при перезагрузке скрипта он восстанавливает последнее сохранённое значение. Это значение к тому же хранится в MQTT как retained-сообщение, поэтому Яндекс при старте считывает его как «новое» событие — хотя в отладке скрипта ничего не происходит, ведь нового нажатия не было.

Что предлагаю сделать:

  1. Добавить в описание каждого event-контрола forceDefault: true — тогда при перезагрузке скрипт будет ставить пустое дефолтное значение, а не поднимать предыдущее (см. документацию по wb-rules: forceDefault).

  2. Один раз очистить уже залежавшиеся retained-топики этого устройства командой на контроллере: mqtt-delete-retained '/devices/Alice_additions/#', затем перезапустить скрипт.

Приложу ссылку на описание правил: GitHub - wirenboard/wb-rules: Rule engine for Wiren Board · GitHub

Спасибо за информацию, попробую с `forceDefault: true, описание работы движка читал, знаю, но что-то не возникло мысли попробовать использовать forceDefault: true

Добрый день!

Проверил Вашу информацию, к сожалению все не так просто и однозначно …

даже с forceDefault: true и lazyInit: true при перезагрузке в mqtt “прилетают” пустые значения,
что воспринимается Интеграцией как событие и соответственно обрабатывается.

вот правило для проверки отладки

defineVirtualDevice("Alice_additions", {
  title: "Alice additional Virtual devices",
  cells: {
    "separator2": {
      title: "========== Master_button Action_converter",
      type: "text",
      value: "==========",
      order: 3
    },
    "Master_button_action_click": {
      type: "text",
      value: "",
      forceDefault: true,
      lazyInit: true,
      order: 4
    },
    "Master_button_action_long_press": {
      type: "text",
      value: "",
      forceDefault: true,
      lazyInit: true,
      order: 5
    }
  }
});

// ============================================================
// СКРИПТ ПЕРЕЗАГРУЖЕН
// ============================================================
log("=== СКРИПТ ПЕРЕЗАГРУЖЕН: " + new Date().toISOString() + " ===");

// ============================================================
// ОТСЛЕЖИВАНИЕ ИЗМЕНЕНИЙ ПОЛЕЙ
// ============================================================
log("[TRACK] Подписка на Master_button_action_click");
trackMqtt("/devices/Alice_additions/controls/Master_button_action_click", function(msg) {
  log("[FULL] Aqara_remote_13_action_click:");
  log("  Полный msg: " + JSON.stringify(msg));
  log("  msg.value: " + msg.value);
  log("  Тип msg.value: " + typeof msg.value);
  log("  Время: " + new Date().toISOString());
});

log("[TRACK] Подписка на Master_button_action_long_press");
trackMqtt("/devices/Alice_additions/controls/Master_button_action_long_press", function(msg) {
  log("[FULL] Master_button_action_long_press:");
  log("  Полный msg: " + JSON.stringify(msg));
  log("  msg.value: " + msg.value);
  log("  Тип msg.value: " + typeof msg.value);
  log("  Время: " + new Date().toISOString());
});


var noReactionFirst_Master_button_Message = true;
trackMqtt("/devices/wb-gpio/controls/W1_IN", function (msg) {
  if (noReactionFirst_Master_button_Message) {
    noReactionFirst_Master_button_Message = false;
    return;
  }
  if (msg.value === "1") {
    dev["Alice_additions/Master_button_action_click"] = "click" ;
  } else if (msg.value === "0") {
    dev["Alice_additions/Master_button_action_long_press"] = "long_press";
  }
});


Что делаем:
сохраняем скрипт
wb-gpio//W1_IN - выключаем
wb-gpio//W1_IN - включаем
wb-gpio//W1_IN - выключаем
wb-gpio//W1_IN - включаем
сохраняем скрипт

Вот логи:

2026-06-22 21:25:11
=== СКРИПТ ПЕРЕЗАГРУЖЕН: 2026-06-22T18:25:12.047Z ===
2026-06-22 21:25:11
[TRACK] Подписка на Master_button_action_click
2026-06-22 21:25:11
[TRACK] Подписка на Master_button_action_long_press
2026-06-22 21:25:26
[FULL] Master_button_action_long_press:
2026-06-22 21:25:26
Полный msg: {"topic":"/devices/Alice_additions/controls/Master_button_action_long_press","value":"long_press"}
2026-06-22 21:25:26
msg.value: long_press
2026-06-22 21:25:26
Тип msg.value: string
2026-06-22 21:25:26
Время: 2026-06-22T18:25:27.786Z
2026-06-22 21:25:26
[FULL] Master_button_action_long_press:
2026-06-22 21:25:26
Полный msg: {"topic":"/devices/Alice_additions/controls/Master_button_action_long_press","value":"long_press"}
2026-06-22 21:25:26
msg.value: long_press
2026-06-22 21:25:26
Тип msg.value: string
2026-06-22 21:25:26
Время: 2026-06-22T18:25:27.804Z
2026-06-22 21:25:30
[FULL] Aqara_remote_13_action_click:
2026-06-22 21:25:30
Полный msg: {"topic":"/devices/Alice_additions/controls/Master_button_action_click","value":"click"}
2026-06-22 21:25:30
msg.value: click
2026-06-22 21:25:30
Тип msg.value: string
2026-06-22 21:25:30
Время: 2026-06-22T18:25:31.380Z
2026-06-22 21:25:30
[FULL] Aqara_remote_13_action_click:
2026-06-22 21:25:30
Полный msg: {"topic":"/devices/Alice_additions/controls/Master_button_action_click","value":"click"}
2026-06-22 21:25:30
msg.value: click
2026-06-22 21:25:30
Тип msg.value: string
2026-06-22 21:25:30
Время: 2026-06-22T18:25:31.389Z
2026-06-22 21:25:33
[FULL] Master_button_action_long_press:
2026-06-22 21:25:34
Полный msg: {"topic":"/devices/Alice_additions/controls/Master_button_action_long_press","value":"long_press"}
2026-06-22 21:25:34
msg.value: long_press
2026-06-22 21:25:34
Тип msg.value: string
2026-06-22 21:25:34
Время: 2026-06-22T18:25:34.862Z
2026-06-22 21:25:36
[FULL] Aqara_remote_13_action_click:
2026-06-22 21:25:36
Полный msg: {"topic":"/devices/Alice_additions/controls/Master_button_action_click","value":"click"}
2026-06-22 21:25:36
msg.value: click
2026-06-22 21:25:36
Тип msg.value: string
2026-06-22 21:25:36
Время: 2026-06-22T18:25:37.625Z
2026-06-22 21:25:42
=== СКРИПТ ПЕРЕЗАГРУЖЕН: 2026-06-22T18:25:42.859Z ===
2026-06-22 21:25:42
[TRACK] Подписка на Master_button_action_click
2026-06-22 21:25:42
[TRACK] Подписка на Master_button_action_long_press

вроде не видим ничего после второго сохранения скрипта
но если посмотреть что происходит в mqtt, например через подписку на топики например в NodeRED, то фактически увидим:
22.06.2026, 21:25:26node: debug 2/devices/Alice_additions/controls/Master_button_action_long_press : msg.payload : string[10]

“long_press”

22.06.2026, 21:25:27node: debug 2/devices/Alice_additions/controls/Master_button_action_long_press : msg.payload : string[10]

“long_press”

22.06.2026, 21:25:30node: debug 1/devices/Alice_additions/controls/Master_button_action_click : msg.payload : string[5]

“click”

22.06.2026, 21:25:31node: debug 1/devices/Alice_additions/controls/Master_button_action_click : msg.payload : string[5]

“click”

22.06.2026, 21:25:34node: debug 2/devices/Alice_additions/controls/Master_button_action_long_press : msg.payload : string[10]

“long_press”

22.06.2026, 21:25:36node: debug 1/devices/Alice_additions/controls/Master_button_action_click : msg.payload : string[5]

“click”

22.06.2026, 21:25:41node: debug 2/devices/Alice_additions/controls/Master_button_action_long_press : msg.payload : string[0]

“”

22.06.2026, 21:25:42node: debug 1/devices/Alice_additions/controls/Master_button_action_click : msg.payload : string[0]

“”

что пришли пустые значения после второй перезагрузке скрипта ,

аналогично можно увидеть и в mosquitto_sub
mosquitto_sub -t “/devices/Alice_additions/controls/+” -v | ts “%Y-%m-%d %H:%M:%S.%3N”

2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_T&H_sensors (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/IKEA_remotes (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/separator4 (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_M&I_D&W_sensors (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_mmHg (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_curtain_controllers (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_double_click (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_remotes (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Switch_controller_status (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/separator2 (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_hPa (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_click (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/separator1 (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/separator3 (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/separator5 (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_M&I_D&W_sensors 100
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_hPa 1015.1
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_mmHg 761.4
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_T&H_sensors 100
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/Aqara_curtain_controllers 100
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_click click
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_double_click double_click
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/Aqara_remotes 100
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/IKEA_remotes 100
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/Switch_controller_status 0
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/separator1 ==========
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/separator2 ==========
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/separator3 ==========
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/separator4 ==========
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/separator5 ==========
2026-06-22 21:25:25.%3N /devices/Alice_additions/controls/Aqara_M&I_D&W_sensors 100
2026-06-22 21:25:27.%3N /devices/Alice_additions/controls/Master_button_action_long_press long_press
2026-06-22 21:25:27.%3N /devices/Alice_additions/controls/Master_button_action_long_press long_press
2026-06-22 21:25:31.%3N /devices/Alice_additions/controls/Master_button_action_click click
2026-06-22 21:25:31.%3N /devices/Alice_additions/controls/Master_button_action_click click
2026-06-22 21:25:34.%3N /devices/Alice_additions/controls/Master_button_action_long_press long_press
2026-06-22 21:25:37.%3N /devices/Alice_additions/controls/Master_button_action_click click
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_remotes (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/IKEA_remotes (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/separator1 (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_T&H_sensors (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_click (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/separator3 (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_hPa (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_curtain_controllers (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_double_click (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Master_button_action_long_press (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_M&I_D&W_sensors (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_mmHg (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Master_button_action_click (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/separator5 (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Switch_controller_status (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/separator2 (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/separator4 (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_M&I_D&W_sensors 100
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_hPa 1015.1
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_mmHg 761.4
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_T&H_sensors 100
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_curtain_controllers 100
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_click click
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_double_click double_click
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_remotes 100
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/IKEA_remotes 100
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Switch_controller_status 0
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/separator1 ==========
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/separator2 ==========
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/separator3 ==========
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/separator4 ==========
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/separator5 ==========
2026-06-22 21:26:55.%3N /devices/Alice_additions/controls/Aqara_M&I_D&W_sensors 100
2026-06-22 21:27:15.%3N /devices/Alice_additions/controls/Aqara_remotes 100
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_T&H_sensors (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/IKEA_remotes (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/separator4 (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_M&I_D&W_sensors (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_mmHg (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_curtain_controllers (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_double_click (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_remotes (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Switch_controller_status (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/separator2 (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_hPa (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_click (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/separator1 (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/separator3 (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/separator5 (null)
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_M&I_D&W_sensors 100
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_hPa 1015.1
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_mmHg 761.4
2026-06-22 21:25:11.%3N /devices/Alice_additions/controls/Aqara_T&H_sensors 100
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/Aqara_curtain_controllers 100
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_click click
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_double_click double_click
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/Aqara_remotes 100
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/IKEA_remotes 100
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/Switch_controller_status 0
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/separator1 ==========
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/separator2 ==========
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/separator3 ==========
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/separator4 ==========
2026-06-22 21:25:12.%3N /devices/Alice_additions/controls/separator5 ==========
2026-06-22 21:25:25.%3N /devices/Alice_additions/controls/Aqara_M&I_D&W_sensors 100
2026-06-22 21:25:27.%3N /devices/Alice_additions/controls/Master_button_action_long_press long_press
2026-06-22 21:25:27.%3N /devices/Alice_additions/controls/Master_button_action_long_press long_press
2026-06-22 21:25:31.%3N /devices/Alice_additions/controls/Master_button_action_click click
2026-06-22 21:25:31.%3N /devices/Alice_additions/controls/Master_button_action_click click
2026-06-22 21:25:34.%3N /devices/Alice_additions/controls/Master_button_action_long_press long_press
2026-06-22 21:25:37.%3N /devices/Alice_additions/controls/Master_button_action_click click
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_remotes (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/IKEA_remotes (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/separator1 (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_T&H_sensors (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_click (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/separator3 (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_T&H_sensor_1_pressure_hPa (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_curtain_controllers (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Aqara_remote_15_action_double_click (null)
2026-06-22 21:25:42.%3N /devices/Alice_additions/controls/Master_button_action_long_press (null)

Итого: возможно можно (нужно) поправить логику в Интеграции не обрабатывать пустые события для свойства button, или обрабатывать конкретные значения, или в идеале иметь возможность их указывать …

Этот null - следствие создания самого топика. То есть топик (только что) создан но в него ничего не опубликовано - значит null. Да, пожалуй надо его фильтровать.

Добрый день!

Ваше наблюдение я зафиксировал для разработчиков как предложение по доработке интеграции (фильтрация пустых и значений null для свойств типа button). Благодарю за подробное исследование.

Благодарю за обратную связь, последний момент еще хочется уточнить.
В идеале нужно иметь возможность указывать значение топика для для обработки события. Тогда даже никаких доп правил для обработки (в том числе как в моем случае для кнопки zigbee) не придется изобретать

Да, вы ранее указали “сделать возможность задавать набор валидных значений.” - это указал.

Отлично, тогда ждем обратную связь от программистов

Оно уже есть, умение “Mode” например.

Так его нет ещё в stable

Да, нету. Будет, скорее, к августу.