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:

  1. Montagem de circuito com sensor LDR;
  2. Leitura dos dados na forma serial e envio para o computador utilizando Arduino;
  3. Geração de UI (User Interface) para exibição dos dados em tempo real;
  4. Utilização do Node-RED para enviar dados para MQTT Broker;
  5. 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.

Comentários

  1. Muito bom, Thayla!

    Excelente 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.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Como utilizar Tag Prefix WinCC Professional

TUTORIAL: Criando WinCC Tags a partir de documentos de texto utilizando script em Python

Utilizando interfaces, inversão de controle e injeção de dependências em programação - Um exemplo em C#