Node-RED: различия между версиями

3379 байт добавлено ,  1 месяц назад
Нет описания правки
 
(не показано 11 промежуточных версий 3 участников)
Строка 1: Строка 1:
<languages/><translate>
<languages/><translate>
<!--T:19-->
<!--T:19-->
Строка 18: Строка 17:
{{Wbincludes:Installing Software In Console}}
{{Wbincludes:Installing Software In Console}}


== Установка ==  <!--T:23-->
{{Wbincludes:Installing Software In Console Catalog And Update}}
{{Wbincludes:Installing Software In Console}}
<!--T:24-->
Установите необходимые компоненты:
<syntaxhighlight lang="bash">
apt update && apt install -y nodejs git make g++ gcc build-essential
</syntaxhighlight>
<!--T:25-->
Запустите установку Node-RED:
:<syntaxhighlight lang="bash">
npm install -g --unsafe-perm node-red
</syntaxhighlight>
<!--T:26-->
Если потребуется обновить версию Node-RED, выполните команду установки ещё раз.
В релизах wb-2207 и старее устаревшая версия NodeJS, поэтому свежий Node-RED можно поставить только в docker — [[Node-RED_docker|инструкция по установке Node-RED в docker]].
Также в docker следует устанавливать если требуется версия более новая чем из пакетов.
== Создание сервиса == <!--T:27-->
<!--T:28-->
Для автозапуска Node-RED необходимо настроить сервис. Для этого в папке <code>/etc/systemd/system/</code> создайте файл <code>nodered.service</code>:
<!--T:29-->
<syntaxhighlight lang="bash">
nano /etc/systemd/system/nodered.service
</syntaxhighlight>
<!--T:30-->
Затем вставьте в этот файл строки:
<pre>
[Unit]
Description=Node-RED graphical event wiring tool
Wants=network.target


<!--T:31-->
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home


== Установка ==  <!--T:23-->
<!--T:32-->
Для установки Node-RED на контроллер Wiren Board подключитесь к нему по [[SSH]] и введите в консоль несколько команд.
Nice=5
Environment="NODE_OPTIONS=--max_old_space_size=256"
ExecStart=/usr/bin/env node-red $NODE_OPTIONS $NODE_RED_OPTIONS
KillSignal=SIGINT
Restart=on-failure
SyslogIdentifier=Node-RED
 
<!--T:33-->
[Install]
WantedBy=multi-user.target
</pre>
 
<!--T:34-->
Сохраните изменения и закройте файл. Теперь включите сервис и запустите его командой:
 
<!--T:35-->
<syntaxhighlight lang="bash">
systemctl enable nodered && systemctl start nodered
</syntaxhighlight>
 
<!--T:36-->
Проверьте статус сервиса командой, в выводе должна быть строчка <code>Active: active (running)</code>:
<syntaxhighlight lang="console">
# systemctl status nodered
● nodered.service - Node-RED graphical event wiring tool
  Loaded: loaded (/etc/systemd/system/nodered.service; enabled; vendor preset: enabled)
  Active: active (running) since Fri 2021-12-03 06:32:25 UTC; 24s ago
  Main PID: 2757 (node)
  CGroup: /system.slice/nodered.service
          └─2757 node /usr/bin/node-red --max_old_space_size=256
 
<!--T:37-->
Dec 03 06:32:25 wirenboard-AWQBNTYP systemd[1]: Started Node-RED graphical event wiring tool.
Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: 3 Dec 06:32:36 - [info]
Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: Welcome to Node-RED
Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: ===================
Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: 3 Dec 06:32:36 - [info] Node-RED version: v2.1.4
Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: 3 Dec 06:32:36 - [info] Node.js  version: v12.19.0
Dec 03 06:32:36 wirenboard-AWQBNTYP Node-RED[2757]: 3 Dec 06:32:36 - [info] Linux 5.10.35-wb6 arm LE
Dec 03 06:32:41 wirenboard-AWQBNTYP Node-RED[2757]: 3 Dec 06:32:41 - [info] Loading palette nodes
</syntaxhighlight>


# Установите docker по [[docker | инструкции]].
== Удаление == <!--T:38-->
# Создайте каталог под служебные файлы:
Если вам больше не нужен Node-RED, то его можно удалить:
# Остановите, отключите и удалите сервис:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
mkdir /mnt/data/root/nodered
systemctl stop nodered && systemctl disable nodered && rm /etc/systemd/system/nodered.service
chown -R 1000:1000 /mnt/data/root/nodered
chmod -R 777 /mnt/data/root/nodered
</syntaxhighlight>
</syntaxhighlight>
# Запустите образ nodered — docker автоматически загрузит его из интернет и запустит:
# Удалите сам Node-RED:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
docker run -d --name nodered --privileged --restart=unless-stopped -e TZ=Europe/Moscow -v /mnt/data/root/nodered:/data -e NODE_OPTIONS="--max_old_space_size=256"  --network=host nodered/node-red
npm -g remove node-red && npm -g remove node-red-admin && rm -R ~/.node-red
</syntaxhighlight>
</syntaxhighlight>


После установки и запуска, откройте браузер и введите [[How_to_find_IP_address | адрес своего контроллера]] в сети и порт 1880. Например: http://192.168.42.1:1880 Консоль можно закрыть.
<!--T:39-->
Node.js, тоже можно удалить, но убедитесь, что у вас не установлены другие програмы, которые его используют, например, zigbee2mqtt. Чтобы удалить node.js, выполните команду:
:<syntaxhighlight lang="bash">
apt remove nodejs
</syntaxhighlight>


==Веб-интерфейс Node-RED== <!--T:40-->
==Веб-интерфейс Node-RED== <!--T:40-->
Строка 44: Строка 132:
Инструкции по работе c Node-RED можно найти на [https://nodered.org/docs/getting-started/ сайте nodered.org]
Инструкции по работе c Node-RED можно найти на [https://nodered.org/docs/getting-started/ сайте nodered.org]


== WB Nodes ==  <!--T:42-->
== Ноды ''mqtt in'' и ''mqtt out'' (рекомендуется) == <!--T:49-->
=== Настройка подключения ===
[[Image: NodeRed_mqtt_nodes.jpg |300px|thumb|right| Ноды MQTT в Node-Red ]]
Для работы по MQTT используются ноды '''mqtt in''' и  '''mqtt out'''. Также вам понадобятся адреса топиков, взять их можно в веб-интерфейсе контроллера на странице [[Wiren Board Web Interface#mqtt-channels |MQTT-каналы]].
 
<!--T:50-->
Для настройки MQTT-соединения в Node-RED выполните следующие действия:
#Перетащите ноду '''mqtt in''' в рабочую область.
#Войдите в конфигурацию ноды и нажмите на '''Карандаш''' напротив поля '''Server'''.
#На вкладке '''Connecting''' задайте адрес брокера и номер порта.
#:В поле '''Name''' введите любое имя сервера.
#:На вкладке '''Security''' можно указать Имя пользователя и Пароль для подключения к брокеру. Если в качестве брокера выступает контроллер Wiren Board, это поле нужно оставить пустым.
#После заполнения всех полей нажмите кнопку '''Update'''. Созданный брокер теперь можно использовать для настройки всех подключений.
#Выберите созданные брокер из списка в поле '''Server'''.
#Введите адрес mqtt-топика в поле '''Topic'''.
#Нажмите кнопку '''Done'''.
 
<!--T:51-->
По такому же принципу настраивается нода '''mqtt out'''.
<gallery mode="packed" heights="150px" caption="Настройка MQTT-брокера (Server)>
Image: NodeRed_mqtt2.jpg | Вкладка ''Connecting''
Image: NodeRed_mqtt3.jpg  | Вкладка ''Security''
</gallery>
 
=== Отправка команд === <!--T:52-->
Для отправки команды контроллеру по MQTT используется нода '''mqtt out'''. При этом в поле '''Topic''' указывается адрес mqtt-топика контроллера, в который необходимо записать параметр. Нужно учитывать, что в конце адреса ноды '''mqtt out''' нужно написать <code>/on</code>, иначе параметр в топик не запишется. Например, <code>/devices/wb-mrgbw-d-fw3_129/controls/RGB Strip/on</code>. Подробнее читайте на странице [[MQTT | MQTT]].
<gallery mode="packed" heights="150px" caption="Настройка нод для работы с MQTT">
Image: NodeRed_mqtt4.jpg | Пример настройки ноды '''mqtt in'''
Image: mqtt_out_no.jpg  | Пример настройки ноды '''mqtt out'''
Image: NodeRed_mqtt1.jpg | Обмен данными через MQTT в Node-Red
</gallery>
Для отправки параметра в ноду '''mqtt out'''  можно использовать ноду '''inject'''.
#Перетащите ноду '''inject''' в рабочую область.
#Подключите ее ко входу ноды '''mqtt out'''.
#Зайдите в настройки ноды '''inject''' и задайте ''Имя'' ноды, ''Тип переменной'' и ее ''Значение''. Нажмите кнопку '''Done'''.
<gallery mode="packed" heights="130px">
Image: Inject1.jpg | Пример настроек ноды '''inject''' для управления дискретным параметром
Image: Inject2.jpg | Поле настройки периодов повторения отправки ноды '''inject'''
</gallery>
<gallery mode="packed" heights="100px">
Image: Node_inject.jpg | Пример использования ноды '''inject'''
</gallery>
 
<!--T:53-->
После настройки ввода и вывода можно обрабатывать данные внутри Node-RED и настроить использование сторонних сервисов, например, [[Node-RED_Alice | Умный дом с Алисой]].
 
<!--T:54-->
<gallery mode="packed" heights="150px">
Image: NodeRed_mqtt5.jpg | Пример управления с помощью Алисы
</gallery>
 
== WB Nodes (решение сообщества) ==  <!--T:42-->
 
[[Файл:Installing node-red-contrib-wirenboard.PNG|500px|thumb|right| Установка WB Nodes на контроллер Wiren Board]]
[[Файл:Installing node-red-contrib-wirenboard.PNG|500px|thumb|right| Установка WB Nodes на контроллер Wiren Board]]
[[Image: nr+wb-settings.png |600px|thumb|right|Настройка соединения с контроллером Wiren Board]]
[[Image: nr+wb-settings.png |600px|thumb|right|Настройка соединения с контроллером Wiren Board]]
Строка 106: Строка 246:
</syntaxhighlight>
</syntaxhighlight>


== Использование нод ''mqtt in'' и ''mqtt out'' для взаимодействия с Wiren Board == <!--T:49-->
Если вы ставили Node-RED в docker, воспользуйтесь инструкцией на странице [[Node-RED_docker|Установка Node-RED в docker]].
=== Настройка подключения ===
[[Image: NodeRed_mqtt_nodes.jpg |300px|thumb|right| Ноды MQTT в Node-Red ]]
Альтернативный вариант — использовать ноды '''mqtt in''' и  '''mqtt out'''. Для этого вам понадобятся адреса топиков, взять их можно в веб-интерфейсе контроллера на странице [[Wiren Board Web Interface#mqtt-channels |MQTT-каналы]].
 
<!--T:50-->
Для настройки MQTT-соединения в Node-RED выполните следующие действия:
#Перетащите ноду '''mqtt in''' в рабочую область.
#Войдите в конфигурацию ноды и нажмите на '''Карандаш''' напротив поля '''Server'''.
#На вкладке '''Connecting''' задайте адрес брокера и номер порта.
#:В поле '''Name''' введите любое имя сервера.
#:На вкладке '''Security''' можно указать Имя пользователя и Пароль для подключения к брокеру. Если в качестве брокера выступает контроллер Wiren Board, это поле нужно оставить пустым.
#После заполнения всех полей нажмите кнопку '''Update'''. Созданный брокер теперь можно использовать для настройки всех подключений.
#Выберите созданные брокер из списка в поле '''Server'''.
#Введите адрес mqtt-топика в поле '''Topic'''.
#Нажмите кнопку '''Done'''.
 
<!--T:51-->
По такому же принципу настраивается нода '''mqtt out'''.
<gallery mode="packed" heights="150px" caption="Настройка MQTT-брокера (Server)>
Image: NodeRed_mqtt2.jpg | Вкладка ''Connecting''
Image: NodeRed_mqtt3.jpg  | Вкладка ''Security''
</gallery>
 
=== Отправка команд === <!--T:52-->
Для отправки команды контроллеру по MQTT используется нода '''mqtt out'''. При этом в поле '''Topic''' указывается адрес mqtt-топика контроллера, в который необходимо записать параметр. Нужно учитывать, что в конце адреса ноды '''mqtt out''' нужно написать <code>/on</code>, иначе параметр в топик не запишется. Например, <code>/devices/wb-mrgbw-d-fw3_129/controls/RGB Strip/on</code>. Подробнее читайте на странице [[MQTT | MQTT]].
<gallery mode="packed" heights="150px" caption="Настройка нод для работы с MQTT">
Image: NodeRed_mqtt4.jpg | Пример настройки ноды '''mqtt in'''
Image: mqtt_out_no.jpg  | Пример настройки ноды '''mqtt out'''
Image: NodeRed_mqtt1.jpg | Обмен данными через MQTT в Node-Red
</gallery>
Для отправки параметра в ноду '''mqtt out'''  можно использовать ноду '''inject'''.
#Перетащите ноду '''inject''' в рабочую область.
#Подключите ее ко входу ноды '''mqtt out'''.
#Зайдите в настройки ноды '''inject''' и задайте ''Имя'' ноды, ''Тип переменной'' и ее ''Значение''. Нажмите кнопку '''Done'''.
<gallery mode="packed" heights="130px">
Image: Inject1.jpg | Пример настроек ноды '''inject''' для управления дискретным параметром
Image: Inject2.jpg | Поле настройки периодов повторения отправки ноды '''inject'''
</gallery>
<gallery mode="packed" heights="100px">
Image: Node_inject.jpg | Пример использования ноды '''inject'''
</gallery>
 
<!--T:53-->
После настройки ввода и вывода можно обрабатывать данные внутри Node-RED и настроить использование сторонних сервисов, например, [[Node-RED_Alice | Умный дом с Алисой]].
 
<!--T:54-->
<gallery mode="packed" heights="150px">
Image: NodeRed_mqtt5.jpg | Пример управления с помощью Алисы
</gallery>


== Примеры использования == <!--T:55-->
== Примеры использования == <!--T:55-->
wb_editors
890

правок