Движок правил wb-rules: различия между версиями

Нет описания правки
Строка 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.