Node-RED на Raspberry Pi 5: установка, первый поток и автозапуск

Node-RED — это визуальный конструктор логики: вместо кода вы рисуете схему из блоков («узлов»), соединяя их линиями. Один узел принимает сообщение от датчика, другой его обрабатывает, третий отправляет в MQTT или в Telegram. Для домашней автоматики это удобно: схему видно целиком, а изменить поведение можно за минуту прямо в браузере.

Raspberry Pi 5 подходит для Node-RED с запасом. В статье установим программу официальным скриптом, настроим автозапуск и защиту, соберём первый поток (температура процессора) и разберём, как Node-RED работает с MQTT, дашбордами и вашими скриптами на Python.


Что понадобится


Установка

Для 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: скрипт установки Node-RED отмечает галочками шаги Install Node v22.23.4, Install Node-RED core 5.0.9, Install extra Pi nodes, Update systemd script; ниже время начала и конца и предупреждение WARNING

Так выглядит вывод скрипта на 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.

Терминал Raspberry Pi 5: node-red-start запускает службу nodered.service; в журнале версия Node-RED 5.0.9, Node.js 22.23.4, файл настроек settings.js, файл потоков flows.json, предупреждение о ключе шифрования и строки Started flows

Что видно на снимке:

  • Сверху подсказка: адрес редактора 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 при первом входе редактор может предложить создать проект (имя и описание): создайте его, и дальше потоки будут храниться в этом проекте.

Браузер: страница входа в редактор Node-RED по адресу http://192.168.0.123:1880 с полями Username и Password и кнопкой Login

Так выглядит страница входа: логин и пароль, которые вы задали в мастере (в примере логин admin). Браузер пишет Not Secure (небезопасно) в адресной строке: соединение идёт по обычному http без шифрования. Для домашней сети это нормально, но пароль передаётся по сети открытым текстом, поэтому снаружи редактор открывать нельзя.

Браузер: редактор Node-RED после входа, слева Explorer с Flow 1 и палитра узлов inject, debug, complete, catch, status, справа панель Information, поверх окно Welcome to Node-RED 5.0 с кнопкой Start

После входа открывается редактор. Вверху вкладка потока 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 и задаёт вопросы. Вот как выглядит весь диалог (пароль мастер не показывает: звёздочки печатаются вместо символов):

Терминал Raspberry Pi 5: мастер настроек Node-RED спрашивает о телеметрии, защите редактора (имя admin, пароль скрыт звёздочками, full access), режиме Projects, теме и редакторе monaco, внешних модулях в Function

Тот же диалог текстом:

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 InformationYesОтправлять разработчикам обезличенную статистику и получать уведомления о новых версиях. Данные ваших потоков и пользователей не передаются. Можно ответить No
Do you want to setup user security?YesГлавный вопрос. Включает вход по имени и паролю. Отвечайте Yes
Username, Passwordadmin, парольЛогин и пароль для входа в редактор. Пароль хранится в settings.js в виде хэша, не открытым текстом. Придумайте длинный и неповторяющийся
User permissionsfull 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 editordefaultТема оформления. Другие темы требуют установки отдельного пакета
Select the text editor componentmonacoВстроенный редактор кода в узле 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 секунд спрашиваем у системы температуру процессора и показываем её на панели отладки.

Узлы потока:

  1. inject — запускает поток по таймеру;
  2. exec — выполняет команду vcgencmd measure_temp;
  3. function — вытаскивает число из ответа вида temp=52.1'C;
  4. 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 включён вывод в строку состояния под узлом.

Редактор Node-RED на вкладке «Температура CPU»: узлы inject «каждые 5 с», exec vcgencmd measure_temp, function «в число» и debug temp со значением 46.6 под узлом; справа в панели Debug messages значения 47.2 и 46.6 с временем

На снимке поток уже импортирован и развёрнут: вкладка Температура 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 использовать для логики и связи. Есть два варианта.

  1. Разовые команды через узел exec. Подходит для действий, после которых состояние не нужно удерживать: сделать снимок камеры, прочитать датчик, отправить сообщение. Узел запускает скрипт, скрипт отрабатывает и завершается.
  2. Постоянная служба + 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.

Типичная схема:

  1. Датчик публикует температуру в тему home/room/temp;
  2. Узел mqtt in в Node-RED получает значение;
  3. Узел switch проверяет условие (> 25);
  4. Узел 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 секунд.

Окно Edit mqtt-broker node в Node-RED: имя «Mosquitto на плате», вкладка Connection, Server 192.168.0.123, Port 1883, Connect automatically, протокол MQTT V3.1.1, Keep Alive 60, Use clean session

На вкладке Security впишите имя пользователя и пароль из publish.py. Поле пароля показывает точки вместо символов; после сохранения Node-RED не показывает пароль, а хранит его зашифрованным в flows_cred.json. Нажмите Update, затем Deploy.

Окно Edit mqtt-broker node в Node-RED, вкладка Security: Username homeuser и поле Password, заполненное точками
Редактор Node-RED, вкладка «Температура CPU из MQTT»: уведомление Successfully deployed, узлы mqtt in home/raspberrypi/cpu_temp и home/raspberrypi/status со статусом connected, под debug значения 47.4 и offline

Всплывающее сообщение 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, они нужны не всем).

Окно User Settings в Node-RED, раздел Palette, вкладка Install: поиск @flowfuse/node-red-dashboard, в списке пакет версии 1.34.1 с кнопкой install

Node-RED предупредит, что перед установкой стоит прочитать документацию пакета: у некоторых узлов есть зависимости, и может потребоваться перезапуск. Обычно для Dashboard перезапуск не требуется: нажмите Install. Кнопка Open node information открывает страницу описания пакета.

Node-RED: окно Installing '@flowfuse/node-red-dashboard' с предупреждением прочитать документацию и кнопками Cancel, Open node information, Install

Через несколько секунд в палитре появится раздел dashboard 2 с узлами chart, gauge, text, button и другими (в файле потока они называются ui-chart, ui-gauge и так далее). Начнём с графика: перетащите узел chart на рабочую область и соедините его вход с выходом узла function «в число» из потока про MQTT выше (на снимке от функции отходят две линии: к debug и к chart). Дважды щёлкните по chart: в поле Group нужно выбрать группу, а при первом запуске создать её (значок карандаша рядом с полем; страницу Page тоже можно оставить по умолчанию: на снимке ниже получились Page 1 и Group 1). Нажмите Deploy.

Редактор Node-RED: mqtt in home/raspberrypi/cpu_temp, function «в число», узел chart из палитры dashboard 2 и debug cpu_temp; справа вкладка Dashboard 2.0 с деревом Page 1, Group 1, chart и кнопками Edit Settings и Open Dashboard

На снимке справа открыта вкладка Dashboard 2.0 (значок диаграммы в панели вкладок). В Layout видно дерево: страница Page 1 → группа Group 1 → виджет chart. Через это дерево меняют порядок страниц, групп и виджетов, а кнопка Open Dashboard открывает панель в новой вкладке браузера. Рядом вкладки Theming (цвета и оформление) и Client Data (подключённые клиенты).

Панель по умолчанию доступна по адресу http://IP-АДРЕС:1880/dashboard; первая страница открывается как /dashboard/page1, как на снимке ниже. Подробнее о настройке смотрите в документации расширения.

Браузер: страница Dashboard 2.0 по адресу 192.168.0.123:1880/dashboard/page1, группа Group 1 с линейным графиком home/raspberrypi/cpu_temp и подсказкой со значением 45.8 на 21:27:30

Это готовая панель: линейный график с температурой процессора. Под заголовком 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 — уведомления из потоков.

Материалы

Оставьте комментарий

Отправляя комментарий, вы соглашаетесь с обработкой ваших данных (имя, адрес электронной почты, текст комментария) в соответствии с политикой конфиденциальности.