Сценарии автоматизации
Общая информация
Если пакет не установился на контроллере после обновления, попробуйте обновиться следующим образом:apt update && apt full-upgrade
Сценарии (wb-scenarios) — это пакет встроенного ПО контроллера Wiren Board, представляющий собой модули на движке wb-rules и визуальный конфигуратор для подключения и настройки этих модулей в графическом интерфейсе. Исходный код открыт и доступен в нашем репозитории. Там же более подробно можно узнать о работе пакета и конфигурации готовых шаблонов.
Используемые в сценариях топики должны соответствовать Wiren Board MQTT Conventions.
Как создать сценарий в веб-интерфейсе
- Перейдите в Правила → Сценарии.
- Нажмите + Сценарий.
- Выберите и настройте шаблон сценария.
- Нажмите Записать.
- Создание сценария
На каждый сценарий создается виртуальное устройство, с помощью которого можно включить или выключить выполнение сценария.
- Виртуальные устройства сценариев
При работе со сценариями можно включить отладочный режим. Включается также как и при написании скриптов на wb-rules.
Предустановленные сценарии
Автоматизация «Если-То»
Шаблон сценария создает автоматизацию по схеме "Событие — Действие", подходит для большинства простых задач. Примеры использования:
- управление выходами одного модуля от входов другого;
- мастер-выключатель — выключение всего света в помещениях одним нажатием;
- проходной выключатель — управление одним светильником с нескольких разных выключателей.
Управление светом
Этот сценарий автоматически включает свет в проходных комнатах (например, в коридоре, санузле или кладовке). Свет загорается сам, когда вы открываете дверь, заходите внутрь (срабатывает датчик движения) или нажимаете на выключатель.
Термостат
Сценарий считывает данные с датчика температуры и сам управляет отоплением или охлаждением. Работает только с дискретными выходами — устройствами, которые могут только включаться и выключаться (например, обычные реле или двухпозиционные клапаны на батареях).
Доступно два режима работы:
- Гистерезис (простой) — классическое включение и выключение. Вы сами задаете рамки: например, включать обогрев при 20 °C и выключать при 22 °C.
Доступно с релиза wb-2606
- ПИД-регулятор (умный) — максимально точное поддержание температуры без скачков. Система рассчитывает, как быстро нагревается или остывает комната, и подает тепло дозированно. Это помогает избежать перепадов температуры и бережет технику от постоянных щелчков реле.
Расписание
Доступно с релиза wb-2602
Этот сценарий выполняет нужные действия по расписанию: в заданные дни недели и точное время.
Важно: перед настройкой убедитесь, что на контроллере правильно установлены часовой пояс и текущее время.
Астрономический таймер
Доступно с релиза wb-2606
Этот сценарий запускает нужные действия в зависимости от положения солнца. Вы можете привязать автоматику к любому из доступных астрономических событий:
- Основные: Восход и Закат;
- Рассветы (утро): Гражданский (-6°), Навигационный (-12°), Астрономический (-18°);
- Сумерки (вечер): Гражданские (-6°), Навигационные (-12°), Астрономические (-18°);
- Художественный свет: Золотой час (вечер, +6°) и Конец золотого часа (утро, +6°);
- Пиковые точки: Солнечный полдень и Надир (самый тёмный момент ночи).
Вы можете настроить срабатывание точно в момент события или добавить смещение (например, закрывать шторы за 30 минут до заката). Это идеальное решение для управления уличным освещением, жалюзи и другой сезонной автоматикой. Расчеты происходят локально прямо на контроллере — интернет для работы не нужен.
Важно: чтобы всё работало точно, укажите географические координаты вашего дома и убедитесь, что на контроллере правильно установлены время и часовой пояс.
Периодический таймер
Доступно с релиза wb-2606
Этот сценарий периодически включает и выключает устройства. Вы задаете общее «окно» работы (например, с 8:00 до 20:00), а также как часто и на какое время запускать устройства (например, «включать каждые 2 часа на 15 минут»). После каждого запуска устройства автоматически выключаются.
Отлично подходит для автоматического полива, периодического проветривания и любых других задач, где требуется цикличная работа.
Важно: перед настройкой убедитесь, что на контроллере правильно установлены текущее время и часовой пояс.
Маппинг каналов
Доступно с релиза wb-2606
Сценарий связывает два параметра (MQTT-канала) между собой. Когда значение меняется в одном канале, система моментально копирует его в другой.
Если типы каналов отличаются, значение преобразуется к типу целевого канала:
- Числовой (range, value, temperature и др.). Строка "3.14" преобразуется в число 3.14. Нечисловая строка становится 0. Значение true и false конвертируются в 1 и 0 соответственно;
- Логический (switch, alarm). Принимает значение false, если на входе 0, пустая строка или строка "false" или "0" (в любом регистре). Любые другие значения преобразуются в true;
- Строковый (text, rgb). Любые данные (числа или булевы значения) преобразуются в их текстовый эквивалент. Число 3.14 преобразуется в строку "3.14", а true становится "true".
ПИД-регулятор (аналоговые выходы)
Доступно с релиза wb-2606
Сценарий реализует ПИД-регулятор для точного поддержания заданного значения (уставки) с помощью аналоговых выходов.
Примеры использования:
- управление клапаном тёплого пола или радиаторного отопления;
- регулировка положения воздушной заслонки в системе вентиляции;
- управление любым аналоговым исполнительным устройством (0–10 В, 0–100 %).
Сценарий вычисляет выход ПИД (0–100 %) на основе показаний датчика и уставки, затем пересчитывает его в единицы актуатора с учётом заданных минимума и максимума. Поддерживаются прямой и обратный(инвертированный) режимы работы. Можно подключить несколько актуаторов одновременно.
Подключение модулей сценариев в wb-rules
Каждый сценарий реализован в виде модуля wb-rules — это позволяет подключать модули в ваших правилах и использовать сценарии как js библиотеку.
У каждого сценария есть свой файл README.md на GitHub, где можно посмотреть подробные примеры использования с шаблонами кода:
- Автоматизация «Если-То».
- Управление светом.
- Термостат.
- Расписание.
- Астрономический таймер.
- Периодический таймер.
- Маппинг каналов.
Общий алгоритм использования любого сценария:
- Импортируйте модуль:
var CustomTypeSc = require('thermostat.mod').ThermostatScenario; - Создайте новый инстанс класса сценария
var scenario = new CustomTypeSc() - Создайте объект конфигурации будущего сценария
var cfg = {...тут необходимые поля...} - Инициализируйте сценарий
scenario.init(scenarioName, cfg);
Пример кода для создания сценария термостата:
/**
* @file: init-heating.js
*/
// Step 1: import module
var CustomTypeSc = require('thermostat.mod').ThermostatScenario;
function main() {
var scenarioName = 'Bathroom: heat floor';
log.debug('Start init logic for: "{}"', scenarioName);
// Step 2: Create new instance with scenario class
var scenario = new CustomTypeSc();
// Step 3: Configure algorithm
var cfg = {
idPrefix: 'bathroom_floor', // Optional parameter, can be omitted
targetTemp: 22,
tempLimitsMin: 16,
tempLimitsMax: 29,
hysteresis: 2,
tempSensor: 'wb-msw-v4_34/Temperature',
actuator: 'wb-mr6cv3_127/K6',
};
// Step 4: init algorithm
try {
var isInitSuccess = scenario.init(scenarioName, cfg);
if (!isInitSuccess) {
log.error('Init operation aborted for scenario: "{}"', scenarioName);
return;
}
log.debug('Initialization successful for: "{}"', scenarioName);
} catch (error) {
log.error(
'Exception during scenario initialization: "{}" for scenario: "{}"',
error.message || error,
scenarioName
);
}
}
main();
Известные неисправности
Ошибки/особенности, обнаруженные при использовании.