Первый поток в Node-RED не запускается чаще всего из-за того, что пользователь забывает нажать кнопку Deploy после перетаскивания узлов на рабочее поле — без этого сценарий остаётся черновиком и не выполняется. Эта мелочь становится причиной большинства вопросов новичков, открывающих редактор впервые. Node-RED — среда визуального программирования, где логика собирается из готовых блоков (узлов), соединённых линиями, и именно поэтому она стала стандартом де-факто для домашней автоматизации и прототипирования IoT-решений.
Этот материал построен как серия последовательных уроков: от установки и знакомства с интерфейсом до работы с MQTT, функциями на JavaScript и построения дашборда. Каждый раздел можно использовать как самостоятельный урок или пройти всё целиком как единый курс.
Урок 1. Что такое Node-RED и где он применяется
Node-RED — это инструмент потокового программирования, изначально разработанный в IBM и позже переданный в открытое сообщество. Программа здесь называется потоком (flow): данные движутся от узла к узлу, преобразуясь на каждом шаге. Код писать можно, но не обязательно — большинство задач решается настройкой готовых узлов через диалоговые окна.
Типичные сценарии использования:
- 🏠 Умный дом — связка датчиков, реле и уведомлений, часто в паре с Home Assistant;
- 📡 IoT-прототипирование — приём данных с устройств по MQTT и HTTP;
- 🔗 Интеграция сервисов — связь API разных систем без написания бэкенда;
- 📊 Сбор и визуализация данных — графики, панели, логирование в базы данных.
Запускается Node-RED практически где угодно: на Raspberry Pi, обычном ПК под Windows или Linux, в Docker-контейнере, на сервере NAS. Требования к железу минимальные, поэтому для обучения подойдёт даже слабый одноплатник или старый ноутбук.
Урок 2. Установка и первый запуск
Самый универсальный способ установки — через пакетный менеджер npm, для чего сначала потребуется установить Node.js с официального сайта проекта. После этого Node-RED ставится одной командой в терминале:
npm install -g node-red
Запуск выполняется командой node-red, после чего редактор открывается в браузере по адресу http://localhost:1880. Если порт занят другим приложением, его можно сменить параметром запуска. Вариант с Docker удобен тем, кто не хочет ставить Node.js в систему: образ поднимается одной командой и живёт изолированно.
Для пользователей Home Assistant есть ещё более простой путь — Node-RED доступен как официальное дополнение (add-on), которое устанавливается из магазина дополнений в пару кликов и уже настроено на связь с системой умного дома.
⚠️ Внимание: по умолчанию редактор Node-RED не защищён паролем. Если планируете открывать доступ к интерфейсу из локальной сети или интернета, обязательно включите аутентификацию в файле настроек settings.js, иначе любой, кто найдёт порт, получит возможность выполнять команды на вашем устройстве.
Урок 3. Интерфейс редактора и первый поток
Окно редактора делится на три зоны: слева — палитра узлов, сгруппированных по категориям, в центре — рабочее поле потока, справа — панель информации и отладки. Узлы перетаскиваются мышью и соединяются линиями от выхода одного к входу другого. Потоков может быть несколько, каждый живёт на своей вкладке.
Классическое первое упражнение — связка узлов inject и debug. Первый генерирует сообщение по щелчку или по таймеру, второй выводит его содержимое в панель отладки. Схема действий такая:
- 🧩 Перетащите на поле узлы inject и debug;
- 🔌 Соедините выход первого со входом второго;
- 🚀 Нажмите кнопку Deploy в правом верхнем углу;
- ▶️ Кликните по кнопке на узле inject и посмотрите панель отладки.
☑️ Проверка первого потока
Если сообщение не появилось — проверьте, что нажали именно Deploy, а не просто расставили узлы. Вторая частая причина «молчания» — свернутая панель отладки, которая открывается иконкой жука в правой колонке.
Урок 4. Сообщения, функции и логика потоков
Данные внутри потока передаются как объект msg, у которого есть стандартное поле msg.payload — основное содержимое сообщения. Узлы могут добавлять свои поля: msg.topic, msg.timestamp и другие. Понимание этой структуры — ключ ко всему остальному в Node-RED.
Когда готовых узлов не хватает, на помощь приходит узел function, внутри которого пишется обычный JavaScript. Простейший пример — преобразование значения датчика:
msg.payload = Math.round(msg.payload * 10) / 10;
return msg;
Для ветвления логики без кода служат узлы switch (маршрутизация сообщения по условиям) и change (изменение полей сообщения по правилам). Их комбинация покрывает большинство бытовых сценариев: «если температура выше порога — отправить уведомление», «если пришло значение X — переключить реле».
Урок 5. Работа с MQTT и внешними устройствами
Протокол MQTT — основной способ общения Node-RED с устройствами умного дома и датчиками. Для работы нужен брокер (например, Mosquitto), а в самом редакторе используются узлы mqtt in (подписка на топик) и mqtt out (публикация сообщения). Адрес брокера и топик задаются в настройках узла.
Типичная схема: датчик температуры публикует значение в топик, поток в Node-RED подписывается на него, обрабатывает данные и при превышении порога отправляет команду в другой топик — например, на включение вентилятора. Вся цепочка собирается из четырёх-пяти узлов без единой строчки сложного кода.
⚠️ Внимание: MQTT-брокер без авторизации доступен всем в вашей сети. Задайте логин и пароль в конфигурации брокера и используйте их в настройках узлов — особенно если к сети подключены устройства гостей или открыт доступ извне.
Что делать, если узлы mqtt не подключаются к брокеру
Проверьте, что брокер запущен и слушает стандартный порт 1883. Убедитесь, что адрес в узле указан без префикса http://. Проверьте логин и пароль, а также проверьте, не блокирует ли порт брандмауэр. Статус подключения виден прямо под узлом — зелёная точка означает успешное соединение.
Урок 6. Дашборд и визуализация данных
Для построения панелей управления существует набор узлов dashboard, который устанавливается через меню управления палитрой (Manage palette). После установки в палитре появляются кнопки, переключатели, графики, текстовые поля и графические индикаторы. Готовая панель открывается по адресу вида http://localhost:1880/ui.
Каждый виджет привязывается к группе и вкладке, что позволяет собрать многостраничный интерфейс: отдельно климат, отдельно освещение, отдельно графики за сутки. Данные на график подаются через msg.payload, а историю удобно хранить в контексте потока или во внешней базе.
Сравнение основных способов хранения данных из потоков:
| Способ | Сложность | Подходит для |
|---|---|---|
| Контекст (context) | Минимальная | Временные значения внутри потока |
| Файл (узлы file) | Низкая | Простые логи и выгрузки |
| SQLite / MySQL | Средняя | Структурированная история показаний |
| InfluxDB | Средняя | Временные ряды, графики за длительные периоды |
Урок 7. Отладка, резервное копирование и типичные ошибки
Главный инструмент отладки — узел debug, который можно расставить в любых точках потока и смотреть, как сообщение меняется на каждом этапе. Полезно переключать его вывод с msg.payload на «полный объект msg», чтобы видеть все поля сообщения, а не только основное.
Частые проблемы новичков и их причины:
- 🔴 Поток «не работает» — не нажат Deploy или узел отключен;
- 🔁 Сообщения зацикливаются — выход потока соединён с его же входом;
- 📦 Не ставятся узлы из палитры — нет интернета или устарела версия Node.js;
- 🐢 Интерфейс тормозит — слишком частые сообщения забили панель отладки.
Все потоки хранятся в одном JSON-файле, путь к которому виден в консоли при запуске. Регулярно копируйте этот файл — это полный бэкап всех ваших сценариев, который восстанавливается простой подменой файла. Дополнительно потоки можно экспортировать в JSON прямо из меню редактора и хранить в системе контроля версий.
Частые вопросы по изучению Node-RED
Нужно ли знать программирование для работы с Node-RED?
Нет, базовые сценарии собираются из готовых узлов без кода. Знание основ JavaScript понадобится только для узлов function и сложной обработки данных, но это можно осваивать постепенно, по мере роста задач.
На чём лучше запускать Node-RED для умного дома?
Популярный вариант — Raspberry Pi или мини-ПК, работающие круглосуточно. Если у вас уже установлен Home Assistant, проще всего использовать Node-RED как его дополнение — интеграция будет настроена автоматически.
Чем Node-RED отличается от автоматизаций Home Assistant?
Node-RED даёт более гибкую визуальную логику: ветвления, циклы, обработку данных и связь с внешними сервисами. Встроенные автоматизации Home Assistant проще для типовых задач, но сложные сценарии в Node-RED читаются и отлаживаются заметно удобнее.
Можно ли использовать Node-RED в коммерческих проектах?
Да, проект распространяется под открытой лицензией Apache 2.0 и применяется в том числе в промышленных решениях. Перед промышленным внедрением стоит изучить вопросы безопасности: аутентификацию, шифрование трафика и изоляцию сети.
Куда двигаться дальше после базовых уроков?
Логичный следующий шаг — изучение контекстных переменных (flow и global), работы с базами данных, создания собственных подпотоков (subflows) для переиспользования логики и настройки безопасного удалённого доступа к редактору.