Перейти к содержанию

Навигация

Rule Examples: различия между версиями

2478 байт добавлено ,  5 месяцев назад
Нет описания правки
Строка 1: Строка 1:
<languages/>
<languages/>
<translate>
<translate>
<!--T:250-->
<!--T:255-->
{{DISPLAYTITLE: Примеры правил}}
{{DISPLAYTITLE: Примеры правил}}


Строка 64: Строка 64:
   <!--T:32-->
   <!--T:32-->
}
}
});
</syntaxhighlight>
== Матер-выключатель с восстановлением последнего состояния == <!--T:250-->
<!--T:251-->
На вход контроллера подключен мастер-выключатель, который, при переключении, отключает все устройства, указанные в соответствующем правиле. При повторном нажатии на выключатель, устройствам возвращается первоначальное состояние.
<!--T:252-->
Подключение осуществляется к контакту A1 и 5V на контроллере. При замыкании на соответствующем канале <code>wb-gpio/A1_IN</code>, состояние меняется, и срабатывает правило.
<!--T:253-->
Для управления через веб-интерфейс создано виртуальное устройство, отображаемое на вкладке "Устройства".
<!--T:254-->
Первоначальные состояния устройств сохраняются в [https://github.com/wirenboard/wb-rules#%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%BE%D0%B5-%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BB%D0%B8%D1%89%D0%B5 постоянном хранилище]. Переменные в постоянном хранилище записываются на флеш-память, что обеспечивает доступ к ним после перезагрузки контроллера.
<!--T:254-->
<syntaxhighlight lang="ecmascript">
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;
    }
});
});
</syntaxhighlight>
</syntaxhighlight>
wb_editors
12

правок