Node-RED:Введение/Запуск на платах BeagleBone

Материал из Онлайн справочника
Версия от 13:24, 5 апреля 2019; Myagkij (обсуждение | вклад) (→‎Обновление)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Запуск на платах BeagleBone [1]

Мы рекомендуем использовать SD-образы с последней версией операционной системы Debian 9 «Stretch». Загрузить их можно с сайта BeagleBoard.org. В 4-гигабайтных образах для плат BeagleBone уже есть предустановленная версия Node-RED. Кроме того, она настроена на автозапуск, поэтому вы можете просто загрузиться и ввести в адресную строку браузера IP-адрес своей BeagleBone с портом «1880».

Не рекомендуем использовать 2-гигабайтную консольную версию для старых eMMC-версий BBB. Но, если необходимо, ее можно установить вручную (см. инструкции ниже).

Команда для просмотра логов Node-RED:

sudo journalctl -f -u node-red -o cat

Команда для остановки Node-RED:

sudo service node-red stop

Команда для запуска Node-RED:

sudo service node-red start

Команда для настройки автозапуска Node-RED с каждой загрузкой:

sudo systemctl enable node-red.service

Команда для отключения автозапуска Node-RED при загрузке:

sudo systemctl disable node-red.service

Обновление

В последних версиях Debian-образов Node-RED и Node.js установлены по умолчанию. Самый простой способ обновить их – при помощи встроенного инструмента обновления:

sudo apt update
sudo apt upgrade nodejs bb-node-red-installer

Это должно перезапустить Node-RED, но вам также нужно будет обновить страницу редактора Node-RED в браузере.

Если у вас Debian 2017 9.2, то вам, возможно, сначала нужно будет запустить вот эту команду:

sudo apt full-upgrade


Примечание: НЕ ИСПОЛЬЗУЙТЕ обновляющий скрипт Pi/Debian «update-nodejs-and-nodered», т.к. он переустановит Node-RED и Node.js в других местах, что создаст конфликт и повредит существующие конфигурационные файлы systemd.


Настройка

По умолчанию BeagleBone настроена на запуск Node-RED от пользователя «root». Следовательно, файлы настроек для Node-RED – в частности, «settings.js» – будут находиться в папке «/root/.node-red», и для их редактирования вам понадобятся права пользователя «root» («sudo»).

У BeagleBone также есть systemd-сервис – «/lib/systemd/system/node-red.socket» – автоматически запускающий Node-RED, если заметит попытку подключиться. По умолчанию порт – это «1880», но если вам нужно его поменять, то это нужно сделать не только здесь, но и в файле «settings.js».

Ручная установка

Дисклеймер: Этот раздел устарел, т.к. появились образы со встроенным Node-RED (см. выше).


Перед тем, как начать

Если вы используете 2-гигабайтную eMMC-версию Debian, которая очень сильно обрезана, то сначала на нее, возможно, нужно будет установить некоторые важные утилиты:

sudo apt-get update
sudo apt-get install -y curl locales ntpdate avahi-utils python build-essential

Убедитесь, что у вас корректно задано местное время. У платы BeagleBone Black (BBB) нет RTC-часов, питаемых от батарейки, поэтому время нужно будет задавать с каждой загрузкой, чтобы BBB даже после перезагрузки или краша продолжала, например, ставить правильные время и дату в логах при считывании данных с какого-либо датчика:

ntpdate -b -s -u pool.ntp.org

Обновление Node.js

Рекомендуем использовать Node.js LTS 8.x или 10.x

sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y build-essential nodejs
hash -r

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

Самый простой способ установки Node-RED – при помощи npm (менеджера пакетов Node.js).

sudo npm i -g --unsafe-perm node-red

Примечание: Флаг «--unsafe-perm» используется здесь, потому что когда «node-gyp» пытается перекомпилировать какую-либо нативную библиотеку, то делает это от пользователя «nobody». Из-за этого ему часто не удается получить доступ к некоторым директориям. Это становится причиной появления предупреждений, которые выглядят как ошибки... но на самом деле являются ошибками лишь иногда. Запуск «node-gyp» с правами «root» с помощью этого флага позволяет этого избежать, а также видеть не мнимые, на настоящие ошибки.

Другие варианты установки – например, с GitHub для запуска в режиме разработчика – ищите тут.

Ноды для работы с BeagleBone

Существуют ноды, предназначенные специально для работы с платами BeagleBone, а также дающие прямой и максимально упрощенный доступ к IO-контактам платы. Самый простой способ установить их – напрямую через «npm».

Чтобы установить их вручную, воспользуйтесь следующей командой:

sudo npm install -g --unsafe-perm beaglebone-io johnny-five node-red-contrib-gpio

Примечание: Есть и другие ноды для работы специально с BBB, но они встроены в библиотеку, которая больше не поддерживается («octalbonescript»), поэтому мы не рекомендуем использовать их с заделом на будущее. Но стоит отметить, что они в том числе поддерживают функционал, которого нет в обычных GPIO-нодах.

sudo npm install -g --unsafe-perm node-red-node-beaglebone

Запуск Node-RED

Поскольку платы BeagleBone обладают ограниченной памятью, советуем запускать Node-RED с помощью следующей команды:

node-red-pi

Автозапуск

Самый простой способ настроить автозапуск Node-RED при загрузке BeagleBone – при помощи встроенного systemd. Для этого нам нужно создать файл «/lib/systemd/system/nodered.service» следующего содержания:

# Сервисный файл systemd для запуска Node-RED
[Unit]
Description=Node-RED graphical event wiring tool.
Wants=network.target
Documentation=http://nodered.org/docs/hardware/raspberrypi.html
[Service]
Type=simple
# Запускаем с правами пользователя «root»,
# чтобы получить доступ к GPIO-контактам:
User=root
Group=root
Nice=5
Environment="NODE_OPTIONS=--max-old-space-size=128"
#Environment="NODE_RED_OPTIONS=-v"
ExecStart=/usr/bin/env node-red-pi $NODE_OPTIONS $NODE_RED_OPTIONS
KillSignal=SIGINT
Restart=on-failure
SyslogIdentifier=Node-RED
[Install]
WantedBy=multi-user.target

Далее перезагружаем настройки systemd и включаем сервис:

sudo systemctl daemon-reload
sudo systemctl enable nodered.service

Systemd использует для логов «/var/log/system.log». Команда для фильтрации логов:

sudo journalctl -f -u nodered -o cat

Использование редактора

Теперь, когда Node-RED запущен – и с условием, что вы не меняли имя хоста – введите в адресную строку браузера «http://beaglebone.local:1880» и нажмите на  ↵ Enter .

См.также

Внешние ссылки