Node-RED: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
 
(83 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
=Node-RED=
=Node-RED=


O '''[https://nodered.org/ Node-RED]''' é uma ferramenta de programação '''''Low Code''''', voltada para '''Internet das Coisas''', que permite interligar dispositivos físicos, ambientes de desenvolvimento de software e serviços em nuvem.
O '''[https://nodered.org/ Node-RED]''' é uma ferramenta de programação '''''Low Code''''', voltada para '''Internet das Coisas''', que permite interligar dispositivos físicos, ambientes de desenvolvimento de software ''online'' e serviços em nuvem.


Site: [https://knolleary.net  knolleary:  Words and things by Nick O'Leary]
Site: [https://knolleary.net  knolleary:  Words and things by Nick O'Leary]


==Instalação==
==Execução e utilização do Node-RED==


;Instalação no Ubuntu: Instalando com '''npm''' (comando do '''node.js''')<ref>https://nodered.org/docs/getting-started/local</ref>
;Execução: Uma vez instalado no ambiente do Ubuntu, o '''Node-RED''' pode ser executado a partir de um terminal com o comando:
node-red
 
;Utilização: O '''Node-RED''' provê um editor de programação a partir de um '''navegador''', permitindo a construção de '''fluxos de programação'''  '''''Low Code'''''  a partir de um grande número de '''nós''' disponíveis na paleta de opções.
 
:Se instalado em uma máquina local, o acesso ao Node-RED é realizado pela URL:
localhost:1880
 
;Instalação de módulos Node-RED: Além dos '''nós''' básicos, diversos '''módulos''' podem ser instalados na paleta de opções do Node-RED.
 
Menu -> Manage palette -> Install -> Search
 
==Instalação no Ubuntu==
 
Instalando com '''npm''' (comando do '''node.js''')<ref>https://nodered.org/docs/getting-started/local</ref>
   
   
  sudo npm install -g --unsafe-perm node-red
  sudo npm install -g --unsafe-perm node-red


;Instalação com Docker: Necessita instalação prévia do '''[[Docker]]''' <ref name=Docker>https://nodered.org/docs/getting-started/docker</ref>.  
Se o '''npm''' não tiver instalado, deve ser instalado antes o '''nodejs''':
  docker run -it -p 1880:1880 --name mynodered nodered/node-red
sudo apt install nodejs
:verificar versão:
nodejs -v
:instalar npm:
sudo apt install npm
 
==Instalação com Docker==
 
Necessita instalação prévia do '''[[Docker]]''' <ref name=Docker>https://nodered.org/docs/getting-started/docker</ref>.  
  docker run -it -p 1880:1880 --name node-red nodered/node-red


:Detalhando o comando <ref name=Docker/>:
:Detalhando o comando <ref name=Docker/>:
Linha 18: Linha 41:
  -it                    - attach a terminal session so we can see what is going on
  -it                    - attach a terminal session so we can see what is going on
  -p 1880:1880            - connect local port 1880 to the exposed internal port 1880
  -p 1880:1880            - connect local port 1880 to the exposed internal port 1880
  --name mynodered        - give this machine a friendly local name
  --name node-red        - give this machine a friendly local name
  nodered/node-red        - the image to base it one
  nodered/node-red        - the image to base it one


Linha 26: Linha 49:
  Ctrl-p Ctrl-q - the container will keep running in the background.
  Ctrl-p Ctrl-q - the container will keep running in the background.
:Voltar ao terminal:
:Voltar ao terminal:
  docker attach mynodered
  docker attach node-red
:Parar o contêiner com Node-Red
:Parar o contêiner com Node-Red
  docker stop mynodered
  docker stop node-red
:Reiniciar o contêiner:
:Reiniciar o contêiner:
  docker start mynodered
  docker start node-red
 
===Preservação dos Dados do Usuário===


==Instalação de módulos no node-red==
Com o '''Node-RED''' rodando em um contêiner '''Docker''', caso o contêiner seja destruído os '''dados''' com os fluxos construídos pelo usuário serão perdidos. Para preservar estes dados é possível montar um diretório em um local externo ao contêiner <ref name=Docker>https://nodered.org/docs/getting-started/docker</ref>.


;Menu
Dentro do contêiner Node-RED usa o diretório '''/data''' para armazenar os dados do usuário. Para salvar este diretório em um local externo pode-se utilizar o comando abaixo. Neste caso, para acesso a este diretório externo, o usuário do Node-RED dentro do contêiner (''default'' UID 1000) deve ter o mesmo UID do usuário no hospedeiro.
Manage palette -> Install -> Search


;Módulos sugeridos para instalação para trabalho com IoT:
  docker run -d -u 1000:1000 -p 1880:1880 -v /home/$USER/node-red-backup:/data --name node-red nodered/node-red
  Arduino -> node-red-node-arduino
Firebase -> node-red-contrib-firebase
Mosca -> node-red-contrib-mqtt-broker


==Interação do Node_RED e Arduino==
:Detalhando o comando:
docker run              - run this container... initially building locally if necessary
-d                      - run in background and print container ID
-u                      - uid
-p 1880:1880            - connect local port 1880 to the exposed internal port 1880
-v                      - bind mount volume
--name node-red        - give this machine a friendly local name
nodered/node-red        - the image to base it one


O '''Node-RED''' se comunica com o '''Arduíno''' através da '''serial USB''' utilizando o protocolo '''Firmata''' <ref>https://nodered.org/docs/faq/interacting-with-arduino</ref>.
===Acesso as portas seriais USB===


Para interação com '''Arduíno''' o '''módulo''' correspondente deve ser instalado no '''Node-RED''':
Referência <ref>https://www.losant.com/blog/how-to-access-serial-devices-in-docker</ref>
node-red-node-arduino


A '''biblioteca''' '''Firmata''' deve ser instalada no '''Arduíno''' e deve ser carregado o ''sketch'' '''StandardFirmata'''.
O acesso as '''portas seriais USB''' é necessário para integração com '''Arduíno''', ou outros dispositivos, via serial usando o módulo '''node-red-node-serialport'''.


;Capacidades: O Arduíno suporta os seguintes modos de operação:
Por padrão as '''portas seriais''' são montadas pelo '''root''', portanto com acesso privilegiado, e são '''efêmeras''', existindo apenas quando o dispositivo está plugado no computador.
*Entradas e saídas digitais: Valores 0 ou 1
*Entradas analógicas: Valores 0 a 1023
*Saídas PWM (analógica): Valores 0 a 255
*Saídas servo: 0 a 180


===Nós: arduino in / arduino out===
Para que outros usuários, e no caso o Docker, possam acessar as portas devemos incluir uma regra para acesso ao '''udev''', criando um arquivo no diretório:
/etc/udev/rules.d/99-serial.rules
e adicionar as linhas:
KERNEL=="ttyUSB[0-9]*",MODE="0666"
KERNEL=="ttyACM[0-9]*",MODE="0666"


No '''Node-RED''' os nós '''arduino in''' e '''arduino out''' permitem interação com um '''Arduíno''' conectado a serial e rodando o sketch StandardFirmata.
Para que o '''Docker''' possa acessar os dispositivos conectados a serial, devemos montar todo o diretório /dev quando rodarmos o Docker, usando o parâmetro
-v /dev:/dev
e atribuir permissão para acesso com
--privileged
 
O comando completo para rodar o Docker é:
docker run -it -p 1880:1880 -v /dev:/dev --privileged --name node-red nodered/node-red
 
;Dispositivo permanentemente conectado: Caso o dispositivo fique permanentemente conectado pode-se explicitar a porta serial usada pelo dispositivo. Por exemplo, o Arduíno UNO usa a porta /dev/ttyACM0:
docker run -it -p 1880:1880 --device=/dev/ttyACM0:/dev/ttyACM0 --user=root --name node-red nodered/node-red
:ou, para outro dispositivo, deve-se verificar a porta utilizada, por exemplo:
docker run -it -p 1880:1880 --device=/dev/ttyUSB0:/dev/ttyUSB0 --user=root --name node-red nodered/node-red
 
<!--==Instalação na AWS Amazon EC2 com Ubuntu==
 
Procedimentos <ref>https://nodered.org/docs/getting-started/aws#running-on-elastic-beanstalk-with-high-availabilty</ref>:
#Criar conta na Amazom [https://aws.amazon.com/pt/ AWS].
#Logar no console AWS EC2
#Lançar uma instância
#Escolher uma máquina Ubuntu Server
#Selecionar o tipo de instância: t2.micro
#Na aba 'Configure Security Group', adicionar nova regra ‘Custom TCP Rule’ para acesso pela porta 1880
#Lançar a máquina.
#O console solicitará as chaves SSH. Deve-se criar um novo par de chaves, a qual deve ser baixada e salva com nome próprio e extensão .pem.
#Conectar-se a máquina usando SSH com o nome público DNS fornecido e a opção -i com a chave. Exemplo:
ssh -i ~/AWS-key.pem ubuntu@ec2-3-128-18-159.us-east-2.compute.amazonaws.com
:No exemplo o IP público da máquina é: 3.128.18.159 .
 
;Instalação no Node-RED:
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential
sudo npm install -g --unsafe-perm node-red


;arduino in: Permite selecionar '''entradas digitais ou analógicas'''. Os '''valores''' são lidos em '''msg.payload''' e o '''número do pino''' como '''msg.topic'''.
Rodar Node-RED:
node-rede -v
-->


:Quando uma entrada do Arduíno é modificada o Node-RED é imediatamente notificado.
==Laboratórios com Node-RED==
:*Este processo '''funciona bem''' para as '''entradas digitais'''.
:*Para as '''entradas analógicas''' podem ser obtidos muitos valores, os quais devem ser manuseados. Por exemplo, pode-se usar um '''atraso''' para ajustar um tempo de amostragem e descartar valores intermediários. Outra opção é utilizar um nó '''rbe''' (''Report by Exception node'') e configurar para reportar mudanças somente a partir de um dado montante de variação.


;arduino out: Permite selecionar '''saídas digitais''', '''analógicas''' (PWM) ou tipo '''servo'''. Espera '''valores''' numéricos inteiros em '''msg.payload''' para transferir ao Arduíno.
;[[Node-RED Laboratorios: Firmata, Serial e Ethernet]]
;[[Node-RED Laboratorios: MQTT]]
;[[Raspberry Pi: Laboratorios Node-RED|Node-RED Laboratorios: Raspberry Pi]]


==Referências==
==Referências==

Edição atual tal como às 12h32min de 8 de agosto de 2023

Node-RED

O Node-RED é uma ferramenta de programação Low Code, voltada para Internet das Coisas, que permite interligar dispositivos físicos, ambientes de desenvolvimento de software online e serviços em nuvem.

Site: knolleary: Words and things by Nick O'Leary

Execução e utilização do Node-RED

Execução
Uma vez instalado no ambiente do Ubuntu, o Node-RED pode ser executado a partir de um terminal com o comando:
node-red
Utilização
O Node-RED provê um editor de programação a partir de um navegador, permitindo a construção de fluxos de programação Low Code a partir de um grande número de nós disponíveis na paleta de opções.
Se instalado em uma máquina local, o acesso ao Node-RED é realizado pela URL:
localhost:1880
Instalação de módulos Node-RED
Além dos nós básicos, diversos módulos podem ser instalados na paleta de opções do Node-RED.
Menu -> Manage palette -> Install -> Search

Instalação no Ubuntu

Instalando com npm (comando do node.js)[1]

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

Se o npm não tiver instalado, deve ser instalado antes o nodejs:

sudo apt install nodejs
verificar versão:
nodejs -v
instalar npm:
sudo apt install npm

Instalação com Docker

Necessita instalação prévia do Docker [2].

docker run -it -p 1880:1880 --name node-red nodered/node-red
Detalhando o comando [2]:
docker run              - run this container... initially building locally if necessary
-it                     - attach a terminal session so we can see what is going on
-p 1880:1880            - connect local port 1880 to the exposed internal port 1880
--name node-red         - give this machine a friendly local name
nodered/node-red        - the image to base it one
Navegar normalmente:
http://{host-ip}:1880
Para sair do terminal Docker:
Ctrl-p Ctrl-q - the container will keep running in the background.
Voltar ao terminal:
docker attach node-red
Parar o contêiner com Node-Red
docker stop node-red
Reiniciar o contêiner:
docker start node-red

Preservação dos Dados do Usuário

Com o Node-RED rodando em um contêiner Docker, caso o contêiner seja destruído os dados com os fluxos construídos pelo usuário serão perdidos. Para preservar estes dados é possível montar um diretório em um local externo ao contêiner [2].

Dentro do contêiner Node-RED usa o diretório /data para armazenar os dados do usuário. Para salvar este diretório em um local externo pode-se utilizar o comando abaixo. Neste caso, para acesso a este diretório externo, o usuário do Node-RED dentro do contêiner (default UID 1000) deve ter o mesmo UID do usuário no hospedeiro.

docker run -d -u 1000:1000 -p 1880:1880 -v /home/$USER/node-red-backup:/data --name node-red nodered/node-red
Detalhando o comando:
docker run              - run this container... initially building locally if necessary
-d                      - run in background and print container ID
-u                      - uid 
-p 1880:1880            - connect local port 1880 to the exposed internal port 1880
-v                      - bind mount volume
--name node-red         - give this machine a friendly local name
nodered/node-red        - the image to base it one

Acesso as portas seriais USB

Referência [3]

O acesso as portas seriais USB é necessário para integração com Arduíno, ou outros dispositivos, via serial usando o módulo node-red-node-serialport.

Por padrão as portas seriais são montadas pelo root, portanto com acesso privilegiado, e são efêmeras, existindo apenas quando o dispositivo está plugado no computador.

Para que outros usuários, e no caso o Docker, possam acessar as portas devemos incluir uma regra para acesso ao udev, criando um arquivo no diretório:

/etc/udev/rules.d/99-serial.rules

e adicionar as linhas:

KERNEL=="ttyUSB[0-9]*",MODE="0666" 
KERNEL=="ttyACM[0-9]*",MODE="0666" 

Para que o Docker possa acessar os dispositivos conectados a serial, devemos montar todo o diretório /dev quando rodarmos o Docker, usando o parâmetro

-v /dev:/dev

e atribuir permissão para acesso com

--privileged

O comando completo para rodar o Docker é:

docker run -it -p 1880:1880 -v /dev:/dev --privileged --name node-red nodered/node-red
Dispositivo permanentemente conectado
Caso o dispositivo fique permanentemente conectado pode-se explicitar a porta serial usada pelo dispositivo. Por exemplo, o Arduíno UNO usa a porta /dev/ttyACM0:
docker run -it -p 1880:1880 --device=/dev/ttyACM0:/dev/ttyACM0 --user=root --name node-red nodered/node-red
ou, para outro dispositivo, deve-se verificar a porta utilizada, por exemplo:
docker run -it -p 1880:1880 --device=/dev/ttyUSB0:/dev/ttyUSB0 --user=root --name node-red nodered/node-red


Laboratórios com Node-RED

Node-RED Laboratorios: Firmata, Serial e Ethernet
Node-RED Laboratorios: MQTT
Node-RED Laboratorios: Raspberry Pi

Referências

Evandro.cantu (discussão) 13h47min de 1 de junho de 2020 (-03)