7816
правок
Fizikdaos (обсуждение | вклад) |
Fizikdaos (обсуждение | вклад) |
||
Строка 2: | Строка 2: | ||
<translate> | <translate> | ||
{{DISPLAYTITLE: Как писать правила}} | {{DISPLAYTITLE: Как писать правила}} | ||
== Пишем первое правило == <!--T:5--> | |||
<!--T:6--> | |||
[[File:Web-scripts-rule1.png|400px|thumb|Правило для управления обогревателем, записанное через веб-интерфейс]] | |||
=== Первое правило === <!--T:9--> | |||
<!--T:10--> | |||
Для начала разберём простое правило "при превышении температуры - выключи обогреватель". Температуру получаем с датчика [[Special:MyLanguage/1-Wire|1-Wire]], обогреватель подключён к Реле 1 внешнего релейного модуля [[Special:MyLanguage/WB-MRM2|WB-MRM2]]. | |||
<syntaxhighlight lang="ecmascript"> | |||
<!--T:11--> | |||
defineRule("heater_control", { //название правила - "контроль обогревателя", может быть произвольным | |||
whenChanged: "wb-w1/28-0115a48fcfff", //при изменении состояния датчика 1-Wire с идентификатором 28-0115a48fcfff | |||
then: function (newValue, devName, cellName) { //выполняй следующие действия | |||
if ( newValue > 30) { //если температура датчика больше 30 градусов | |||
dev["wb-mrm2_130"]["Relay 1"] = false; //установи Реле 1 модуля WB-MRM2 с адресом 130 в состояние "выключено" | |||
} else { | |||
dev["wb-mrm2_130"]["Relay 1"] = true; //установи Реле 1 модуля WB-MRM2 с адресом 130 в состояние "включено" | |||
} | |||
} | |||
}); | |||
<!--T:12--> | |||
</syntaxhighlight> | |||
*Первая строка - кодовое слово ''defineRule'' и название правила | |||
*Вторая строка - кодовое слово для определения, когда выполняется правило, - ''whenChanged'' - "при изменении параметра", далее название параметра, при изменении которого запустится правило - температура с датчика 1-Wire. Название параметра записывается в виде "Device/Control", где названия ''Device'' и ''Control'' для каждого параметра можно найти на странице ''Settings'' веб-интерфейса, в таблице ''MQTT Channels''. | |||
*Третья строка - начало функции, которая будет исполняться | |||
*Затем идёт условие - "если значение температуры больше порогового, то ...". Значение параметра записывается в виде ''dev[Device][Control]'' - заметьте, оно отличается от вида записи параметра, при изменении которого запускается правило, потому что там речь идёт о ''параметре'', а здесь - о ''значении'' того же параметра. | |||
*Затем мы выставляем значения для реле в каждом случае - ''false'' - "выключено", ''true'' - "включено". Названия ''Device'' и ''Control'' для реле смотрим всё в той же таблице ''MQTT Channels'', на странице ''Settings'' веб-интерфейса. | |||
== Типы правил defineRule == | == Типы правил defineRule == |