Если нужно временно отключить одно из правил 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 + / ).
Или вам нужна логика включения какого-либо функционала в зависимости от каких-то условий?
Очень интересное решение. Спасибо.
Сейчас пока большой необходимости нету. Но в будущем если будет какая-то автоматика, которую нужно отключить, например когда нет никого дома и которую нельзя привязать к календарю и времени.
Что-то у меня в браузере после ctrl+a текст выделяется, а после Ctrl + Shift + / ничего не происходит. Это должно работать в интерфейсе WB веб интерфейсе в редакторе правил?
Спасибо.
Отличное решение. А как узнать какая версия у меня?
Если вы покупали контроллер в последние пару лет, то точно версия 2.х. А проверить можно так:
apt policy wb-rules
Верно.
После команды "Ctrl + Shift + / " должны закомментироваться или раскомментироваться все строки кода.
Всем большое спасибо.
Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.
