Движок правил wb-rules: различия между версиями
Treissler (обсуждение | вклад) м (Пользовательские поля в интерфейсе) |
(Подготовка страницы к переводу) |
||
Строка 1: | Строка 1: | ||
<languages/> | |||
<translate> | |||
[[File:Wb rules demo.png|400px|thumb|right|Редактирование правил в веб-интерфейсе]] | [[File:Wb rules demo.png|400px|thumb|right|Редактирование правил в веб-интерфейсе]] | ||
Для контроллера можно писать правила, например: "Если температура датчика меньше 18°С, включи нагреватель". Правила создаются через [[Веб-интерфейс Wiren Board|веб-интерфейс]] и пишутся на простом языке, похожем на Javascript. | Для контроллера можно писать правила, например: "Если температура датчика меньше 18°С, включи нагреватель". Правила создаются через [[Special:MyLanguage/Веб-интерфейс Wiren Board|веб-интерфейс]] и пишутся на простом языке, похожем на Javascript. | ||
Самое полное описание движка правил: https://github.com/contactless/wb-rules | Самое полное описание движка правил: https://github.com/contactless/wb-rules | ||
== Как создавать и редактировать правила == | == Как создавать и редактировать правила == | ||
*Список файлов с правилами находится на странице ''Scripts'' веб-интерфейса. | *Список файлов с правилами находится на странице ''Scripts'' веб-интерфейса. | ||
*Нажмите на название файла, чтобы открыть его для редактирования. | *Нажмите на название файла, чтобы открыть его для редактирования. | ||
Строка 10: | Строка 14: | ||
*Правило начинает работать автоматически после нажатия кнопки ''Save'', если в нём нет ошибок (смотрите ниже). | *Правило начинает работать автоматически после нажатия кнопки ''Save'', если в нём нет ошибок (смотрите ниже). | ||
Примечания: | Примечания: | ||
#Файлы с правилами хранятся на контроллере в виде обычных текстовых файлов в папке <code>/etc/wb-rules/</code>, поэтому [[Просмотр файлов контроллера с компьютера|их можно редактировать и загружать напрямую с компьютера]]. | #Файлы с правилами хранятся на контроллере в виде обычных текстовых файлов в папке <code>/etc/wb-rules/</code>, поэтому [[Special:MyLanguage/Просмотр файлов контроллера с компьютера|их можно редактировать и загружать напрямую с компьютера]]. | ||
#Правила исполняются сервисом ''wb-rules'', документацию по нему смотрите [https://github.com/contactless/wb-rules странице сервиса в Github]. | #Правила исполняются сервисом ''wb-rules'', документацию по нему смотрите [https://github.com/contactless/wb-rules странице сервиса в Github]. | ||
== Пишем первое правило == | == Пишем первое правило == | ||
[[File:Web-scripts-rule1.png|400px|thumb|Правило для управления обогревателем, записанное через веб-интерфейс]] | [[File:Web-scripts-rule1.png|400px|thumb|Правило для управления обогревателем, записанное через веб-интерфейс]] | ||
Строка 19: | Строка 25: | ||
Любое количество разных правил можно хранить в одном файле. Обычно в одном файле хранятся правила, отвечающие за близкие функции. | Любое количество разных правил можно хранить в одном файле. Обычно в одном файле хранятся правила, отвечающие за близкие функции. | ||
=== Первое правило === | === Первое правило === | ||
Для начала разберём простое правило - при превышении температуры выключи обогреватель. Температуру получаем с датчика [[1-Wire]], обогреватель подключён к Реле 1 внешнего релейного модуля [[WB-MRM2]]. | Для начала разберём простое правило - при превышении температуры выключи обогреватель. Температуру получаем с датчика [[Special:MyLanguage/1-Wire|1-Wire]], обогреватель подключён к Реле 1 внешнего релейного модуля [[Special:MyLanguage/WB-MRM2|WB-MRM2]]. | ||
<syntaxhighlight lang="ecmascript"> | <syntaxhighlight lang="ecmascript"> | ||
Строка 42: | Строка 49: | ||
*Затем идёт условие - "если значение температуры больше порогового, то ...". Значение параметра записывается в виде ''dev[Device][Control]'' - заметьте, оно отличается от вида записи параметра, при изменении которого запускается правило, потому что там речь идёт о ''параметре'', а здесь - о ''значении'' того же параметра. | *Затем идёт условие - "если значение температуры больше порогового, то ...". Значение параметра записывается в виде ''dev[Device][Control]'' - заметьте, оно отличается от вида записи параметра, при изменении которого запускается правило, потому что там речь идёт о ''параметре'', а здесь - о ''значении'' того же параметра. | ||
*Затем мы выставляем значения для реле в каждом случае - ''0'' - "выключено", ''1'' - "включено". Названия ''Device'' и ''Control'' для реле смотрим всё в той же таблице ''MQTT Channels'' на странице ''Settings'' веб-интерфейса. | *Затем мы выставляем значения для реле в каждом случае - ''0'' - "выключено", ''1'' - "включено". Названия ''Device'' и ''Control'' для реле смотрим всё в той же таблице ''MQTT Channels'' на странице ''Settings'' веб-интерфейса. | ||
=== Первое правило с виртуальным устройством === | === Первое правило с виртуальным устройством === | ||
Создаём виртуальный переключатель, при нажатии на который переключаются сразу два реле. | Создаём виртуальный переключатель, при нажатии на который переключаются сразу два реле. | ||
Строка 65: | Строка 74: | ||
}); | }); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Пишем сложные правила === | === Пишем сложные правила === | ||
Чтобы начать писать сложные правила, нужно посмотреть примеры правил и полную документацию по движку правил: | Чтобы начать писать сложные правила, нужно посмотреть примеры правил и полную документацию по движку правил: | ||
#Примеры правил: | #Примеры правил: | ||
Строка 72: | Строка 83: | ||
#* в [http://forums.contactless.ru/t/dvizhok-pravil-primery-koda/483 специальной теме на нашем форуме ]. | #* в [http://forums.contactless.ru/t/dvizhok-pravil-primery-koda/483 специальной теме на нашем форуме ]. | ||
#[https://github.com/contactless/wb-rules Полное описание движка правил]. | #[https://github.com/contactless/wb-rules Полное описание движка правил]. | ||
== Примеры правил == | == Примеры правил == | ||
=== Слежение за контролом === | === Слежение за контролом === | ||
Строка 123: | Строка 137: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Детектор движения c таймаутом === | === Детектор движения c таймаутом === | ||
Строка 157: | Строка 172: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Создание однотипных правил === | === Создание однотипных правил === | ||
Если таких детекторов движения нужно несколько, то, чтобы не копировать код, можно обернуть создание правила и переменных в функцию: | Если таких детекторов движения нужно несколько, то, чтобы не копировать код, можно обернуть создание правила и переменных в функцию: | ||
Строка 186: | Строка 203: | ||
makeMotionDetector("motion_detector_3", 10000, "EXT1_DR3", "EXT2_R3A3"); | makeMotionDetector("motion_detector_3", 10000, "EXT1_DR3", "EXT2_R3A3"); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Активация правила только в определённое время === | === Активация правила только в определённое время === | ||
Строка 229: | Строка 247: | ||
}); | }); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Роллеты === | === Роллеты === | ||
Строка 353: | Строка 372: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Системные правила === | === Системные правила === | ||
Некоторые правила поставляются с системой правил по умолчанию в пакете wb-rules-system. | Некоторые правила поставляются с системой правил по умолчанию в пакете wb-rules-system. | ||
Строка 360: | Строка 381: | ||
Некоторые примеры: | Некоторые примеры: | ||
==== Правило для пищалки ==== | ==== Правило для пищалки ==== | ||
[https://github.com/contactless/wb-rules-system/blob/master/rules/buzzer.js Правило] создаёт виртуальное устройство buzzer с ползунками для регулировки громкости и частоты, а также кнопкой включения звука. | [https://github.com/contactless/wb-rules-system/blob/master/rules/buzzer.js Правило] создаёт виртуальное устройство buzzer с ползунками для регулировки громкости и частоты, а также кнопкой включения звука. | ||
Строка 432: | Строка 455: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== Правило для статуса питания ==== | ==== Правило для статуса питания ==== | ||
Строка 500: | Строка 524: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Отправка команд по RS-485 === | === Отправка команд по RS-485 === | ||
Для примера отправим команду устройству на порт ''/dev/ttyNSC0'' (соответствует аппаратному порту RS-485-ISO на [[Wiren Board 4]]). | Для примера отправим команду устройству на порт ''/dev/ttyNSC0'' (соответствует аппаратному порту RS-485-ISO на [[Special:MyLanguage/Wiren Board 4|Wiren Board 4]]). | ||
Для этого будем использовать движок правил и возможность выполнения произвольных shell-команд. Подробнее см. [https://github.com/contactless/wb-rules#%D0%94%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B5-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D0%B8-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5 в документации]. | Для этого будем использовать движок правил и возможность выполнения произвольных shell-команд. Подробнее см. [https://github.com/contactless/wb-rules#%D0%94%D1%80%D1%83%D0%B3%D0%B8%D0%B5-%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B5-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D0%B8-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5 в документации]. | ||
Строка 659: | Строка 684: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Пользовательские поля в интерфейсе === | === Пользовательские поля в интерфейсе === | ||
Чтобы дать пользователю возможность вводить точные значения параметров (уставки) из интерфейса, можно воспользоваться [https://wirenboard.com/wiki/index.php/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D1%85_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D1%85_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9_%D0%B2_%D0%B2%D0%B5%D0%B1-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B5 инструкцией]. | Чтобы дать пользователю возможность вводить точные значения параметров (уставки) из интерфейса, можно воспользоваться [https://wirenboard.com/wiki/index.php/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D1%85_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D1%85_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9_%D0%B2_%D0%B2%D0%B5%D0%B1-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B5 инструкцией]. | ||
Более подробно и с примером - в [https://support.wirenboard.com/t/kak-na-wb5-wb6-sozdat-pole-dlya-vvoda-ustavok-i-peredat-znachenie-v-pravila/2180 теме на портале техподдержки]. | Более подробно и с примером - в [https://support.wirenboard.com/t/kak-na-wb5-wb6-sozdat-pole-dlya-vvoda-ustavok-i-peredat-znachenie-v-pravila/2180 теме на портале техподдержки]. | ||
=== Сложные правила с расписаниями === | === Сложные правила с расписаниями === | ||
Строка 1058: | Строка 1086: | ||
})() | })() | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Полное описание возможностей движка правил == | == Полное описание возможностей движка правил == | ||
Самое полное описание движка правил: https://github.com/contactless/wb-rules/blob/master/README.md | Самое полное описание движка правил: https://github.com/contactless/wb-rules/blob/master/README.md | ||
== Новые возможности последних версий == | == Новые возможности последних версий == | ||
* [[Движок_правил_wb-rules_1.7|Движок правил wb-rules 1.7]] | |||
* [[Special:MyLanguage/Движок_правил_wb-rules_1.7|Движок правил wb-rules 1.7]] | |||
== В разработке == | == В разработке == | ||
Описание возможностей будущих версий движка правил можно прочесть здесь: | Описание возможностей будущих версий движка правил можно прочесть здесь: | ||
* [[Движок_правил_wb-rules_2.0|Движок правил wb-rules 2.0]] | * [[Special:MyLanguage/Движок_правил_wb-rules_2.0|Движок правил wb-rules 2.0]] | ||
</translate> |