Node-RED
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 e serviços em nuvem.
Site: knolleary: Words and things by Nick O'Leary
Instalação
Instalação no Ubuntu
Instalando com npm (comando do node.js)[1]
sudo npm install -g --unsafe-perm node-red
Instalação de módulos no node-red
- Menu
Manage palette -> Install -> Search
- Módulos sugeridos para instalação para trabalho com IoT
Arduino -> node-red-node-arduino, node-red-node-serialport Firebase -> node-red-contrib-firebase
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
Instalação na AWS Amazon EC2 com Ubuntu
Procedimentos [4]:
- Criar conta na Amazom 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
Referências
Evandro.cantu (discussão) 13h47min de 1 de junho de 2020 (-03)