Обработка событий от zigbee выключателя Aqara H1 c учетом синка устройства

Это делается намного проще:

defineRule("ZB_BUTTON_rule", {
  whenChanged: "ZB_BUTTON/action",
  then: function (newValue, devName, cellName) {
    if (dev["ZB_BUTTON/action"] == "hold") {
      dev["night_mode/night"] = !dev["night_mode/night"];
    }    
    if (dev["ZB_BUTTON/action"] == "single") {
      publish("zigbee2mqtt/ZB_SWITCH_ZAL/set", JSON.stringify({state: "TOGGLE" }));
    }    
    dev["ZB_BUTTON/action"] = "none";
   }
});

Можете и через switch/case сделать. Тут дело удобства.
Как только обработали action, пишем в него что угодно, кроме того, что обрабатываем.
И всё…

1 лайк