Node-RED — это визуальный конструктор логики: вместо кода вы рисуете схему из блоков («узлов»), соединяя их линиями. Один узел принимает сообщение от датчика, другой его обрабатывает, третий отправляет в MQTT или в Telegram. Для домашней автоматики это удобно: схему видно целиком, а изменить поведение можно за минуту прямо в браузере.
Raspberry Pi 5 подходит для Node-RED с запасом. В статье установим программу официальным скриптом, настроим автозапуск и защиту, соберём первый поток (температура процессора) и разберём, как Node-RED работает с MQTT, дашбордами и вашими скриптами на Python.
Что понадобится
- Raspberry Pi 5 с установленной системой (установка Raspberry Pi OS) и подключением к сети;
- доступ по SSH (подключение по SSH);
- браузер на компьютере в той же сети.
Установка
Для Raspberry Pi существует специальный установочный скрипт: он ставит подходящую версию Node.js, сам Node-RED и создаёт службу systemd. Перед установкой обновите систему:
sudo apt update
sudo apt full-upgrade -y
Затем запустите скрипт установки (команда взята с официальной страницы Node-RED для Raspberry Pi, проверьте актуальную версию на nodered.org):
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Скрипт сначала попросит подтвердить установку (ответьте y), а затем сам делает всё остальное. На Raspberry Pi 5 установка заняла около полутора минут; предупреждение про 20–30 минут относится к медленным моделям.
Перед запуском скрипта. Команда скачивает и запускает скрипт из интернета с правами вашего пользователя (и просит sudo для установки пакетов). Это стандартный способ установки с официальной страницы Node-RED, но привычка не запускать чужие скрипты вслепую полезна: при желании сначала скачайте файл, посмотрите его и только потом запустите.
Так выглядит вывод скрипта на Raspberry Pi 5 с Raspberry Pi OS (у вас номера версий могут быть другими). Зелёные галочки означают, что шаг выполнен. Тот же вывод текстом, чтобы его можно было скопировать, например при поиске ошибки:
Running Node-RED install for user admin at /home/admin on debian
This can take 20-30 minutes on the slower Pi versions - please wait.
Stop Node-RED ✔
Remove old version of Node-RED ✔
Remove old version of Node.js ✔
Install Node v22.23.4 ✔ v22.23.4 Npm 10.9.9
Clean npm cache ✔
Install Node-RED core ✔ 5.0.9
Move global nodes to local -
Npm rebuild existing nodes ✔
Install extra Pi nodes ✔
Add shortcut commands ✔
Update systemd script ✔
Any errors will be logged to /var/log/nodered-install.log
All done.
You can now start Node-RED with the command node-red-start
or using the icon under Menu / Programming / Node-RED
Then point your browser to localhost:1880 or http://{your_pi_ip-address}:1880
Started : Wed 28 Oct 21:29:46 MSK 2026
Finished: Wed 28 Oct 21:31:01 MSK 2026
**********************************************************************************
### WARNING ###
DO NOT EXPOSE NODE-RED TO THE OPEN INTERNET WITHOUT SECURING IT FIRST
Even if your Node-RED doesn't have anything valuable, (automated) attacks will
happen and could provide a foothold in your local network
Follow the guide at https://nodered.org/docs/user-guide/runtime/securing-node-red
to setup security.
### ADDITIONAL RECOMMENDATIONS ###
- You can customise the initial settings by running:
node-red admin init
**********************************************************************************
Как читать этот вывод:
| Строка | Что означает |
|---|---|
Stop Node-RED, Remove old version of Node-RED, Remove old version of Node.js | Скрипт не только ставит, но и обновляет: останавливает старый Node-RED и удаляет старые версии. На чистой системе удалять нечего, но Node.js, установленный из системных пакетов, он заменит своей версией. Если вы используете Node.js для других программ, учтите это перед запуском |
Install Node v22.23.4 … Npm 10.9.9 | Установлены Node.js (среда, в которой работает Node-RED) и менеджер пакетов npm |
Install Node-RED core … 5.0.9 | Установлен сам Node-RED версии 5.0.9 |
Move global nodes to local с прочерком | Шаг пропущен: на новой системе переносить нечего |
Install extra Pi nodes | Добавлены узлы для Raspberry Pi (GPIO и другие) |
Add shortcut commands | Созданы команды node-red-start, node-red-stop, node-red-log и значок в меню Programming → Node-RED |
Update systemd script | Создана служба nodered.service |
Any errors will be logged to /var/log/nodered-install.log | Если установка завершилась ошибкой, подробности ищите в этом файле |
Started и Finished | Время начала и конца: здесь разница 1 минута 15 секунд |
Блок со звёздочками ### WARNING ### — напоминание не выставлять редактор в интернет без защиты: через редактор можно выполнять команды на плате. Защиту настроим в разделе ниже. Сразу после этого сообщения скрипт запускает мастер настроек node-red admin init. Его диалог и вопросы разобраны ниже в разделе «Защита редактора паролем».
Запуск и автозапуск
Запустить Node-RED вручную:
node-red-start
Команда напечатает адрес редактора и журнал. Остановить: node-red-stop, журнал: node-red-log.
Что видно на снимке:
- Сверху подсказка: адрес редактора
http://192.168.0.123:1880(у вас будет адрес вашей платы) и список команд. Последние две строки показывают, как включить и выключить автозапуск при загрузке платы. Starting as a systemd service—node-red-startзапускает именно службуnodered.service, то есть Node-RED работает в фоне, и окно терминала можно закрыть.- В журнале версия Node-RED (
v5.0.9), версия Node.js (v22.23.4) и версия ядра системы.Settings file— файл настроек,User directory— папка~/.node-red, в которой хранится всё ваше. Context store: 'default' [module=memory]— переменные потоков хранятся в памяти и пропадают при перезапуске.[warn] No active project : using default flows file— режим Projects включён, но проект ещё не создан, поэтому потоки пока лежат в обычном файлеflows.json. Предупреждение безвредное.- Большое сообщение между чертами
[warn]— про файл с паролями из узлов (flows_cred.json): он шифруется ключом, созданным системой. Если этот ключ потерять (например, при переносе папки на другую плату), пароли из узлов придётся ввести заново. Чтобы задать свой ключ, укажите параметрcredentialSecretвsettings.js. В начале работы это можно пропустить. [warn] Encrypted credentials not foundна первом запуске нормально: файла с паролями ещё нет.- Последние строки
Starting flowsиStarted flowsозначают, что Node-RED готов.
Чтобы Node-RED запускался вместе с платой, включите службу:
sudo systemctl enable nodered.service
sudo systemctl start nodered.service
sudo systemctl status nodered.service
Подробнее о службах рассказано в статье про автозапуск через systemd.
Открываем редактор
Узнайте IP-адрес платы командой hostname -I и откройте в браузере компьютера:
http://IP-АДРЕС:1880
Если защита включена, сначала появится страница входа: введите логин и пароль, заданные в мастере. Затем откроется редактор: слева палитра узлов, в центре рабочая область («потоки» на вкладках), справа боковая панель с отладкой, справкой и настройками. При включённом режиме Projects при первом входе редактор может предложить создать проект (имя и описание): создайте его, и дальше потоки будут храниться в этом проекте.
Так выглядит страница входа: логин и пароль, которые вы задали в мастере (в примере логин admin). Браузер пишет Not Secure (небезопасно) в адресной строке: соединение идёт по обычному http без шифрования. Для домашней сети это нормально, но пароль передаётся по сети открытым текстом, поэтому снаружи редактор открывать нельзя.
После входа открывается редактор. Вверху вкладка потока Flow 1 и кнопка Deploy (она серая, пока в потоке нет изменений), справа значок пользователя (ad — первые буквы имени admin) и меню (≡). Слева: Explorer со списком потоков (Flows), подпотоков (Subflows) и общих настроек (Global Configuration Nodes), под ним палитра узлов (inject, debug, complete, catch, status и другие). Справа панель Information с описанием выбранного потока. Поверх всего окно приветствия Welcome to Node-RED 5.0!: это обзор новых возможностей версии из 11 шагов. Нажмите Start, чтобы пройти его, или закройте окно крестиком в правом верхнем углу.
Защита редактора паролем
По умолчанию редактор Node-RED открыт для всех, кто может достучаться до порта 1880. Через редактор можно выполнить на плате произвольные команды (узел exec), поэтому обязательно включите пароль. В конце установки скрипт сам запускает мастер node-red admin init и задаёт вопросы. Вот как выглядит весь диалог (пароль мастер не показывает: звёздочки печатаются вместо символов):
Тот же диалог текстом:
Node-RED Settings File initialisation
=====================================
This tool will help you create a Node-RED settings file.
✔ Settings file · /home/admin/.node-red/settings.js
Share Anonymouse Usage Information
==================================
✔ Node-RED can notify you when there is a new version available.
This ensures you keep up to date with the latest features and fixes.
This requires sending anonymised data back to the Node-RED team.
It does not include any details of your flows or users.
For full information on what information is collected and how it is used,
please see https://nodered.org/docs/telemetry
· Yes, send my usage data
User Security
=============
✔ Do you want to setup user security? · Yes
✔ Username · admin
✔ Password · ************
✔ User permissions · full access
✔ Add another user? · No
Projects
========
The Projects feature allows you to version control your flow using a local git repository.
✔ Do you want to enable the Projects feature? · Yes
✔ What project workflow do you want to use? · auto - changes are automatically committed
Editor settings
===============
✔ Select a theme for the editor. To use any theme other than "default", you will need to install @node-red-contrib-themes/theme-collection in your Node-RED user directory. · default
✔ Select the text editor component to use in the Node-RED Editor · monaco (default)
Node settings
=============
✔ Allow Function nodes to load external modules? (functionExternalModules) · Yes
Settings file written to /home/admin/.node-red/settings.js
admin@raspberrypi5:~ $
Что спрашивает мастер и что отвечать:
| Вопрос | Ответ в примере | Комментарий |
|---|---|---|
Settings file | /home/admin/.node-red/settings.js | Путь к файлу настроек, его можно оставить как есть |
Share Anonymouse Usage Information | Yes | Отправлять разработчикам обезличенную статистику и получать уведомления о новых версиях. Данные ваших потоков и пользователей не передаются. Можно ответить No |
Do you want to setup user security? | Yes | Главный вопрос. Включает вход по имени и паролю. Отвечайте Yes |
Username, Password | admin, пароль | Логин и пароль для входа в редактор. Пароль хранится в settings.js в виде хэша, не открытым текстом. Придумайте длинный и неповторяющийся |
User permissions | full access | Полный доступ: можно менять потоки. Вариант read-only только для просмотра |
Add another user? | No | Второй пользователь не нужен |
Do you want to enable the Projects feature? | Yes | Проекты хранят потоки в локальном репозитории git, и можно вернуться к прошлой версии. Для первого знакомства они не обязательны: можно ответить No |
What project workflow do you want to use? | auto | Изменения фиксируются в git автоматически при каждом нажатии Deploy. Вариант manual предлагает сохранять версии вручную |
Select a theme for the editor | default | Тема оформления. Другие темы требуют установки отдельного пакета |
Select the text editor component | monaco | Встроенный редактор кода в узле function, подсвечивает синтаксис и подсказывает команды |
Allow Function nodes to load external modules? | Yes | В узле function можно подключать пакеты npm. Для домашней сети это удобно: не включайте, если не планируете использовать сторонние модули |
После мастера перезапустите службу, чтобы настройки вступили в силу (если Node-RED ещё не запущен, достаточно start):
sudo systemctl restart nodered.service
Если вы пропустили мастер или хотите изменить ответы, запустите его вручную: node-red admin init. Файл ~/.node-red/settings.js можно править и руками, но лучше пользоваться мастером: так проще не ошибиться.
Не открывайте порт в интернет. Даже с паролем не пробрасывайте порт 1880 с роутера в интернет. Если нужен доступ из любого места, используйте VPN WireGuard: вы будете заходить в редактор как будто из домашней сети.
Первый поток: температура процессора
Соберём простой поток: раз в 5 секунд спрашиваем у системы температуру процессора и показываем её на панели отладки.
Узлы потока:
- inject — запускает поток по таймеру;
- exec — выполняет команду
vcgencmd measure_temp; - function — вытаскивает число из ответа вида
temp=52.1'C; - debug — показывает результат.
Поток можно импортировать готовым: меню (≡) → Import → вставьте JSON → Import → Deploy.
[
{"id":"a1","type":"tab","label":"Температура CPU","disabled":false,"info":""},
{"id":"a2","type":"inject","z":"a1","name":"каждые 5 с","props":[{"p":"payload"}],"repeat":"5","crontab":"","once":true,"onceDelay":"1","topic":"","payload":"","payloadType":"date","x":130,"y":80,"wires":[["a3"]]},
{"id":"a3","type":"exec","z":"a1","command":"vcgencmd measure_temp","addpay":"","append":"","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"","x":340,"y":80,"wires":[["a4"],[],[]]},
{"id":"a4","type":"function","z":"a1","name":"в число","func":"const m = /temp=([0-9.]+)/.exec(msg.payload);\nif (!m) return null;\nmsg.payload = parseFloat(m[1]);\nmsg.topic = 'cpu_temp';\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":530,"y":80,"wires":[["a5"]]},
{"id":"a5","type":"debug","z":"a1","name":"temp","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":690,"y":80,"wires":[]}
]
После нажатия Deploy на боковой панели отладки (значок жука) каждые 5 секунд будет появляться температура. В самом узле debug включён вывод в строку состояния под узлом.
На снимке поток уже импортирован и развёрнут: вкладка Температура CPU, четыре узла слева направо. У узла inject значок ⟳ означает повтор («каждые 5 с»). Узел exec с командой vcgencmd measure_temp имеет три выхода (обычный вывод, ошибки и код возврата), мы используем первый. Под узлом debug серый квадратик и число 46.6: это строка состояния, последнее полученное значение. Кнопка Deploy серая: это значит, что все изменения уже применены. Справа открыта панель Debug messages (значок жука): каждые 5 секунд в ней появляется строка со временем, именем узла (node: temp), темой cpu_temp и значением (47.2, 46.6). Подпись msg.payload : number показывает, что это число, а не текст, поэтому из него можно строить графики и сравнивать его с порогом.
Узел exec запускает в системе любую команду, поэтому с его помощью Node-RED легко дополнять скриптами и командами Raspberry Pi. Именно поэтому редактор нужно защитить паролем.
Работа с GPIO на Raspberry Pi 5
В палитре Node-RED есть узлы для GPIO (rpi-gpio). Они рассчитаны на прежние платы, а Raspberry Pi 5 устроен иначе: GPIO обслуживает микросхема RP1, и многие старые способы доступа (в частности, библиотеки RPi.GPIO и pigpio) на нём не работают. Работают ли встроенные узлы GPIO в вашей версии Node-RED и системы, проверьте экспериментом: подключите светодиод и попробуйте узел rpi-gpio out.
Надёжный путь, который не зависит от узлов GPIO: вынести работу с пинами в отдельную программу на Python, а Node-RED использовать для логики и связи. Есть два варианта.
- Разовые команды через узел
exec. Подходит для действий, после которых состояние не нужно удерживать: сделать снимок камеры, прочитать датчик, отправить сообщение. Узел запускает скрипт, скрипт отрабатывает и завершается. - Постоянная служба + MQTT. Если нужно удерживать состояние (например, реле должно оставаться включённым), скрипт на
gpiozeroдолжен работать постоянно: при завершении программыgpiozeroосвобождает линию, и реле возвращается в исходное состояние. Поэтому пишут программу, которая подписана на MQTT-тему и управляет реле (подключение реле), запускают её как службу (автозапуск), а Node-RED отправляет ей командыONиOFFчерез узелmqtt out.
MQTT: общий язык устройств
Самый универсальный способ соединить Node-RED с датчиками, ESP32 и Home Assistant — протокол MQTT. В палитре есть узлы mqtt in и mqtt out. Установка брокера Mosquitto на Raspberry Pi описана в статье про MQTT.
Типичная схема:
- Датчик публикует температуру в тему
home/room/temp; - Узел
mqtt inв Node-RED получает значение; - Узел
switchпроверяет условие (> 25); - Узел
mqtt outотправляет командуONв темуhome/fan/set.
В настройках узла mqtt укажите сервер localhost и порт 1883, если брокер стоит на этой же плате. Если вы включили пароль, как в статье про MQTT, откройте у брокера вкладку Security и впишите имя пользователя и пароль: без них брокер ответит not authorised.
Читаем температуру платы из MQTT
Если у вас уже работает служба из статьи про MQTT (скрипт publish.py отправляет температуру процессора в тему home/raspberrypi/cpu_temp каждые 10 секунд), Node-RED может получать эти значения. Это отличается от потока выше: там температуру спрашивал сам Node-RED командой vcgencmd, а здесь он только подписывается на тему, и источником может быть любая другая плата или датчик.
Имя пользователя и пароль для брокера возьмите из того же файла, который использует скрипт-издатель:
grep -E '^(USER|PASSWORD)' ~/mqtt/publish.py
Команда выведет строки вида USER = "homeuser" и PASSWORD = "…": нужны значения в кавычках. Импортируйте поток (меню ≡ → Import → вставьте JSON → Import), затем откройте узел брокера двойным щелчком по любому узлу mqtt in → значок карандаша рядом с полем Server → вкладка Security и впишите логин и пароль. Если в импортированном JSON они уже подставились, проверьте, что вместо ваш_пароль стоит ваш настоящий пароль. После этого нажмите Deploy.
[
{"id":"b1","type":"tab","label":"Температура CPU из MQTT","disabled":false,"info":""},
{"id":"b2","type":"mqtt-broker","name":"Mosquitto на плате","broker":"localhost","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"autoUnsubscribe":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closeRetain":"false","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willRetain":"false","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":"","credentials":{"user":"homeuser","password":"ваш_пароль"}},
{"id":"b3","type":"mqtt in","z":"b1","name":"","topic":"home/raspberrypi/cpu_temp","qos":"1","datatype":"auto-detect","broker":"b2","nl":false,"rap":true,"rh":0,"inputs":0,"x":160,"y":80,"wires":[["b4"]]},
{"id":"b4","type":"function","z":"b1","name":"в число","func":"msg.payload = parseFloat(msg.payload);\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":80,"wires":[["b5"]]},
{"id":"b5","type":"debug","z":"b1","name":"cpu_temp","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":560,"y":80,"wires":[]},
{"id":"b6","type":"mqtt in","z":"b1","name":"","topic":"home/raspberrypi/status","qos":"1","datatype":"auto-detect","broker":"b2","nl":false,"rap":true,"rh":0,"inputs":0,"x":160,"y":140,"wires":[["b7"]]},
{"id":"b7","type":"debug","z":"b1","name":"status","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":560,"y":140,"wires":[]}
]
Как устроен поток:
mqtt-broker— настройки подключения к брокеру: серверlocalhost(брокер на этой же плате), порт1883. В полеcredentialsлежат имя и пароль; в обычный экспорт потока Node-RED пароли не включает, поэтому в вашем экспорте этого поля не будет.mqtt inс темойhome/raspberrypi/cpu_tempподписывается на температуру. Так как скрипт отправляет значение с флагомretain, первое значение приходит сразу после Deploy, не дожидаясь очередной отправки.function«в число» превращает текст46.6в число: значения MQTT приходят строками, а для сравнений и графиков нужно число.debugпоказывает результат в панели отладки.- Второй
mqtt inчитает темуhome/raspberrypi/status(onlineилиoffline): так видно, жив ли издатель. Если скрипт остановить, брокер сам опубликуетoffline(«завещание»).
Настройка брокера на снимках. Узел брокера открывается двойным щелчком по Mosquitto на плате в списке Global Configuration Nodes (слева, в Explorer, или в боковой панели Configuration nodes справа). Число 2 рядом с именем показывает, что брокер используют два узла mqtt in. На вкладке Connection указаны сервер и порт 1883; на снимке стоит адрес платы 192.168.0.123, он тоже подходит, но localhost не зависит от IP-адреса, если брокер на этой же плате. Протокол MQTT V3.1.1, Client ID оставляют пустым (Node-RED придумает его сам), Keep Alive — 60 секунд.
На вкладке Security впишите имя пользователя и пароль из publish.py. Поле пароля показывает точки вместо символов; после сохранения Node-RED не показывает пароль, а хранит его зашифрованным в flows_cred.json. Нажмите Update, затем Deploy.
Всплывающее сообщение Successfully deployed — поток развёрнут. Под узлами mqtt in зелёный квадрат и слово connected: подключение к брокеру с вашим паролем прошло. Под узлом cpu_temp (debug) значение 47.4: это последняя температура, пришедшая по MQTT. В панели отладки справа каждые 10 секунд новое значение: интервал задаёт publish.py, а не Node-RED. Под вторым узлом debug слово offline: это тема status, которую брокер хранит с флагом retain. Скрипт отправляет online только при запуске, поэтому после остановки или перезапуска скрипта там остаётся offline до его следующего старта: на значение температуры это не влияет.
Если вместо значений в строке состояния узла mqtt in написано disconnected или в панели отладки ошибка not authorised, проверьте логин и пароль. Адрес localhost подходит только для брокера на этой же плате: для другой платы укажите её IP-адрес.
Панель с графиками (Dashboard)
Чтобы выводить значения на красивую веб-панель, установите расширение Dashboard 2.0. Откройте меню (≡) → Manage palette → вкладка Install, введите в поиск @flowfuse/node-red-dashboard и нажмите install напротив нужного пакета (на снимке версия 1.34.1; в списке есть похожие дополнения, например …-2-ui-led, они нужны не всем).
Node-RED предупредит, что перед установкой стоит прочитать документацию пакета: у некоторых узлов есть зависимости, и может потребоваться перезапуск. Обычно для Dashboard перезапуск не требуется: нажмите Install. Кнопка Open node information открывает страницу описания пакета.
Через несколько секунд в палитре появится раздел dashboard 2 с узлами chart, gauge, text, button и другими (в файле потока они называются ui-chart, ui-gauge и так далее). Начнём с графика: перетащите узел chart на рабочую область и соедините его вход с выходом узла function «в число» из потока про MQTT выше (на снимке от функции отходят две линии: к debug и к chart). Дважды щёлкните по chart: в поле Group нужно выбрать группу, а при первом запуске создать её (значок карандаша рядом с полем; страницу Page тоже можно оставить по умолчанию: на снимке ниже получились Page 1 и Group 1). Нажмите Deploy.
На снимке справа открыта вкладка Dashboard 2.0 (значок диаграммы в панели вкладок). В Layout видно дерево: страница Page 1 → группа Group 1 → виджет chart. Через это дерево меняют порядок страниц, групп и виджетов, а кнопка Open Dashboard открывает панель в новой вкладке браузера. Рядом вкладки Theming (цвета и оформление) и Client Data (подключённые клиенты).
Панель по умолчанию доступна по адресу http://IP-АДРЕС:1880/dashboard; первая страница открывается как /dashboard/page1, как на снимке ниже. Подробнее о настройке смотрите в документации расширения.
Это готовая панель: линейный график с температурой процессора. Под заголовком Group 1 название узла (chart) и легенда — имя ряда home/raspberrypi/cpu_temp: оно берётся из темы сообщения (msg.topic), поэтому в потоке из MQTT это полный путь темы. Если навести курсор на точку, появится подсказка с временем и значением (на снимке 45.8 в 21:27:30). По горизонтали время, по вертикали температура: шкала подбирается сама по значениям. Окно времени и число точек задают в настройках узла chart. Панель работает в любом браузере в вашей сети, в том числе на телефоне.
Кроме графика есть круговой индикатор (gauge) и текст (text): подключите их к тому же выходу function, и на панели появится текущее значение рядом с графиком.
Резервные копии
Всё, что вы нарисовали, хранится в каталоге ~/.node-red:
| Файл | Содержимое |
|---|---|
flows.json | Все ваши потоки |
flows_cred.json | Зашифрованные пароли и токены из узлов |
settings.js | Настройки, в том числе пароль редактора |
package.json | Список установленных дополнительных узлов |
Если вы включили режим Projects, то пока проект не создан, потоки лежат в обычном ~/.node-red/flows.json (как на снимке запуска выше). После создания проекта они переезжают в папку проекта ~/.node-red/projects/ИМЯ-ПРОЕКТА/ вместе с репозиторием git. Копируйте каталог целиком, а для переноса отдельного потока используйте Export в меню. О копировании системы целиком рассказано в статье про резервное копирование.
Если что-то не так
| Симптом | Что проверить |
|---|---|
| Редактор не открывается | sudo systemctl status nodered.service и node-red-log; порт 1880 и IP платы |
| Установка завершилась ошибкой | Подробности в /var/log/nodered-install.log; проверьте интернет и свободное место (df -h) |
| Служба не запускается | Журнал journalctl -u nodered -e: часто виноваты ошибки в settings.js или в потоках |
Узел exec не находит команду | Укажите полный путь к программе (например, /usr/bin/vcgencmd) |
| Узел GPIO не работает | Особенность Raspberry Pi 5: используйте Python-скрипт или MQTT |
Что дальше
- MQTT и Mosquitto на Raspberry Pi — брокер сообщений для Node-RED;
- Home Assistant на Raspberry Pi — готовая платформа умного дома;
- Telegram-бот на Raspberry Pi — уведомления из потоков.
Материалы
- Документация Node-RED для Raspberry Pi: nodered.org/docs/getting-started/raspberrypi
- Руководство по защите редактора: nodered.org/docs/user-guide/runtime/securing-node-red
- Dashboard 2.0: dashboard.flowfuse.com
















