Движок правил wb-rules

From Wiren Board
This is the approved revision of this page, as well as being the most recent.

Описание

Редактирование правил в веб-интерфейсе

wb-rules — это специальный сервис в контроллере Wiren Board, который работает поверх операционной системы и позволяет создавать сценарии управления с помощью правил на языке JavaScript.

wb-rules установлен в контроллер по умолчанию и запускается автоматически. Управлять им можно из консоли контроллера, о чем подробнее написано в статье Диагностика ошибок в работе контроллера Wiren Board.

Альтернатива правилам wb-rules для создания сценариев управления — среда графического программирования Node-RED.

Документация wb-rules на Github

Как создавать и редактировать правила

Файлы с правилами хранятся в контроллере в папке /etc/wb-rules/ с расширением .js. Их можно редактировать и загружать их напрямую с компьютера, а также использовать встроенный в веб-интерфейс редактор правил на вкладке Rules.

Для написания правил необходимы базовые знания синтаксиса языка JavaScript с учетом особенностей ECMAScript 5. Если вы ранее не работали с JavaScript, то рекомендуем учебник learn.javascript.ru.

Каждое правило представляет собой функцию на языке JavaScript с определенным набором входных параметров. Выполнение правила происходит при наступлении заданного события или циклически. Подробное описание типов правил и механизма их работы читайте в документации на Github.

Для создания правила:

  1. Откройте вкладку Rules в веб-интерфейсе контроллера.
  2. Создайте новый файл правил или откройте стандартный rules.js.
  3. Напишите скрипт или вставьте код из примера.
  4. Нажмите кнопку Сохранить.

Если в правиле нет синтаксических ошибок, оно начинает работать сразу после сохранения файла.

Важно! Помните, что JS асинхронный, поэтому не используйте в коде бесконечных циклов и задержек. Для формирования правильных задержек есть таймеры.

Для работы с устройствами вам понадобятся адреса каналов, их удобно брать со страницы MQTT-каналы, первая колонка Устройство/Канал.

Если правило не работает

Подсветка ошибок в редакторе правил wb-rules

Если написанный скрипт не работает:

  1. Проверьте еще раз знаки пунктуации, количество открывающихся и закрывающихся скобок, возможные ошибки в написании имен переменных. Обычно синтаксические ошибки подсвечиваются красным, но некоторые могут быть пропущены компилятором.
  2. Проверьте правильность написания ссылок на MQTT-топики.
  3. Уточните правильно ли выбран тип правила.

Если правило не работает или показывает красным строку и вы не понимаете причину, то вы можете получить дополнительную информацию в Системном журнале, который можно отфильтровать по имени сервиса — wb-rules.

Если сервис wb-rules потребляет 100 % процессорного времени — ищите в своих скриптах бесконечные циклы, задержки место таймеров и т.п.

Примеры правил и решения сообщества

Примеры правил:

Проекты сообщества на wb-rules:

Версии wb-rules и совместимость скриптов

Существует две версии движка:

  • wb-rules 1.7 — устаревшая версия, поддерживаются контроллеры Wiren Board 5 и 6.
  • wb-rules 2.0 — актуальная версия, поддерживаются контроллеры Wiren Board 6 и 7.

Если у вас контроллер Wiren Board 6 из первых партий и вы переходите с версии 1.7 на 2.0, то прочитайте статью Совместимость скриптов — в ней мы описали возможные проблемы и пути решения.