Временно отключить правило в wb-rules

Если нужно временно отключить одно из правил wb-rules как это правильно и быстро сделать?

Я бы делал так - подписывался на все что мне нужно, но внутри обработчика, смотрел бы глобальную переменную/переменные.
И я бы не относился к переменной как к выключению правила, скорее как режим работы - день, ночь, ушел из дома, дома. То есть это не выключения правило, а другое правило, которое в вашем примере ничего не делает.

var mode = 0; // Как-то меняется, в том месте где вы решаете, что нужно отключить правило

defineRule("test_whenChanged", { 
  whenChanged: ["wb-gpio/A1_OUT"],
  then: function (newValue, devName, cellName) {
    if (mode == 0)  {
       return;
    }
     dev["..."] = true;
  }
});

Пример с другой организацией - вместо глобальной переменной иметь глобалный набор функций, которые вызываются при срабатывания тригера.

var sceneNotAtHome = {
  "turnLight": function(newValue, devName, cellName) {
   },
};
var sceneAtHome = {
  "turnLight": function(newValue, devName, cellName) {
     dev["..."] = true;
   },
};

var mode = sceneAtHome;

defineRule("test_whenChanged", { 
  whenChanged: ["wb-gpio/A1_OUT"],
  then: function (newValue, devName, cellName) {
     var action = mode["turnLight"];
     if (action) {
       action(newValue, devName, cellName);
     }
  }
});

PS Код не проверял, смотреть просто как на идею

Добрый день.
Смотря какую цель преследуете. Если просто для отладки, то я бы выделил все правило (Ctrl + A), затем бы закомментировал (Ctrl + Shift + / ). Сохранил. Когда надо активировать, то выделил все правило (Ctrl + A), затем бы раскомментировал (Ctrl + Shift + / ).
Или вам нужна логика включения какого-либо функционала в зависимости от каких-то условий?

2 Likes

Очень интересное решение. Спасибо.

Сейчас пока большой необходимости нету. Но в будущем если будет какая-то автоматика, которую нужно отключить, например когда нет никого дома и которую нельзя привязать к календарю и времени.
Что-то у меня в браузере после ctrl+a текст выделяется, а после Ctrl + Shift + / ничего не происходит. Это должно работать в интерфейсе WB веб интерфейсе в редакторе правил?
Спасибо.

Отличное решение. А как узнать какая версия у меня?

Если вы покупали контроллер в последние пару лет, то точно версия 2.х. А проверить можно так:

apt policy wb-rules

Верно.

После команды "Ctrl + Shift + / " должны закомментироваться или раскомментироваться все строки кода.

Всем большое спасибо.

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.