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

Материал из Wiren Board
(Новая страница: «A detailed description, instructions and examples of use can be found on the site [https://nodered.org/ nodered.org], and community support in the telegram channel [https://t.me/SprutAI_NodeRED Node-RED].»)
(не показана 21 промежуточная версия этого же участника)
Строка 85: Строка 85:
</syntaxhighlight>
</syntaxhighlight>


== Delete ==
== Удаление ==
If you no longer need Node-RED, then you can remove it:
Если вам больше не нужен Node-RED, то его можно удалить:
# Stop, disable and remove the service:
# Остановите, отключите и удалите сервис:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
systemctl stop nodered && systemctl disable nodered && rm /etc/systemd/system/nodered.service
systemctl stop nodered && systemctl disable nodered && rm /etc/systemd/system/nodered.service
</syntaxhighlight>
</syntaxhighlight>
# Remove Node-RED:
# Удалите сам Node-RED:
#:<syntaxhighlight lang="bash">
#:<syntaxhighlight lang="bash">
npm -g remove node-red && npm -g remove node-red-admin && rm -R ~/.node-red
npm -g remove node-red && npm -g remove node-red-admin && rm -R ~/.node-red
</syntaxhighlight>
</syntaxhighlight>


Node.js can also be removed, but make sure you don't have other programs installed that use it, such as zigbee2mqtt. To remove node.js run the command:
Node.js, тоже можно удалить, но убедитесь, что у вас не установлены другие програмы, которые его используют, например, zigbee2mqtt. Чтобы удалить node.js, выполните команду:
:<syntaxhighlight lang="bash">
:<syntaxhighlight lang="bash">
apt remove nodejs
apt remove nodejs
</syntaxhighlight>
</syntaxhighlight>


==Node-RED Web Interface==
==Веб-интерфейс Node-RED==
After starting the service, open a browser and enter the address of your controller on the network and port 1880.
После запуска сервиса откройте браузер и введите адрес своего контроллера в сети и порт 1880.  
For example: http://192.168.42.1:1880
Например: http://192.168.42.1:1880


Instructions for working with Node-RED can be found at [https://nodered.org/docs/getting-started/ site nodered.org]
Инструкции по работе c Node-RED можно найти на [https://nodered.org/docs/getting-started/ сайте nodered.org]


== WB Nodes ==
== WB Nodes ==
[[File:Installing node-red-contrib-wirenboard.PNG|500px|thumb|right| Installing WB Nodes on a Wiren Board Controller]]
[[Файл:Installing node-red-contrib-wirenboard.PNG|500px|thumb|right| Установка WB Nodes на контроллер Wiren Board]]
[[Image: nr+wb-settings.png |600px|thumb|right|Configuring the connection to the Wiren Board controller]]
[[Image: nr+wb-settings.png |600px|thumb|right|Настройка соединения с контроллером Wiren Board]]
To simplify the interaction of Node-RED with the Wiren Board controller, the user [https://support.wirenboard.com/t/node-red-contrib-wirenboard/2019 Andrej_Popov] wrote the module <code>node-red-contrib-wirenboard</code>.
Чтобы упростить взаимодействие Node-RED с контроллером Wiren Board, пользователь [https://support.wirenboard.com/t/node-red-contrib-wirenboard/2019 Andrej_Popov] написал модуль <code>node-red-contrib-wirenboard</code>.


=== Installation ===
=== Установка ===
Install it via Node-RED web-interface:
Установим его через [[#Веб-интерфейс Node-RED | веб-интерфейс Node-RED]]:
{{Node-RED Installing plugin
{{Node-RED Installing plugin
|search= wirenboard
|search= wirenboard
|name= node-red-contrib-wirenboard
|name= node-red-contrib-wirenboard
|en= true
}}
}}


After installation, the Wiren Board section will appear in the left panel.
После установки, в левой панели появится секция Wiren Board.
=== Setting ===
=== Настройка ===
After you have installed WB Nodes, you need to set up a connection to the MQTT broker of the Wiren Board controller:
После того как вы установили WB Nodes, вам нужно настроить соединение с MQTT-брокером контроллера Wiren Board:
# Add a '''WB-input''' node to the workspace, which is located in the left panel, in the '''Wiren Board''' section.
# Добавьте в рабочую область ноду '''WB-input''', которая находится в левой панели, в секции '''Wiren Board'''.
# Double click on it, the '''Edit in node''' window will open.
# Дважды кликните на ней, откроется окно '''Edit in node'''.
# Find the field '''Server''' and click on the pencil button. The '''Add new wirenboard-server config node''' window will open.
# Найдите в нём поле '''Server''' и нажмите на кнопку с карандашом. Откроется окно '''Add new wirenboard-server config node'''.
# Fill in the '''Name''', '''Host''' and '''MQTT Port''' fields. If Node-RED is installed on the controller, enter <code>localhost</code> in the Host field. Enter an arbitrary name in the '''Name''' field, and 1883 in the '''MQTT Port''' field.
# Заполните поля '''Name''', '''Host''' и '''MQTT Port'''. Если Node-RED установлен на контроллере — в поле Host пропишите <code>localhost</code>. В поле '''Name''' укажите произвольное имя, а в поле '''MQTT Port''' — 1883.
# Save the server settings by clicking on the '''Done''' button.
# Сохраните настройки сервера нажатием на кнопку '''Done'''.
# Close the '''Edit in node''' window by clicking on '''Cancel'''.
# Закройте окно '''Edit in node''' нажатием на '''Cancel'''.
{{note|info| After setting up the connection, apply the server setting by clicking the '''Deploy''' button on the top right. Only after that the list of channels of the Wiren Board controller will be available.}}
{{note|info| После настройки подключения, примените настройку сервера нажатием кнопки '''Deploy''' справа вверху. Только после этого будет доступен список каналов контроллера Wiren Board.}}


You have set up WB Nodes and can write automations using Node-RED.
Вы настроили WB Nodes и можете писать автоматизации с использованием Node-RED.


=== Checking settings ===
=== Проверка настроек ===
To check if the settings are correct:
Чтобы проверить правильность настроек:
# Add any node from the Wiren Board group to the workspace, for example, '''WB-input'''.
# Добавьте в рабочую область любую ноду из группы Wiren Board, например, '''WB-input'''.
# Double click on the '''WB-input''' node, the '''Edit in node''' window will open.
# Дважды кликните на ноде '''WB-input''', откроется окно '''Edit in node'''.
# In the '''Edit in node''' window, click the '''Refresh Device List''' button.
# В окне '''Edit in node''' нажмите кнопку '''Refresh Device List'''.


If the connection is configured correctly, then the drop-down list of the '''Сhannel''' field will display a list of channels available for use.
Если соединение настроено верно, то в выпадающем списке поля '''Сhannel''' появится список доступных для использования каналов.


=== Examples ===
=== Примеры ===
WB-Nodes comes with examples for [[Node-RED Apple HomeKit | Apple HomeKit]] and Yandex.Alice, you can find them in '''Menu''' → '''Import''' → '''Examples'''.
В комплекте с WB-Nodes есть примеры для [[Node-RED Apple HomeKit | Apple HomeKit]] и Яндекс.Алисы, найти их можно в '''Menu''' → '''Import''' → '''Examples'''.
<gallery mode="packed" heights="200px" caption="Examples from WB-Nodes">
<gallery mode="packed" heights="200px" caption="Примеры из комплекта WB-Nodes">
Image: WB-Nodes Examples 1.png | List of examples
Image: WB-Nodes Examples 1.png | Список примеров
Image: WB-Nodes Examples 2.png | Example in workspace
Image: WB-Nodes Examples 2.png | Пример в рабочей области
</gallery>
</gallery>


== Using the ''mqtt in'' and ''mqtt out'' nodes to interact with the Wiren Board ==
== Использование нод ''mqtt in'' и ''mqtt out'' для взаимодействия с Wiren Board ==
=== Connection setup ===
=== Настройка подключения ===
[[Image: NodeRed_mqtt_nodes.jpg |300px|thumb|right| MQTT Nodes in Node-Red ]]
[[Image: NodeRed_mqtt_nodes.jpg |300px|thumb|right| Ноды MQTT в Node-Red ]]
An alternative is to use the '''mqtt in''' and '''mqtt out''' nodes. To do this, you need the addresses of the topics, you can get them in the controller web interface on the [[Wiren Board Web Interface#mqtt-channels |MQTT-channels]] page.
Альтернативный вариант — использовать ноды '''mqtt in''' и  '''mqtt out'''. Для этого вам понадобятся адреса топиков, взять их можно в веб-интерфейсе контроллера на странице [[Wiren Board Web Interface#mqtt-channels |MQTT-каналы]].


To set up an MQTT connection in Node-RED, follow these steps:
Для настройки MQTT-соединения в Node-RED выполните следующие действия:
#Drag the '''mqtt in''' node to the workspace.
#Перетащите ноду '''mqtt in''' в рабочую область.  
#Enter the node configuration and click on the '''Pencil''' next to the '''Server''' field.
#Войдите в конфигурацию ноды и нажмите на '''Карандаш''' напротив поля '''Server'''.  
#On the '''Connecting''' tab, set the broker address and port number.
#На вкладке '''Connecting''' задайте адрес брокера и номер порта.  
#:In the '''Name''' field, enter any server name.
#:В поле '''Name''' введите любое имя сервера.  
#:On the '''Security''' tab, you can specify the Username and Password to connect to the broker. If the Wiren Board controller acts as a broker, this field must be left blank.
#:На вкладке '''Security''' можно указать Имя пользователя и Пароль для подключения к брокеру. Если в качестве брокера выступает контроллер Wiren Board, это поле нужно оставить пустым.
#After filling in all the fields, click the '''Update''' button. The created broker can now be used to set up all connections.
#После заполнения всех полей нажмите кнопку '''Update'''. Созданный брокер теперь можно использовать для настройки всех подключений.
#Select the created broker from the list in the '''Server''' field.
#Выберите созданные брокер из списка в поле '''Server'''.
#Enter mqtt-topic address in the '''Topic''' field.
#Введите адрес mqtt-топика в поле '''Topic'''.  
#Press the '''Done''' button.
#Нажмите кнопку '''Done'''.


The '''mqtt out''' node is configured according to the same principle.
По такому же принципу настраивается нода '''mqtt out'''.
<gallery mode="packed" heights="150px" caption="Configuring MQTT Broker (Server)>
<gallery mode="packed" heights="150px" caption="Настройка MQTT-брокера (Server)>
Image: NodeRed_mqtt2.jpg | ''Connecting'' tab
Image: NodeRed_mqtt2.jpg | Вкладка ''Connecting''
Image: NodeRed_mqtt3.jpg | Tab ''Security''
Image: NodeRed_mqtt3.jpg | Вкладка ''Security''
</gallery>
</gallery>


=== Sending commands ===
=== Отправка команд ===
The '''mqtt out''' node is used to send a command to the controller via MQTT. In this case, the '''Topic''' field specifies the address of the mqtt-topic of the controller, in which the parameter must be written. Please note that at the end of the node address '''mqtt out''' you need to write <code>/on</code>, otherwise the parameter will not be written to the topic. For example, <code>/devices/wb-mrgbw-d-fw3_129/controls/RGB Strip/on</code>. Read more on the [[MQTT | MQTT]].
Для отправки команды контроллеру по 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="Configuring nodes to work with MQTT">
<gallery mode="packed" heights="150px" caption="Настройка нод для работы с MQTT">
Image: NodeRed_mqtt4.jpg | '''mqtt in''' node configuration example
Image: NodeRed_mqtt4.jpg | Пример настройки ноды '''mqtt in'''
Image: mqtt_out_no.jpg | '''mqtt out''' node setup example
Image: mqtt_out_no.jpg | Пример настройки ноды '''mqtt out'''
Image: NodeRed_mqtt1.jpg | Communication via MQTT in Node-Red
Image: NodeRed_mqtt1.jpg | Обмен данными через MQTT в Node-Red
</gallery>
</gallery>
To send a parameter to the '''mqtt out''' node, you can use the '''inject''' node.
Для отправки параметра в ноду '''mqtt out''' можно использовать ноду '''inject'''.
#Drag the '''inject''' node to the workspace.
#Перетащите ноду '''inject''' в рабочую область.
#Connect it to the input of the '''mqtt out''' node.
#Подключите ее ко входу ноды '''mqtt out'''.
#Go to the settings of the '''inject''' node and set the ''Name'' of the node, the ''Variable Type'' and its ''Value''. Click the '''Done''' button.
#Зайдите в настройки ноды '''inject''' и задайте ''Имя'' ноды, ''Тип переменной'' и ее ''Значение''. Нажмите кнопку '''Done'''.
<gallery mode="packed" heights="130px">
<gallery mode="packed" heights="130px">
Image: Inject1.jpg | An example of '''inject''' node settings for controlling a discrete parameter
Image: Inject1.jpg | Пример настроек ноды '''inject''' для управления дискретным параметром
Image: Inject2.jpg | '''inject''' node retry period setting field
Image: Inject2.jpg | Поле настройки периодов повторения отправки ноды '''inject'''
</gallery>
</gallery>
<gallery mode="packed" heights="100px">
<gallery mode="packed" heights="100px">
Image: Node_inject.jpg | An example of using the '''inject''' node
Image: Node_inject.jpg | Пример использования ноды '''inject'''
</gallery>
</gallery>


After setting up input and output, you can process data inside Node-RED and set up the use of third-party services, for example, [[Node-RED_Alice | Smart home with Alice]].
После настройки ввода и вывода можно обрабатывать данные внутри Node-RED и настроить использование сторонних сервисов, например, [[Node-RED_Alice | Умный дом с Алисой]].


<gallery mode="packed" heights="150px">
<gallery mode="packed" heights="150px">
Image: NodeRed_mqtt5.jpg | Alice control example
Image: NodeRed_mqtt5.jpg | Пример управления с помощью Алисы
</gallery>
</gallery>


== Usage examples ==
== Примеры использования ==
Examples of using Node-RED with WB-Nodes on Wiren Board controllers:
Примеры использования Node-RED с WB-Nodes на контроллерах Wiren Board:
* [[Node-RED_Telegram | Telegram bot settings]].
* [[Node-RED_Telegram | Настройка Telegram-бота]].
* [[Node-RED_Alice | Setting up Alice on the Wiren Board controller]].
* [[Node-RED_Alice | Настройка Алисы на контроллере Wiren Board]].
* [[Node-RED Apple HomeKit | Setting up Apple HomeKit on a Wiren Board controller]].
* [[Node-RED Apple HomeKit | Настройка Apple HomeKit на контроллере Wiren Board]].
* [[Node-RED Dashboards|Creating Dashboards in Node-RED]].
* [[Node-RED Dashboards|Создание панелей (Dashboards) в Node-RED]].
* [https://youtu.be/cKQmU4LZo4c Video from our partner: Wiren Board + Node-RED]
* [https://youtu.be/cKQmU4LZo4c Видео от нашего партнёра: Wiren Board + Node-RED]

Версия 21:29, 20 октября 2022

Другие языки:
Node-RED on the Wiren Board controller

Description

Wiren Board Node-RED Video Tutorial by SetPoint

Node-RED is a visual programming tool based on Node.js and developed and maintained by an open community.

A detailed description, instructions and examples of use can be found on the site nodered.org, and community support in the telegram channel Node-RED.

Copy the commands from the instructions, paste them into controller console using the Shift+Insert keys and run with the Enter key. In case of errors, carefully read the output, there will be instructions and hints.

Installation

To install Node-RED 2.2 on a Wiren Board controller, connect to it via SSH and enter a few commands into the console.

Install the necessary components:

apt update && apt install -y nodejs git make g++ gcc build-essential

Run the Node-RED installation:

npm install -g --unsafe-perm node-red@2.2

If you need to upgrade your Node-RED version, run the install command again.

Creating a project

To autostart Node-RED, you need to configure the service. To do this, in the /etc/systemd/system/ folder, create the nodered.service file:

mcedit /etc/systemd/system/nodered.service

Then paste the lines into this file:

[Unit]
Description=Node-RED graphical event wiring tool
Wants=network.target

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home

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

[Install]
WantedBy=multi-user.target

Save changes and close the file. Now enable the service and start it with the command:

systemctl enable nodered && systemctl start nodered

Check the status of the service with the command, the output should contain the line Active: active (running):

# 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

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

Удаление

Если вам больше не нужен Node-RED, то его можно удалить:

  1. Остановите, отключите и удалите сервис:
    systemctl stop nodered && systemctl disable nodered && rm /etc/systemd/system/nodered.service
    
  2. Удалите сам Node-RED:
    npm -g remove node-red && npm -g remove node-red-admin && rm -R ~/.node-red
    

Node.js, тоже можно удалить, но убедитесь, что у вас не установлены другие програмы, которые его используют, например, zigbee2mqtt. Чтобы удалить node.js, выполните команду:

apt remove nodejs

Веб-интерфейс Node-RED

После запуска сервиса откройте браузер и введите адрес своего контроллера в сети и порт 1880. Например: http://192.168.42.1:1880

Инструкции по работе c Node-RED можно найти на сайте nodered.org

WB Nodes

Установка WB Nodes на контроллер Wiren Board
Настройка соединения с контроллером Wiren Board

Чтобы упростить взаимодействие Node-RED с контроллером Wiren Board, пользователь Andrej_Popov написал модуль node-red-contrib-wirenboard.

Установка

Установим его через веб-интерфейс Node-RED:

  1. Зайдите в веб-интерфейс Node-RED.
  2. В правом верхнем углу вызовите меню.
  3. В открывшемся окне выберите вкладку Управление палитрой (Manager palette).
  4. Перейдите на вкладку Установка (Install), введите в поле поиска wirenboard и нажмите на клавиатуре Enter.
  5. Установите пакет с названием node-red-contrib-wirenboard.
  6. Закройте окно с настройками. Установка модуля завершена.

После установки, в левой панели появится секция Wiren Board.

Настройка

После того как вы установили WB Nodes, вам нужно настроить соединение с MQTT-брокером контроллера Wiren Board:

  1. Добавьте в рабочую область ноду WB-input, которая находится в левой панели, в секции Wiren Board.
  2. Дважды кликните на ней, откроется окно Edit in node.
  3. Найдите в нём поле Server и нажмите на кнопку с карандашом. Откроется окно Add new wirenboard-server config node.
  4. Заполните поля Name, Host и MQTT Port. Если Node-RED установлен на контроллере — в поле Host пропишите localhost. В поле Name укажите произвольное имя, а в поле MQTT Port — 1883.
  5. Сохраните настройки сервера нажатием на кнопку Done.
  6. Закройте окно Edit in node нажатием на Cancel.

После настройки подключения, примените настройку сервера нажатием кнопки Deploy справа вверху. Только после этого будет доступен список каналов контроллера Wiren Board.

Вы настроили WB Nodes и можете писать автоматизации с использованием Node-RED.

Проверка настроек

Чтобы проверить правильность настроек:

  1. Добавьте в рабочую область любую ноду из группы Wiren Board, например, WB-input.
  2. Дважды кликните на ноде WB-input, откроется окно Edit in node.
  3. В окне Edit in node нажмите кнопку Refresh Device List.

Если соединение настроено верно, то в выпадающем списке поля Сhannel появится список доступных для использования каналов.

Примеры

В комплекте с WB-Nodes есть примеры для Apple HomeKit и Яндекс.Алисы, найти их можно в MenuImportExamples.

Использование нод mqtt in и mqtt out для взаимодействия с Wiren Board

Настройка подключения

Ноды MQTT в Node-Red

Альтернативный вариант — использовать ноды mqtt in и mqtt out. Для этого вам понадобятся адреса топиков, взять их можно в веб-интерфейсе контроллера на странице MQTT-каналы.

Для настройки MQTT-соединения в Node-RED выполните следующие действия:

  1. Перетащите ноду mqtt in в рабочую область.
  2. Войдите в конфигурацию ноды и нажмите на Карандаш напротив поля Server.
  3. На вкладке Connecting задайте адрес брокера и номер порта.
    В поле Name введите любое имя сервера.
    На вкладке Security можно указать Имя пользователя и Пароль для подключения к брокеру. Если в качестве брокера выступает контроллер Wiren Board, это поле нужно оставить пустым.
  4. После заполнения всех полей нажмите кнопку Update. Созданный брокер теперь можно использовать для настройки всех подключений.
  5. Выберите созданные брокер из списка в поле Server.
  6. Введите адрес mqtt-топика в поле Topic.
  7. Нажмите кнопку Done.

По такому же принципу настраивается нода mqtt out.

Отправка команд

Для отправки команды контроллеру по MQTT используется нода mqtt out. При этом в поле Topic указывается адрес mqtt-топика контроллера, в который необходимо записать параметр. Нужно учитывать, что в конце адреса ноды mqtt out нужно написать /on, иначе параметр в топик не запишется. Например, /devices/wb-mrgbw-d-fw3_129/controls/RGB Strip/on. Подробнее читайте на странице MQTT.

Для отправки параметра в ноду mqtt out можно использовать ноду inject.

  1. Перетащите ноду inject в рабочую область.
  2. Подключите ее ко входу ноды mqtt out.
  3. Зайдите в настройки ноды inject и задайте Имя ноды, Тип переменной и ее Значение. Нажмите кнопку Done.

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

Примеры использования

Примеры использования Node-RED с WB-Nodes на контроллерах Wiren Board: