Node-RED: mudanças entre as edições
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] | ||
== | ==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== | |||
docker run -it -p 1880:1880 --name | |||
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 | --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 | docker attach node-red | ||
:Parar o contêiner com Node-Red | :Parar o contêiner com Node-Red | ||
docker stop | docker stop node-red | ||
:Reiniciar o contêiner: | :Reiniciar o contêiner: | ||
docker start | 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 <ref name=Docker>https://nodered.org/docs/getting-started/docker</ref>. | |||
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 <ref>https://www.losant.com/blog/how-to-access-serial-devices-in-docker</ref> | |||
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 | |||
<!--==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 | |||
Rodar Node-RED: | |||
node-rede -v | |||
--> | |||
==Laboratórios com Node-RED== | |||
;[[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 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)