Node-RED — это среда визуального программирования, в которой логика автоматизации собирается из готовых блоков-нод, соединённых линиями, без написания кода с нуля. Когда требуется связать датчик температуры с реле отопления или переслать данные из MQTT-брокера в Telegram, задача решается перетаскиванием элементов на холст и настройкой их свойств, а не написанием скриптов.
Инструмент изначально разработан в IBM и сегодня распространяется с открытым исходным кодом. Его используют энтузиасты умного дома, инженеры промышленной автоматизации и разработчики прототипов IoT-устройств. Ниже разберём, как устроен Node-RED, где его применяют и как начать работу.
Как устроен Node-RED: ноды, потоки и сообщения
Основная единица системы — нода (node). Это блок с конкретной функцией: принять HTTP-запрос, прочитать сообщение из MQTT, преобразовать данные, отправить уведомление. Ноды соединяются проводами, образуя поток (flow) — визуальную схему обработки данных.
Между нодами передаётся объект сообщения msg. Чаще всего работа идёт с его свойством msg.payload — именно там находится полезная нагрузка: показание датчика, текст команды, JSON-структура. Понимание этого объекта — ключ к осмысленной настройке любой автоматизации.
- 🔌 Input-ноды — источники событий: inject, MQTT in, HTTP in.
- ⚙️ Функциональные ноды — обработка: function (JavaScript-код), switch (ветвление по условию), change (изменение свойств).
- 📤 Output-ноды — действия: MQTT out, HTTP response, запись в базу данных, отправка в мессенджер.
- 🐞 Debug-нода — выводит содержимое сообщения в боковую панель для отладки.
Работа выглядит так: событие запускает входную ноду, сообщение проходит по цепочке преобразований, а конечная нода выполняет действие. Всё это видно на схеме, что заметно упрощает поиск ошибок по сравнению с текстовым кодом.
Где применяется Node-RED
Чаще всего среда встречается в проектах умного дома — как надстройка или альтернатива встроенным автоматизациям Home Assistant. Типичный сценарий: датчик движения публикует событие в MQTT, поток проверяет время суток и уровень освещённости, затем включает свет через реле или Zigbee-координатор.
Вторая крупная область — промышленный IoT и сбор телеметрии. Node-RED умеет опрашивать устройства по протоколам Modbus и OPC UA (через дополнительные ноды из каталога), складывать данные в базы вроде InfluxDB и строить дашборды. Третье направление — быстрое прототипирование: связать API стороннего сервиса с локальным скриптом можно за считанные минуты.
Установка и первый запуск
Среда написана на Node.js, поэтому базовый способ установки — через пакетный менеджер npm. Сначала потребуется установить сам Node.js актуальной LTS-версии с официального сайта проекта, затем выполнить команду:
npm install -g --unsafe-perm node-red
После установки сервер запускается командой node-red, а редактор открывается в браузере по адресу http://localhost:1880. Для Windows, Linux и macOS процедура одинакова; точные требования к версии Node.js стоит сверить с официальной документацией, так как они меняются от релиза к релизу.
Альтернативные варианты развёртывания:
- 🐳 Docker — официальный образ, удобен для серверов и изоляции окружения.
- 🏠 Аддон Home Assistant — установка в пару кликов из магазина дополнений.
- 🥧 Raspberry Pi OS — Node-RED часто предустановлен или ставится штатным скриптом.
☑️ Первый запуск Node-RED
⚠️ Внимание: по умолчанию редактор Node-RED не защищён паролем. Если сервер доступен из локальной сети или интернета, обязательно включите аутентификацию в файле настроек settings.js до того, как открывать к нему доступ извне.
Создание первого потока
Начните с минимальной связки: нода inject (синяя, с кнопкой) и нода debug (зелёная). Перетащите обе на холст, соедините выход первой со входом второй и нажмите красную кнопку Deploy в правом верхнем углу — поток опубликован и работает.
Клик по кнопке на ноде inject отправит метку времени в поток, а панель Debug справа покажет содержимое msg.payload. Дальше усложняйте: добавьте ноду function с простым JavaScript-кодом, например msg.payload = "Привет, Node-RED"; return msg;, и посмотрите, как изменится вывод.
Расширение возможностей: палитра нод
Базовая поставка покрывает лишь фундамент. Реальная сила среды — в каталоге community-нод, насчитывающем тысячи пакетов: интеграции с Telegram, PostgreSQL, Zigbee2MQTT, Google Sheets, промышленными протоколами и сотнями других сервисов.
Установка выполняется через меню редактора: Manage palette → Install, где достаточно ввести название пакета. Те же пакеты ставятся и через npm в каталоге данных Node-RED. Перед установкой обращайте внимание на дату последнего обновления пакета и количество загрузок — заброшенные ноды могут конфликтовать со свежими версиями ядра.
| Задача | Типовые ноды | Назначение |
|---|---|---|
| Обмен по MQTT | mqtt in / mqtt out | Подписка и публикация сообщений через брокер |
| Ветвление логики | switch | Маршрутизация сообщения по условиям |
| Кастомная логика | function | Произвольный код на JavaScript |
| HTTP-интеграции | http in / http request | Приём вебхуков и запросы к API |
| Отладка | debug | Просмотр содержимого сообщений |
Что такое контекст (context) в Node-RED
Помимо msg существует хранилище контекста трёх уровней: на уровне ноды, потока и глобальное. Оно позволяет сохранять состояние между сообщениями — например, счётчик срабатываний датчика или последнее значение температуры. По умолчанию контекст хранится в памяти и сбрасывается при перезапуске, но в settings.js можно включить постоянное хранилище на диске.
Типичные ошибки новичков
Первая частая проблема — поток «не работает», хотя схема выглядит верно. Почти всегда причина в том, что забыли нажать Deploy, либо сообщение не доходит до нужной ноды из-за условия в switch. Ставьте debug-ноды на каждом подозрительном участке — это главный инструмент диагностики.
Вторая ошибка — попытка решить всё одной гигантской нодой function с сотнями строк кода. Так теряется главное преимущество визуальной среды: наглядность. Разбивайте логику на отдельные ноды и подпотоки (subflows), оставляя JavaScript только для того, что действительно сложно выразить блоками.
⚠️ Внимание: ноды из community-каталога выполняются с правами процесса Node-RED. Устанавливайте только поддерживаемые пакеты с понятным происхождением — вредоносная или уязвимая нода получит доступ к вашей сети и данным автоматизации.
Node-RED и альтернативы
На фоне встроенных автоматизаций Home Assistant среда выигрывает в гибкости сложной логики: ветвления, циклы обработки массивов, работа с произвольными API там реализуются заметно тяжелее. Обратная сторона — порог входа: потребуется понять модель сообщений и основы JavaScript для нетривиальных задач.
Если сравнивать с n8n, то последний ближе к бизнес-интеграциям и облачным сервисам, тогда как Node-RED исторически сильнее именно в IoT и работе с «железом» — MQTT, Modbus, последовательные порты. Выбор зависит от задачи: для связки датчиков и реле чаще берут Node-RED, для связки CRM и почты — n8n.
Частые вопросы о Node-RED
Нужно ли уметь программировать, чтобы пользоваться Node-RED?
Для базовых сценариев — нет: типовые автоматизации собираются из готовых нод с настройкой через формы. Знание JavaScript понадобится только для ноды function и сложных преобразований данных.
На каких устройствах можно запустить Node-RED?
На любой системе, где работает Node.js: ПК с Windows, Linux или macOS, одноплатники вроде Raspberry Pi, NAS с поддержкой Docker, а также в облачных виртуальных машинах.
Бесплатен ли Node-RED?
Да, проект распространяется с открытым исходным кодом под лицензией Apache 2.0. Бесплатны и подавляющее большинство community-нод из каталога.
Что делать, если поток перестал работать после обновления?
Проверьте журнал запуска Node-RED в терминале — туда выводятся ошибки несовместимых нод. Затем обновите установленные пакеты через Manage palette. Если проблема сохраняется, откатитесь на предыдущую версию ядра, предварительно экспортировав потоки в JSON через меню Export.
Можно ли перенести потоки на другой сервер?
Да. Потоки экспортируются в JSON через меню редактора и импортируются на другой машине. Учтите, что дополнительные ноды придётся установить заново — они не входят в экспорт.