Zigbee и зацикливание

Коллеги, добрый день! Помогите пожалуйста решить проблему. Подключаю к вайрену zigbee-выключатели. Все работает норм, пока не начинаю писать в виртуальном устройстве свичи для управления. Как только свичи работают - если многократно подергать свич или сам выключатель - происходит зацикливание и свет моргает.
Привожу код свичей.

 defineRule("whenChanged VirtLight  {}".format(id), {
            whenChanged: virtLight, // топик, при изменении которого сработает правило
              then: function (newValue, devName, cellName) {
               log(newValue)
                log(cellName)
                if(newValue)
                {
                switch(cellName)
                {
                  case "kor_Light":
                   publish("zigbee2mqtt/Aquara_D1_Triple/set", JSON.stringify({state_center: "On"}), 2, false)
                     break;
                    case "zal_light":
                     publish("zigbee2mqtt/Aquara_D1_Triple/set", JSON.stringify({state_left: "On"}), 2, false)
                     break;
                    case "ulica_light":
                     publish("zigbee2mqtt/Aquara_D1_Triple/set", JSON.stringify({state_right: "On"}), 2, false)
                    break;
                    case "tualet_light":
                   zigbeePub("zigbee2mqtt/Aquara_Once/set","On")
                    publish("zigbee2mqtt/Aquara_Once/set", JSON.stringify({ state: "On"}), 2, false); 
                    break;
                }
                
                }
                 else
                {
             switch(cellName)
                {
                case "kor_Light":
                 publish("zigbee2mqtt/Aquara_D1_Triple/set", JSON.stringify({state_center: "Off"}), 2, false)
                   break;
                 case "zal_light":
                  publish("zigbee2mqtt/Aquara_D1_Triple/set", JSON.stringify({state_left: "Off"}), 2, false)
                    break;
                    case "ulica_light":
                    publish("zigbee2mqtt/Aquara_D1_Triple/set", JSON.stringify({state_right: "Off"}), 2, false)
                   break;
                    case "tualet_light":
                   publish("zigbee2mqtt/Aquara_Once/set", JSON.stringify({ state: "Off"}), 2, false); 
                  
                    break;
                }
            
                }
              } 
          });
 

Добрый день.
В не меняется ли состояние virtLight каким-либо образом, косвенно, из правила?

virtLight - это сами свичи из виртуального устройства.
Взаимодействие с ними такое:

defineRule("whenChanged ButtonLight  {}".format(id), {
            whenChanged: buttonLight, // топик, при изменении которого сработает правило
              then: function (newValue, devName, cellName) {
              
            if(newValue=="ON")
            {
                getDevice("office_rule").getControl("{}".format(virtLight).split("/")[1]).setValue(true);   
            }   
                if(newValue=="OFF"){
                   getDevice("office_rule").getControl("{}".format(virtLight).split("/")[1]).setValue(false); 
                }
              } 
          });

Когда зиг-би устройство в состоянии On- свич - On, Если Off то Off. Свичи следуют за состоянием
Но и обратно - через свичи тоже нужно управлять. Иными словами привязать свичи к зиг -би кнопкам

Ну, логично, меняем в правиле состояние контрола, на которое опять же срабатывает правило. Получаем цикл.

А как обыграть эту ситуацию? Чтобы свич ходил за зиг -би и в то же время с виртуального устройства можно было бы управлять?

Теоретически - можно использовать отключение правила когда при изменении контрола выполнение не требуется.
Но - я бы разделил, текущее состояние выводил с помощью readonly контролов.

Если разделить-получится, что на один светильник будет 2 контрола=2 элемента управления?

Нет, один контрол - redonly, статус. А второй - для управления. Но на самом деле - я не знаю какой вариант будет удобен вам.