Движок правил wb-rules: различия между версиями
Fizikdaos (обсуждение | вклад) |
|||
Строка 5: | Строка 5: | ||
== Примеры == | == Примеры == | ||
=== Системные правила === | |||
Некторые правила поставляются с системой правил по-умолчанию в пакете wb-rules-system. | |||
Полный список правил [https://github.com/contactless/wirenboard/tree/master/system_rules/rules в репозитории]. | |||
Некоторые примеры: | |||
==== Правило для пищалки ==== | |||
[https://github.com/contactless/wirenboard/blob/master/system_rules/rules/buzzer.js Правило] создаёт виртуальное устройство buzzer с ползунками для регулировки громкости и частоты, а также кнопкой включения звука. | |||
<pre> | |||
defineVirtualDevice("buzzer", { | |||
title: "Buzzer", // | |||
cells: { | |||
frequency : { | |||
type : "range", | |||
value : 3000, | |||
max : 7000, | |||
}, | |||
volume : { | |||
type : "range", | |||
value : 10, | |||
max : 100, | |||
}, | |||
enabled : { | |||
type : "switch", | |||
value : false, | |||
}, | |||
} | |||
}); | |||
// setup pwm2 | |||
runShellCommand("echo 2 > /sys/class/pwm/pwmchip0/export"); | |||
function _buzzer_set_params() { | |||
var period = parseInt(1.0 / dev.buzzer.frequency * 1E9); | |||
var duty_cycle = parseInt(dev.buzzer.volume * 1.0 / 100 * period * 0.5); | |||
runShellCommand("echo " + period + " > /sys/class/pwm/pwmchip0/pwm2/period"); | |||
runShellCommand("echo " + duty_cycle + " > /sys/class/pwm/pwmchip0/pwm2/duty_cycle"); | |||
}; | |||
defineRule("_system_buzzer_params", { | |||
whenChanged: [ | |||
"buzzer/frequency", | |||
"buzzer/volume", | |||
], | |||
then: function (newValue, devName, cellName) { | |||
if ( dev.buzzer.enabled) { | |||
_buzzer_set_params(); | |||
} | |||
} | |||
}); | |||
defineRule("_system_buzzer_onof", { | |||
whenChanged: "buzzer/enabled", | |||
then: function (newValue, devName, cellName) { | |||
if ( dev.buzzer.enabled) { | |||
_buzzer_set_params(); | |||
runShellCommand("echo 1 > /sys/class/pwm/pwmchip0/pwm2/enable"); | |||
} else { | |||
runShellCommand("echo 0 > /sys/class/pwm/pwmchip0/pwm2/enable"); | |||
} | |||
} | |||
}); | |||
</pre> | |||
=== Отправка команд по RS-485 === | === Отправка команд по RS-485 === | ||