Rule Examples: различия между версиями
Matveevrj (обсуждение | вклад) |
|||
Строка 1: | Строка 1: | ||
<languages/> | <languages/> | ||
<translate> | <translate> | ||
<!--T: | <!--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> |