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

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Sem resumo de edição
 
(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==
 
Instalar antes o '''nodejs''' e o '''npm''':
sudo apt install nodejs
:verificar versão:
nodejs -v
:instalar npm:
sudo apt install npm
 
Instalando o '''Node-RED''' 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>.  
==Instalação com Docker==
  docker run -it -p 1880:1880 --name mynodered nodered/node-red
 
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


==Instalação de módulos no node-red==
===Preservação dos Dados do Usuário===


;Menu
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>.
Manage palette -> Install -> Search


;Módulos sugeridos para instalação para trabalho com IoT:
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.
Arduino -> node-red-node-arduino
Firebase -> node-red-contrib-firebase
Mosca -> node-red-contrib-mqtt-broker


==Interação do Node_RED e Arduino==
docker run -d -u 1000:1000 -p 1880:1880 -v /home/$USER/node-red-backup:/data --name node-red nodered/node-red


Referência<ref>https://nodered.org/docs/faq/interacting-with-arduino</ref>.
: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


Para interação com '''Arduíno''' o '''módulo''' correspondente deve ser instalado no '''Node-RED''':
===Acesso as portas seriais USB===
node-red-node-arduino


O '''Node-RED''' se comunica com o '''Arduíno''' através da '''serial USB''' utilizando o protocolo '''Firmata'''. Para tal a '''biblioteca''' '''Firmata''' deve ser instalada no '''Arduíno''' e deve ser carregado o ''sketch'' '''StandardFirmata'''.
Referência <ref>https://www.losant.com/blog/how-to-access-serial-devices-in-docker</ref>


;Capacidades: O Arduíno suporta os seguintes modos de operação:
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'''.
*Entradas e saídas digitais: Valores 0 ou 1
*Entradas analógicas: Valores 0 a 1023
*Saídas PWM (analógicas): Valores 0 a 255
*Saídas servo: 0 a 180


===Nós: arduino in / arduino out===
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.


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 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"


;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'''.
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


:Quando uma entrada do Arduíno é modificada o Node-RED é imediatamente notificado.
O comando completo para rodar o Docker é:
:*Este processo '''funciona bem''' para as '''entradas digitais'''.
docker run -it -p 1880:1880 -v /dev:/dev --privileged --name node-red nodered/node-red
:*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.
;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


==Interação do Node_RED e Firebase==
Rodar Node-RED:
node-rede -v
-->


Permite a interação do '''Node-RED''' com a '''plataforma de computação em nuvem Firebase''' mantida pela Google. Para tal o '''módulo''' correspondente deve ser instalado no '''Node-RED''':
==Laboratórios com Node-RED==
node-red-contrib-firebase


Dados manuseados pelo Node-RED podem ser salvos no '''Firebase Realtime database''', o qual implementa um '''banco de dados''' '''NoSQL''' que fornece as aplicações clientes atualizações em tempo real (“''realtime''” ''updates'') quando os dados mudam na base de dados. As operações básicas no banco de dados são:
;[[Node-RED Laboratorios: Firmata, Serial e Ethernet]]
*set() - Salva dado em uma referência específica, substituindo o valor anterior.
;[[Node-RED Laboratorios: MQTT]]
*push() - Adiciona dado em uma lista de valores.
;[[Raspberry Pi: Laboratorios Node-RED|Node-RED Laboratorios: Raspberry Pi]]
*once() - Lê dado de uma referência e acompanha qualquer mudança no mesmo.


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

Edição atual tal como às 13h05min de 11 de novembro de 2024

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

Instalar antes o nodejs e o npm:

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

Instalando o Node-RED com npm (comando do node.js)[1]

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

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)