---
name: wb-rules
description: 'Разрабатывать, объяснять и отлаживать серверные скрипты автоматизации wb-rules на JavaScript на контроллерах Wiren Board: `defineRule` (whenChanged/when/asSoonAs/cron), virtual devices, timers, modules, PersistentStorage, диагностика через `journalctl -u wb-rules`, `/etc/wb-rules`, `/var/run/wb-rules`, и интеграция с внешними сервисами через MQTT/hooks (`/hooks/wake`) и `POST /tools/invoke` (Telegram).'
---

# WB Rules

## Короткий workflow

1. Определить тип запроса:
- возможности контроллера/UI/Cloud;
- разработка или объяснение скрипта wb-rules;
- отладка уже работающих правил.
2. Открыть только нужный reference-файл:
- `references/wb-software-capabilities.md` для возможностей контроллера, web-интерфейса и WB Cloud;
- `references/wb-rules-wiki.md` для операционных деталей (где лежат скрипты, как смотреть логи, какие страницы считать актуальными);
- `references/wb-rules-cheatsheet.md` для быстрого поиска сигнатур и параметров API (компактный справочник);
- `references/wb-rules-full-guide.md` для полных примеров, таблиц типов/параметров и детального описания API;
- `references/openclaw-wb-rules-integration.md` для двусторонней интеграции OpenClaw и wb-rules (MQTT и hooks).
- `references/wb-rules-telegram-notify.md` для быстрой отправки Telegram-уведомлений из wb-rules без agent turn и для hybrid-сценариев.
3. Сформировать решение в формате "минимально работающий скрипт + шаги проверки".

## Практика разработки правил

- Писать правила с явным триггером (`whenChanged`, `when`, `asSoonAs`, `cron`), чтобы поведение было предсказуемым.
- Для длительных операций использовать таймеры и неблокирующие вызовы (`runShellCommand`), не блокировать обработчик правила.
- При необходимости состояния между перезапусками использовать `PersistentStorage`.
- Для сложных сценариев декомпозировать код на модули и подключать их через `require`.
- Для интерфейсных сценариев создавать `defineVirtualDevice` и управлять controls через `dev[...]`.

## Проверка и отладка

- Проверять синтаксис и запуск правила на контроллере после деплоя.
- Читать журнал `wb-rules`: `journalctl -u wb-rules`.
- Если правило не применяется, проверить файл в `/etc/wb-rules/` и активную копию в `/var/run/wb-rules/`.
- Для спорных мест сверяться с `references/wb-rules-cheatsheet.md` (быстрый lookup) или `references/wb-rules-full-guide.md` (детали и примеры) и учитывать ограничения синтаксиса (ES5, не ES6+).

## Навигация по references

- `references/wb-software-capabilities.md`: обзор встроенного ПО, web-интерфейса и ключевых функций контроллера.
- `references/wb-rules-wiki.md`: где хранить скрипты, как диагностировать, какие официальные страницы открывать в первую очередь.
- `references/wb-rules-cheatsheet.md`: компактный справочник — все сигнатуры API, типы контролов, параметры, ограничения ES5 на одной странице. Открывать первым для быстрого lookup.
- `references/wb-rules-full-guide.md`: полное руководство с детальным описанием каждой функции, таблицами параметров и готовыми примерами (термостат, освещение, мониторинг, модули). Открывать для написания нетривиальных скриптов.
- `references/openclaw-wb-rules-integration.md`: минимальная рабочая схема OpenClaw <-> wb-rules, настройка hooks, примеры `curl`/`wb-rules`, throttling и практические ограничения.
- `references/wb-rules-telegram-notify.md`: direct и hybrid отправка Telegram из wb-rules через `POST /tools/invoke`, токены, helper-функции и диагностика.
