Node-RED на контроллере Wiren Board чаще всего перестаёт видеть реле и датчики из-за неверно указанного MQTT-топика: в экосистеме Wiren Board все устройства публикуют данные в иерархию вида /devices/имя_устройства/controls/имя_канала, и любая опечатка в этом пути приводит к «молчащему» потоку без единой ошибки в интерфейсе. Проверка начинается именно с топика, а не с переустановки ноды или перезагрузки контроллера.
Визуальная среда программирования Node-RED позволяет строить сценарии автоматизации на контроллерах Wiren Board 6 и Wiren Board 7 без написания кода на правилах wb-rules. Потоки собираются из нод в браузере: входные данные приходят по MQTT, обрабатываются логикой и возвращаются командами на исполнительные устройства. Ниже разберём установку, подключение к брокеру, работу с каналами и типичные проблемы.
Что такое Node-RED и зачем он на Wiren Board
Контроллеры Wiren Board работают под управлением Linux и имеют встроенный MQTT-брокер Mosquitto, через который проходит весь обмен данными с подключёнными устройствами — модулями реле, диммерами, датчиками по шине RS-485. Штатный движок правил wb-rules требует написания сценариев на JavaScript-подобном синтаксисе, что не всем удобно.
Node-RED решает эту задачу визуально: вы перетаскиваете ноды mqtt in и mqtt out, соединяете их логикой и получаете работающую автоматизацию. Типичные сценарии — управление освещением по датчику движения, защита от протечки, терморегуляция, интеграция с внешними сервисами через HTTP-ноды.
- 🔌 Подписка на состояние реле и датчиков через ноду
mqtt in - 📤 Отправка команд через
mqtt outв топик/onсоответствующего канала - 🧠 Логика на нодах
function,switch,delayбез программирования - 🌐 Интеграция с Telegram, погодными API и другими сервисами
Установка Node-RED на контроллер
Установка выполняется через SSH из официального репозитория пакетов Wiren Board — в актуальных прошивках пакет доступен штатно. Подключитесь к контроллеру по SSH и выполните обновление списка пакетов, затем установите Node-RED. Точное имя пакета и его наличие зависят от версии прошивки, поэтому перед установкой сверьтесь с документацией Wiren Board для вашей модели.
apt update
apt install node-red
После установки сервис обычно запускается автоматически, а веб-интерфейс становится доступен в браузере по адресу http://IP-контроллера:1880. Если страница не открывается, проверьте статус службы командой systemctl status nodered и убедитесь, что порт не занят другим процессом.
⚠️ Внимание: веб-интерфейс Node-RED по умолчанию может быть открыт без авторизации. Если контроллер доступен извне локальной сети, любой, кто знает адрес, сможет менять ваши сценарии. Настройте пароль в конфигурации Node-RED или ограничьте доступ на уровне сети.
☑️ Проверка после установки Node-RED
Подключение к MQTT-брокеру Wiren Board
Брокер Mosquitto работает на самом контроллере, поэтому в настройках MQTT-ноды в качестве сервера указывается localhost и стандартный порт 1883. Если на брокере включена авторизация, логин и пароль задаются во вкладке безопасности конфигурации сервера.
Ключевой момент — структура топиков. Каждое устройство в системе Wiren Board имеет идентификатор, а его каналы публикуются по схеме /devices/wb-mr6c_12/controls/K1, где wb-mr6c_12 — пример имени модуля реле, а K1 — канал. Чтобы включить реле, нужно отправить 1 в топик /devices/wb-mr6c_12/controls/K1/on. Имена устройств и каналов удобно смотреть в веб-интерфейсе контроллера на вкладке MQTT Channels — там же видны актуальные значения.
Структура топиков: таблица основных типов
Ниже приведены типовые варианты топиков. Конкретные имена зависят от подключённого оборудования и настроек драйвера wb-mqtt-serial, поэтому всегда сверяйтесь с реальной иерархией на вашем контроллере.
| Назначение | Шаблон топика | Действие |
|---|---|---|
| Чтение состояния канала | /devices/имя/controls/канал | Подписка (mqtt in) |
| Команда на канал | /devices/имя/controls/канал/on | Публикация (mqtt out) |
| Метаданные устройства | /devices/имя/meta | Чтение информации |
| Ошибка устройства | /devices/имя/controls/канал/meta/error | Диагностика связи |
Обратите внимание на топик ошибки: если устройство отвалилось по RS-485, в мета-топике канала появляется признак ошибки. Подписка на meta/error — самый надёжный способ отследить потерю связи с модулем, а не ждать, пока автоматизация «зависнет» на устаревшем значении.
Сборка первого потока: пример с датчиком движения
Классическая задача — включать свет по датчику движения и гасить его через заданное время. Поток собирается из четырёх нод: mqtt in с подпиской на канал датчика, нода switch для фильтрации значения, mqtt out для команды на реле и delay или trigger для отложенного выключения.
Порядок действий следующий. Сначала добавьте входную ноду и укажите топик канала датчика — значение придёт в msg.payload. Затем нодой switch отфильтруйте срабатывание (значение 1). На выход «сработал» повесьте ноду mqtt out с топиком команды реле и полезной нагрузкой 1, а параллельно — ноду trigger, которая через нужный интервал отправит 0 в тот же топик. Развёртывание выполняется кнопкой Deploy в правом верхнем углу редактора.
Почему реле не реагирует на команду
Наиболее частые причины — команда отправлена в топик без суффикса /on, payload отправлен как число вместо строки, либо имя устройства скопировано с опечаткой. Проверьте топик через вкладку MQTT Channels в веб-интерфейсе контроллера: если значение канала там меняется при физической коммутации, но не меняется от Node-RED — проблема точно в топике публикации.
Типичные ошибки и их диагностика
Проблемы с Node-RED на Wiren Board в большинстве случаев сводятся к трём группам: неверные топики, потеря связи с брокером и переполнение памяти контроллера при тяжёлых потоках. Диагностику начинайте с ноды debug, подключённой к выходу mqtt in — если сообщения приходят, связь с брокером в порядке.
- 🔴 Нода mqtt показывает «disconnected» — проверьте, работает ли Mosquitto и верен ли порт
- 🟡 Данные приходят, но реле не переключается — проверьте суффикс
/onи формат payload - 🔵 Потоки работают медленно — уберите лишние debug-ноды и тяжёлые function-ноды из циклов
- 🟢 Контроллер перезагружается — проверьте свободную память командой
free -m
⚠️ Внимание: Node-RED сохраняет потоки в файловой системе контроллера. Перед обновлением прошивки или экспериментами с пакетами сделайте резервную копию файла потоков — иначе сценарии можно потерять. Путь к файлу зависит от конфигурации, уточните его в документации к вашей установке.
⚠️ Внимание: не дублируйте одну и ту же логику в Node-RED и в wb-rules одновременно. Два движка, управляющих одним каналом, будут конфликтовать, и поведение реле станет непредсказуемым.
Node-RED или wb-rules: что выбрать
Оба инструмента решают одну задачу, но по-разному. wb-rules — нативный движок контроллера: он легче по ресурсам, теснее интегрирован с системой и предпочтителен для критичных сценариев вроде защиты от протечки. Node-RED удобнее для сложных интеграций, визуальной отладки и людей без опыта программирования, но потребляет больше памяти.
Практичный подход — критичную безопасность оставить на wb-rules, а сценарии комфорта и внешние интеграции вести в Node-RED. Так отказ или перезагрузка одного движка не обесточит всю логику сразу.
Часто задаваемые вопросы
На каком порту работает веб-интерфейс Node-RED на Wiren Board?
По умолчанию редактор доступен на порту 1880: http://IP-контроллера:1880. Порт можно изменить в файле настроек Node-RED, если он конфликтует с другим сервисом.
Нужен ли отдельный MQTT-брокер для Node-RED?
Нет. Node-RED подключается к уже работающему на контроллере брокеру Mosquitto по адресу localhost:1883. Устанавливать второй брокер не требуется и нежелательно — это создаст путаницу в топиках.
Как узнать точное имя топика моего устройства?
Откройте веб-интерфейс контроллера и перейдите на вкладку MQTT Channels — там перечислены все устройства и каналы с актуальными значениями. Альтернатива — подписка на /devices/# в Node-RED или любым MQTT-клиентом.
Переживут ли потоки Node-RED перезагрузку контроллера?
Да, потоки хранятся в файле на файловой системе и загружаются при старте сервиса. Однако состояние в оперативной памяти (контекст, таймеры) теряется, поэтому важные состояния стоит восстанавливать из retained-сообщений MQTT.
Что делать, если Node-RED тормозит на контроллере?
Проверьте свободную память командой free -m, удалите лишние debug-ноды, сократите частоту опроса в потоках и перенесите критичную логику на wb-rules. При хронической нехватке ресурсов рассмотрите запуск Node-RED на отдельном устройстве с подключением к брокеру контроллера по сети.