Начало работы с Node-RED на Raspberry Pi

Начните работу с Node-RED на Raspberry Pi. Node-RED — это мощный инструмент с открытым исходным кодом для визуального программирования, предназначенный для создания приложений Интернета вещей (IoT). В этом руководстве мы рассмотрим, что такое Node-RED, как его установить и как использовать визуальный интерфейс для создания простого потока (flow).

Начало работы с Node-RED на Raspberry Pi

Предварительные требования

Мы предполагаем, что вы знакомы с Raspberry Pi, знаете, как установить операционную систему, и умеете устанавливать SSH-соединение с вашим Pi. Вы можете сначала ознакомиться со следующими руководствами:

Что такое Node-RED?

Node-RED — это мощный инструмент с открытым исходным кодом для создания приложений Интернета вещей (IoT) с целью упрощения программирования.

Node-RED работает в веб-браузере и использует визуальное программирование, которое позволяет соединять блоки кода, известные как узлы (nodes), вместе для выполнения задачи. Узлы, соединённые друг с другом, называются потоками (flows).

Обзор Node-RED

Почему Node-RED — отличное решение?

  • Node-RED имеет открытый исходный код и разработан IBM.

  • Raspberry Pi отлично работает с Node-RED.

  • Это инструмент визуального программирования, что делает его более доступным для широкого круга пользователей.

  • С Node-RED вы можете тратить больше времени на создание крутых вещей, вместо того чтобы проводить бесчисленные часы за написанием кода.

Что можно делать с Node-RED?

Node-RED упрощает:

  • Доступ к GPIO вашего RPi;

  • Установку MQTT-соединения с другими устройствами (Arduino, ESP8266, ESP32 и т.д.);

  • Создание адаптивного графического пользовательского интерфейса для ваших проектов;

  • Взаимодействие со сторонними сервисами (IFTTT.com, Adafruit.io, ThingSpeak, Home Assistant, InfluxDB и т.д.);

  • Получение данных из интернета (прогноз погоды, курсы акций, электронная почта и т.д.);

  • Создание событий по расписанию;

  • Сохранение и извлечение данных из базы данных.

Вот библиотека с некоторыми примерами потоков и узлов для Node-RED.

Установка Node-RED на Raspberry Pi

Установив SSH-соединение с вашим Raspberry Pi, введите следующую команду для установки Node-RED:

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Node-RED установлен по умолчанию на Raspberry Pi OS (32-bit). Тем не менее, рекомендуется выполнить предыдущую команду, чтобы установить необходимые пакеты и обновить его до самой последней версии. Вы получите сообщение, информирующее вас об этом. Нажмите Y и нажмите Enter для подтверждения.

Node-RED не установлен по умолчанию на Raspberry Pi OS (64-bit).

Затем вас спросят: «Хотите ли вы установить узлы, специфичные для Pi?» Нажмите Y и Enter.

Установка Node-RED займёт несколько минут. По завершении вы должны увидеть похожее сообщение в окне терминала:

Установка Node-RED на Raspberry Pi

Настройка параметров Node-RED

После установки рекомендуется настроить начальные параметры и опции. Выполните следующую команду:

node-red admin init
Настройка параметров Node-RED
  • Нажмите Enter, чтобы создать файл настроек Node-RED в /home/pi/.node-red/settings.js

  • Хотите ли вы настроить пользовательскую безопасность? Yes.

  • Введите имя пользователя и нажмите Enter (вам нужно будет запомнить его позже).

  • Введите пароль и нажмите Enter (вам нужно будет запомнить его позже).

  • Затем нужно определить права доступа пользователя. Мы установим полный доступ, убедитесь, что опция полного доступа выделена синим цветом, и нажмите Enter.

  • При желании можно добавить других пользователей с разными правами доступа. Пока мы создадим только одного пользователя. Вы всегда сможете добавить других пользователей позже.

  • Хотите ли вы включить функцию Projects? No.

  • Введите имя для файла потоков. Нажмите Enter, чтобы выбрать имя по умолчанию flows.json.

  • Укажите парольную фразу для шифрования файла учётных данных. Узнайте больше о том, что такое парольная фраза.

  • Выберите тему для редактора. Просто нажмите Enter, чтобы выбрать тему по умолчанию.

  • Нажмите Enter ещё раз, чтобы выбрать текстовый редактор по умолчанию.

  • Разрешить узлам Function загружать внешние модули? Yes.

Настройка Node-RED прошла успешно. Все параметры сохранены в settings.js.

Запуск Node-RED

Выполните следующую команду для запуска Node-RED:

node-red-start

Вы должны увидеть похожее сообщение в терминале:

Запуск Node-RED в окне терминала

Автозапуск Node-RED при загрузке

Чтобы Node-RED автоматически запускался при загрузке Pi, нужно ввести следующую команду. Это означает, что пока ваш Raspberry Pi включён, Node-RED будет работать.

sudo systemctl enable nodered.service

Теперь перезагрузите Pi, чтобы автозапуск вступил в силу. При следующей перезагрузке Raspberry Pi Node-RED уже будет запущен.

sudo reboot

Если позже вы захотите отключить автозапуск при загрузке, выполните:

sudo systemctl disable nodered.service

Для получения дополнительной информации о процессе установки ознакомьтесь с официальной документацией.

Доступ к Node-RED

Node-RED работает на порту 1880. Чтобы получить доступ к Node-RED, откройте браузер и введите IP-адрес Raspberry Pi, а затем :1880. Например:

192.164.1.106:1880

Чтобы узнать IP-адрес вашего Raspberry Pi, выполните следующую команду:

hostname -I
Получение IP-адреса Raspberry Pi

После ввода IP-адреса Raspberry Pi с :1880 в веб-браузере вы получите доступ к странице входа Node-RED. Войдите с помощью имени пользователя и пароля, которые вы установили ранее.

Страница входа Node-RED

Теперь у вас есть доступ к Node-RED. Вы можете начать создавать свои потоки.

Экран приветствия Node-RED

Обзор Node-RED

Давайте рассмотрим визуальный интерфейс Node-RED.

Визуальный интерфейс Node-RED

Основные разделы интерфейса Node-RED

На следующем изображении показаны основные разделы Node-RED с подписями.

Обзор Node-RED

Узлы (Nodes)

На левой боковой панели вы видите список блоков. Эти блоки называются узлами (nodes), и они разделены по функциональности. Если вы выберете узел, вы увидите, как он работает, на вкладке документации узлов (nodes documentation).

Узлы имеют входные и/или выходные порты для получения и отправки информации другим узлам. Например, узел получает входные данные от предыдущего узла, обрабатывает эту информацию и выводит другое сообщение в следующий узел, который что-то сделает с этой информацией. Информация, передаваемая между узлами, называется сообщением (message).

Поток (Flow)

Узлы являются строительными блоками потока (flow). Вы соединяете узлы вместе, чтобы создать поток, который будет выполнять определённую задачу. Поток (Flow) — это также вкладка в рабочем пространстве, где вы размещаете и организуете узлы.

В центре находится Поток (Flow), и именно здесь вы размещаете узлы.

Правая боковая панель

Боковая панель справа содержит несколько инструментов.

  • Information (Информация): показывает информацию о потоках;

  • Help (Справка): показывает документацию узлов;

  • Debug (Отладка): иконка с жуком открывает окно отладки, в котором отображаются сообщения, переданные отладочным узлам — это полезно для целей отладки;

  • Config nodes (Узлы конфигурации): иконка с шестерёнкой показывает информацию об узлах конфигурации. Узлы конфигурации не отображаются в основном рабочем пространстве, это специальные узлы, которые хранят многоразовые настройки, совместно используемые несколькими узлами в потоке.

Развёртывание (Deploy)

Кнопка развёртывания (Deploy) сохраняет все изменения, внесённые в поток, и запускает выполнение потока.

Создание простого потока

Чтобы вы привыкли к интерфейсу Node-RED, давайте создадим простой поток. Поток, который мы создадим, просто выводит сообщение в консоль отладки при срабатывании.

Перетащите узел inject и узел debug в свой поток и соедините их вместе.

Поток отладки Node-RED

Теперь давайте отредактируем узел inject. Дважды щёлкните по узлу. На рисунке ниже вы можете увидеть различные настройки, которые можно изменить.

В поле msg.payload выберите string и введите Hello. Затем нажмите Done.

Редактирование узла inject в Node-RED

Сообщения (msg) в Node-RED — это объекты JavaScript, которые могут иметь несколько свойств. Payload — это свойство по умолчанию, с которым работает большинство узлов. Вы можете думать о нём как об основном содержании сообщения, которое вы хотите отправить следующему узлу. В нашем случае мы просто отправляем текстовое сообщение.

Мы не будем редактировать узел debug, но вы можете дважды щёлкнуть по нему, чтобы проверить его свойства.

Узел debug в Node-RED

Вы можете выбрать выходные данные узла debug, это msg.payload, и указать, куда мы хотим отправить этот вывод. В нашем случае мы хотим отправить его в окно отладки.

Чтобы сохранить ваше приложение, нужно нажать кнопку Deploy в верхнем правом углу.

Кнопка Deploy в Node-RED

Ваше приложение сохранено.

Тестирование потока

Давайте протестируем наш простой поток. Откройте окно debug и нажмите на узел inject, чтобы запустить поток.

Пример Hello World в Node-RED

Как видите, наше сообщение выводится в окне debug, когда вы запускаете узел inject. Это очень простой пример, и он не делает ничего полезного. Однако цель этой статьи — познакомить вас с интерфейсом Node-RED. Совсем скоро вы начнёте создавать свои собственные потоки.

Экспорт и импорт узлов

В этом разделе вы узнаете, как сохранять свои узлы. Это полезно, если вам нужно:

  • Создать резервную копию вашего потока Node-RED

  • Перенести ваш поток на другой Raspberry Pi (или другую машину)

  • Поделиться своим проектом Node-RED с другими

Откройте главное меню и выберите опцию Export.

Экспорт узлов Node-RED

Откроется новое окно. Вы можете выбрать, хотите ли вы сохранить выбранные узлы, текущий поток или все потоки. Вы также можете скачать узлы в виде JSON-файла или скопировать JSON в буфер обмена.

Окно экспорта узлов Node-RED

Чтобы показать, как это работает, нажмите Download для выбранных узлов. Будет загружен JSON-файл с именем flows.json.

Вы можете импортировать эти узлы позже на другой Raspberry Pi или другую машину с установленным Node-RED, перейдя в главное меню и выбрав опцию Import.

В окне Import nodes вы можете загрузить JSON-файл или вставить необработанный JSON.

Импорт потока Node-RED

Установка узлов палитры

Как мы видели ранее, Node-RED поставляется с набором предустановленных узлов на палитре (левая боковая панель). Существует множество дополнительных узлов, которые можно установить и использовать для ваших проектов. Вы можете найти их в библиотеке Node-RED. Если для вашего проекта нужна какая-то конкретная задача, вероятно, для неё уже есть узел.

Например, если вам нужно добавить функцию отправки электронной почты в ваш поток, вы можете загуглить что-то вроде: «send email node-red node». Один из первых результатов поиска — эта страница с node-red-node-email. Он поставляется с несколькими узлами для отправки и получения электронной почты.

Если вы хотите установить эти узлы (или любые другие узлы), чтобы использовать их в своём потоке, перейдите в главное меню и выберите опцию Manage palette.

Управление палитрой Node-RED

Откроется следующее окно. Выберите вкладку install и найдите узлы, которые хотите установить, например, node-red-node-email.

Установка узлов Node-RED

Node-RED Dashboard

Node-RED Dashboard — это модуль, предоставляющий набор узлов в Node-RED для быстрого создания интерактивной панели мониторинга данных в реальном времени. Вы можете установить эти узлы через Menu > Manage Palette. Затем найдите node-red-dashboard и установите его.

Установка палитры Node-RED dashboard

После установки узлы dashboard появятся на палитре.

Узлы Node-RED dashboard

Узлы из раздела dashboard предоставляют виджеты, которые отображаются в пользовательском интерфейсе (UI) вашего приложения. Пользовательский интерфейс доступен по следующему URL-адресу:

http://IP_адрес_вашего_RPi:1880/ui

Например, в моём случае:

http://192.168.1.106:1880/ui
Экран приветствия Node-RED dashboard

На данный момент вы увидите предыдущий экран при доступе к UI. Это потому, что вы ещё не добавили ни одного узла dashboard в поток. Мы не будем рассматривать создание пользовательского интерфейса dashboard в этом руководстве. Если вы хотите узнать больше, прочитайте:

Заключение

Это руководство — краткое введение в Node-RED. Вы узнали, как установить Node-RED на Raspberry Pi, как создать простой поток, импортировать и экспортировать узлы, устанавливать узлы и устанавливать Node-RED Dashboard.

Вы также можете установить Node-RED на облачный сервер, например Digital Ocean. У нас есть руководство об этом: Доступ к Node-RED Dashboard из любой точки мира с помощью Digital Ocean.

Вам также может понравиться:

Node-RED очень полезен для IoT-проектов, использующих MQTT, поэтому вы можете ознакомиться со всеми нашими проектами MQTT: