3690
правок
Строка 5: | Строка 5: | ||
== Примеры == | == Примеры == | ||
=== Слежение за контролом === | |||
Это простейшее правило "следит" за контролом и устанавливает другой контрол в такое же состояние. | |||
Например правило может включать сирену и лампу, если датчик движения заметил движение. | |||
В примере датчик движения подключен к входу "сухой контакт", контрол типа "switch". Сирена подключена к встроеному реле Wiren Board, а лампа - через релейный блок по Modbus. Когда вход типа "сухой контакт" (выход датчика движения) замкнут, то на лампу и реле подаётся "1", когда выключен - "0". | |||
Правило срабатывает каждый раз при изменении значения контрола "D1_IN" у устройства "wb-gpio". В код правила передаётся новое значение этого контрола в виде переменной newValue. | |||
<syntaxhighlight lang="ecmascript"> | |||
defineRule("motion_detector", { | |||
whenChanged: "wb-gpio/D1_IN", | |||
then: function (newValue, devName, cellName) { | |||
dev["wb-gpio"]["Relay_2"] = newValue; | |||
dev["wb-mrm2_6"]["Relay 1"] = newValue; | |||
} | |||
}); | |||
</syntaxhighlight> | |||
То же самое, но с виртуальным девайсом в качестве источника событий. Пример использования: сценарная кнопка, которая включает/выключает сирену и лампочку. | |||
<syntaxhighlight lang="ecmascript"> | |||
defineVirtualDevice("simple_test", { | |||
title: "Simple switch", | |||
cells: { | |||
enabled: { | |||
type: "switch", | |||
value: false | |||
}, | |||
} | |||
}); | |||
defineRule("simple_switch", { | |||
whenChanged: "simple_test/enabled", | |||
then: function (newValue, devName, cellName) { | |||
dev["wb-gpio"]["Relay_2"] = newValue; | |||
dev["wb-mrm2_6"]["Relay 1"] = newValue; | |||
} | |||
}); | |||
</syntaxhighlight> | |||
=== Системные правила === | === Системные правила === | ||
Некторые правила поставляются с системой правил по-умолчанию в пакете wb-rules-system. | Некторые правила поставляются с системой правил по-умолчанию в пакете wb-rules-system. |