TUTORIAL: Exemplo básico de utilização de MQTT com Node-RED
Este
tutorial complementa a postagem anterior sobre protocolo MQTT. Neste exemplo,
demostro uma aplicação básica para configuração de comunicação utilizando o
protocolo MQTT. Os passos básicos são:
- Montagem de circuito com sensor LDR;
- Leitura dos dados na forma serial e envio para o computador utilizando Arduino;
- Geração de UI (User Interface) para exibição dos dados em tempo real;
- Utilização do Node-RED para enviar dados para MQTT Broker;
- Ler dados do MQTT Broker por meio de outro computador com outro acesso à internet;
O Node-RED é uma ferramenta de programação para conectar dispositivos de hardware, APIs e serviços online de maneiras novas, interessantes e bastante simples. Trata-se de uma ferramenta gratuita disponível para download através da página oficial: https://nodered.org. Nesta página é possível encontrar as instruções para instalação, documentação, exemplos de “flows” e muito mais.
Figura 1: Página oficial no Node-RED
Com
a ferramenta já instalada e funcionando, o próximo passo é ler os dados do
sensor, no caso foi escolhido um sensor LDR que mede luminosidade do ambiente.
Utilizei um Arduino Uno para transferir os dados para o computador na forma serial
e posteriormente ler os dados com o Node-RED. O código para fazer isso no
arduino é bastante simples, como segue:
Figura 2: Código utilizado no Arduino Uno para leitura dos
dados do sensor de luminosidade e transmissão na forma serial.
Figura 3: Montagem do circuito de leitura de luminosidade
com sensor LDR.
Acessando
o Node-RED, utilizei alguns “nodes” para ler as informações da porta serial e
transmitir via MQTT para um broker Mosquitto e também plotar um gráfico dos
valores lidos em um dashboard em tempo real.
Figura 4: “Flow” montado no computador 1
A função de cada um dos “nodes”:
Arduino: Nó onde
leio os valores da porta serial;
Figura 5: Configuração do “node” de leitura serial
Luz: Nó onde os
dados são transmitidos para o MQTT broker;
Para
esta aplicação exemplo, utilizei um servidor / broker Mosquitto MQTT
publicamente disponível. Obviamente é utilizável apenas para testes, não deve
ser utilizado para aplicações caseiras e empresariais utilizando protocolo
MQTT, pois não há nenhum tipo de segurança dos dados enviados ou lidos. O
servidor está disponível no endereço: http://test.mosquitto.org/
A
configuração do “node” de comunicação MQTT segue nas figuras abaixo.
Figura 6: Configuração do “node” Luz, parte 1
Figura 7: Configuração do “node” Luz, parte 2
LDR Graph: Nó
onde os dados lidos são plotados em tempo real em uma UI padrão do Node-RED;
Figura 8: Dados gerados pelo sensor de luminosidade LDR
sendo exibidos em formato HTML online em um Dashboard;
Msg.payload: Nó
de debug para verificação;
Em
outro computador, no caso um raspberry-pi 3 modelo B, por meio de outro link de
acesso à internet, utilizei novamente o Node-RED para ler e plotar os dados
lidos do MQTT Broker.
Figura 9: “Flow” montado no computador 2 (esq.) e valores
lidos do Broker Mosquitto no Node-RED do Raspberry-pi e publicados em outra UI (dir.)
Finalmente, temos uma comparação dos dados lidos, praticamente ao mesmo tempo, nos dois Clients simultâneos no broker de teste Mosquitto; O evento gerado que pode ser observado nos dois gráficos foi a redução por um período determinado da luminosidade do sensor LDR.
Figura 10: Evento no dashboard do notebook (computador 1)
Figura 11: Evento no dashboard do raspberry-pi (computador
2)
E esta é a aplicação exemplo, se ficar alguma dúvida fico feliz em esclarecer, podem deixar nos comentários.











Muito bom, Thayla!
ResponderExcluirExcelente e louvável iniciativa de compartilhar sua experiência com MQTT e Node-Red.
Continue nesse caminho e se possível vamos compartilhar experiências.
Um grande abraço.