Explorando o NodeMcu – MQTT e Node-RED

Fala galera, beleza? No post de hoje, vamos mostrar mais um projeto interessante, com NodeMCU e MQTT. Desta vez, utilizando a plataforma Node-RED, que já inclusive realizamos um post sobre os primeiros passos com essa incrível ferramenta com o Arduino UNO. Não deixe de dar uma conferida.

Antes de continuar com este artigo, precisamos de alguns requisitos:

  • NodeJS instalado na sua máquina;
  • Node-RED devidamente instalado em sua máquina ;
  • IDE do Arduino preparada, para trabalhar com o NodeMCU.

Com isso já preparado, vamos criar um projeto… Utilizando o WiFi do NodeMCU e os recursos, que facilitam a criação de dashboards incríveis, com o Node-RED.

O que faremos ?

Para hoje, vamos utilizar o protocolo MQTT para subscrever/publicar dados através do Broker. Você pode utilizar um broker MQTT na nuvem, como, por exemplo, o CloudMQTT, explorado no artigo “Explorando o NodeMcu – Conheça o MQTT Dash”.  Entretanto, hoje utilizaremos o Mosquitto como broker, que será instalado em sua máquina local. Para fazer o download, acesse a página: https://mosquitto.org/download/.

A página possui as instruções de instalação, seja o sistema operacional Windows, Linux ou MAC.  Como utilizo o Ubuntu, para instalação, você deve abrir o terminal e, primeiramente, atualizar os pacotes.

sudo apt-get update
sudo apt-get upgrade

Após atualização dos pacotes, copie o seguinte comando:

sudo apt-get install mosquitto-clients

Como padrão, você deverá concordar com instalação e aguardar um tempo. Depois de finalizar a instalação, de o comando clear, para limpar a tela e abra mais um terminal. Isso porque, vamos testar se o Broker instalado está, devidamente, funcional.

Em um dos terminais, copie ou digite o seguinte comando:

mosquitto_sub -h localhost -t /palmeiras

E no outro terminal aberto, copie ou digite o seguinte comando. Você verá que, no outro terminal, será exibida a mensagem publicada via MQTT:

mosquitto_pub -m “Palmeiras não tem mundial” -t /palmeiras

Desculpem Palmeirenses de plantão rs… Mas, foi apenas uma brincadeira. Com isso, já vimos que o Broker está devidamente instalado.

Preparando o Node-RED

Como disse no começo do artigo, como pré requisito para prosseguirmos, creio que você já tenha o Node-RED instalado. Vamos precisar instalar o MQTT e o Dashboard no Node-RED. Primeiramente, mostrarei como instalar o MQTT. Para isso, inicie o serviço no seu terminal e acesse a URL:

Feito isso, clique no canto superior direito, no menu com opções e selecione Manage pallete.

Surgirá uma tela. Selecione a aba Install, onde você deverá pesquisar o seguinte termo “mqtt-broker” e, por fim, clique no pequeno botão install.

Surgirá um pop-up, informando sobre possíveis problemas e ou necessidade de reiniciar o serviço. Confirme a instalação e aguarde alguns instantes. Após finalizar a instalação, surgirá um pop-up confirmando a inclusão dos novos Nodes. Faça o mesmo procedimento de instalação para o dashboard, procure no Manage pallete por node-red-dashboard. Após finalizar a instalação de ambos, vamos reiniciar o Node-RED. No terminal, encerre a atividade com o Ctrl+C.  E após parar, inicie novamente.

Agora, vamos fazer um pequeno teste. Isso, para confirmar se o Node-RED está se comunicando com o Mosquitto.

Vamos publicar um dado. Para isso, precisa-se dos seguintes Nodes: Input  MQTT, Output debug.

Clique duas vezes no Node MQTT, para realizar a configuração dos seguintes parâmetros:

  • Server;
  • Topic;
  • QoS;
  • Retain;
  • Name.

Por hora, vamos configurar apenas o Server e o Topic. Em nosso caso, trabalharemos em um servidor local, então será localhost: 1883. A porta padrão para o protocolo MQTT é a 1883. O tópico, você pode nomear conforme desejar.

Para editar o Server, clique no botão com o formato de lápis e faça as alterações. E, por fim, clique em Add. Vamos nomear o tópico e, após nomeá-lo como desejar, clique no botão Done.

Ao finalizar estas edições, clique no botão Deploy e altere a aba para debug. Abra um novo terminal e digite o seguinte comando:

mosquitto_pub -t ‘palmeiras’ -m ‘Palmeiras não tem mundial’

Perceba que, mudou um pouco em relação ao primeiro comando. Isto porque, o tópico agora é “palmeiras” sem a barra …

Fazendo isso na aba de debug, a mensagem estará publicada. Comprovando, assim, que o Node-Red está se comunicando, perfeitamente, com o Broker MQTT. Além disso, você pode fazer um teste, escrevendo um valor através de um node textMessage. Fica o desafio hein rs.

Vamos ao projeto…

Com o Mosquitto instalado, Node-RED 100% funcional e testado, vamos agora à nossa aplicação. Neste caso, vamos utilizar o NodeRED, para publicar valores de um sensor de temperatura e, também, para escrever a saída de um led. Assim, exploraremos como escrever /publicar dados via MQTT.

Para este projeto precisaremos de:

1 – LED de cor branca 5mm ou a cor que preferir;

1 – LDR;

1 – Resistor de 10kΩ;

Fios Jumper;

Além da placa NodeMCU, é claro. A ligação do circuito é realizada, conforme imagem abaixo:

Agora, vamos ao código fonte. Para este projeto, necessitaremos da biblioteca auxiliar PubSubClient, que permite comunicação via protocolo MQTT.  Com a biblioteca devidamente instalada, mantenha o NodeMCU plugado na máquina com o hardware montado e digite o seguinte código fonte.

Após escrever todo o código, você deverá clicar em Verificar. E, após verificação, clicar em Carregar para o ESP8266. Feito isso, abra o Monitor Serial, para acompanhar a conexão ao Broker MQTT.

Se você observar bem o código fonte, é MUITOOO PARECIDO com o do artigo “Explorando o NodeMcu – Conheça o MQTT Dash”.  Pois, em ambas as aplicações, estamos trabalhando com o protocolo MQTT.

Em resumo, o código fonte faz a conexão â rede WiFi, atribui as credenciais para comunicação ao broker (vale lembrar que, estamos trabalhando localmente), realizamos a leitura do sensor e publicação dos dados a cada 30s. E, além disso, criamos uma função de call-back, para verificar o tópico led com as condições de ligar / desligar o mesmo.

Os comentários auxiliam, bastante, no entendimento do mesmo. E, de praxe, deixaremos todo conteúdo para download.  Com isso finalizado, vamos montar o Dasboard no NodeRED.

Montando o Dashboard …

Agora que digitamos e compilamos o código para o ESP, vamos montar o dashboard … Para isso, inicie o Node-RED. E, vamos montar o Dashboard. No canto superior direito, clique na aba dashboard.

Vamos criar o seguinte Tab (“Automação Residencial”). E, dentro deste tab, vamos incluir dois grupos:

  • LED
  • Sensor

Agora que criamos o layout do dashboard, com os devidos grupos, vamos configurar os nodes. Para isso, inclua os seguintes nodes, dentro do flow:

Sendo:

  • Switch: para controlar o acionamento do led;
  • Gauge: para plotar os dados do sensor LDR;
  • MQTT Input: para publicar dados;
  • MQTT Output: para subscrever dados.

Precisamos configurar estes nodes. Então, vamos primeiro configurar o MQTT Input, clicando duas vezes e inserindo os seguintes dados:

  • Server: localhost;
  • Topic: luminosity.

Por fim, clique em Done. Após isso, configure o MQTT Output, clicando duas vezes e inserindo os seguintes dados:

  • Server: localhost;
  • Topic: led.

Atenção! O tópico deverá ser o mesmo definido no código fonte. Caso contrário, sua aplicação não irá funcionar. Então, muito cuidado amigo! Opcionalmente, podemos dar nomes aos nossos nodes.

Feito isso, vamos seguir configurando nossos nodes. Clique no node Switch e configure os seguintes campos:

  • Group: selecione o grupo LED;
  • On Payload: troque a opção para string e configure como ON;
  • Off Playload: troque a opção para string e configure como OFF;
  • Topic:  led.

Lembre-se que este switch escreverá ON ou OFF e, a partir do nosso hardware, tomaremos a decisão de ligar/desligar o dispositivo. Por fim, clique em Done.

Agora, configuraremos o node Gauge, clicando duas vezes:

  • Group: selecione o grupo Luminosidade;
  • Range: Mínimo 0 e Máximo 1013;

Caso queira personalizar as cores, sinta-se à vontade. Fazendo as alterações necessárias, clique em Done.

Com os nodes devidamente criados, faça a ligação dos mesmos, conforme imagem a seguir:

Por fim, clique em Deploy e no botão, para visualizar o dashboard (aba dashboard > sites> canto superior direito).

O resultado será parecido com o seguir …

Com isso, temos um projeto completo utilizando Node-RED e MQTT.

Para finalizar. ..

O post de hoje foi longo, mas bastante interessante. Vimos como instalar o Mosquitto, aprendemos um pouco mais sobre o protocolo MQTT e utilizamos a incrível ferramenta Node-RED, que facilita e muito a implantação de projetos IoT. Faça mais testes, coloque nodes de debug para acompanhar, enfim, use sua criatividade! Caso queira aprender mais sobre NodeRED, recomendo um material bastante interessante do THT (Thinks Hacker Team), que possuem excelentes artigos sobre o assunto. Eles não falam só sobre Node-RED, mas de assuntos referentes à IA, IoT, Blockchain, etc.

Gostou? Compartilhe e de seu feedback! Isso é fundamental para melhorarmos nossoconteúdo e produzir, ainda mais, artigos para ajudar mais e mais pessoas.

Muito obrigado e até a próxima!

Yhan Christian

 

2 Comentários


Deixe seu comentário.

%d blogueiros gostam disto: