Вопрос по правилу из примера Мастер-выключатель с восстановлением последнего состояния)

Здравствуйте!
Привожу здесь правило для удобного просмотра:

defineVirtualDevice("power_off", {
    title: "Мастер-выключатель",
    cells: {
        power_off: {
            type: "pushbutton"
        },
    }
});

var ps = new PersistentStorage("power-storage", { global: true });
var lights = ["wb-mdm3_50/K1", "wb-mdm3_50/K2", "wb-mdm3_50/K3"];

var isPowerOff = true;

defineRule({
    whenChanged: ["wb-gpio/A1_IN", "power_off/power_off"],
    then: function (newValue, devName, cellName) {
        if (isPowerOff) {
            lights.forEach(function (light) {
                ps[light] = dev[light];
                dev[light] = false;
            });
        } else {
            lights.forEach(function (light) {
                dev[light] = ps[light];
            });
        }
        isPowerOff = !isPowerOff;
    }
}); 

Прокомментируйте, пожалуйста, несколько моментов…

  1. Почему мы ориентируемся на переменную
    var isPowerOff = true;
    а не на вход выключателя “wb-gpio/A1_IN”?
    Ведь можно так:
    if (dev[“wb-gpio/A1_IN”] ==true)
  2. Почему правило
    defineRule({
    не имеет названия?
  3. почему не указываем явно в правиле?
else
{
                dev[light] = true;
}

Спасибо!

Добрый день.

Зависит от того, какой выключатель вы используете, если с фиксацией, то можно скорректировать правило.

Можете дать название, но какой в этом смысл, если мы к нему не планируем обращаться?

Потому что задача для этого правила была восстановить состояние выходов в том же виде, что и до нажатия на мастер-выключатель.

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

1 лайк

Спасибо!