2482
правки
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
Строка 12: | Строка 12: | ||
== Структура правила == | == Структура правила == | ||
Правила бывают двух типов - непосредственно правила (начинаются со слов ''defineRule'') и виртуальные устройства (начинаются со слов ''defineVirtualDevice''). Виртуальные устройства - это появляющиеся в веб-интерфейсе новые "виртуальные" элементы управления - например, кнопка-выключатель, которая на самом деле выключает два устройства одновременно. | |||
Любое количество разных правил можно хранить в одном файле. Обычно в одном файле хранятся правила, отвечающие за одну функцию. | |||
Сначала разберём обычное правило: | |||
<syntaxhighlight lang="ecmascript"> | |||
defineRule("motion_detector", { //название правила - motion_detector | |||
whenChanged: "wb-gpio/D1_IN", //при изменении состояния канала 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> | |||
Список типов контролов (каналов устройств) в интерфейсе: https://github.com/contactless/homeui/blob/contactless/conventions.md | Список типов контролов (каналов устройств) в интерфейсе: https://github.com/contactless/homeui/blob/contactless/conventions.md |