Node-RED #4: Comunicação com o protocolo MQTT
Aprenda a enviar dados de maneira simples através do protocolo de comunicação MQTT
Por Mário Pessanha | 03 de março de 2023
Esta publicação faz parte de uma sequência de publicações onde aprenderemos sobre a ferramenta Node-RED, que utiliza de programação visual para realizar as mais diversas tarefas, falamos mais sobre isso na publicação anterior que você pode acompanhar clicando no link.
Sumário
Introdução
Neste exemplo veremos alguns dos nodes mais utilizados com frequência e desenvolveremos alguns conceitos vistos anteriormente. Com a ajuda do Node-RED receberemos um objeto JSON através do protocolo MQTT.
Este projeto se baseia no node MQTT que fornece uma maneira conveniente de receber dados de um broker MQTT. O protocolo MQTT é um exemplo de sistema de publish/subscribe (chamado de sistema pub/sub) que permite que sensores publiquem (publish) os dados em tópicos, aos quais alguém se inscreve (subscribe) para receber esses dados de forma assíncrona.
Utilizando o node MQTT
Para utilizar o node MQTT você precisa de acesso a um broker, há alguns servidores MQTT grátis disponível, por exemplo o http://test.mosquitto.org/ ou o que será utilizado neste exemplo, www.hivemq.com utilizando um tópico e o endereço do broker, você pode configurar o node de input mqtt para se inscrever neste tópico fazendo com que ele gere uma nova mensagem sempre que um novo dado for publicado neste tópico. Essa mensagem vai conter informações sobre o dado publicado, incluindo o próprio dado contido no msg.payload e o tópico do broker MQTT contido no msg.topic.
Para começarmos a utilizar o node mqtt, utilizaremos o broker MQTT grátis HiveMQ, juntamente com o seu websocket (disponível em: https://www.hivemq.com/public-mqtt-broker/). Você também pode utilizar qualquer outro broker MQTT que tenha disponível, incluindo o seu próprio, caso tenha instalado.
Clique em Try MQTT Browser client, na tela seguinte conecte o seu server. Na página temos disponíveis algumas informações sobre o broker como:
– Endereço: broker.hivemq.com
– Porta TCP: 1883
– Porta Websocket: 8000
Clicando em Try MQTT Browser Client temos acesso ao cliente MQTT para navegador e preencheremos os campos de acordo com os dados da página anterior. No campo host inserimos o endereço do broker: “broker.hivemq.com”, no campo Port, como se trata de um web socket a porta utilizada é a “8000”, porém case esteja configurando em algum outro dispositivo através de TCP a porta será a 1883. Após entrar com esses dados clique em “connect” para estabelecer conexão com o broker.
Em um novo flow, na área esqueda da tela do Node-RED busque pelo node “mqtt in” em “network” e arraste-o para o flow, e dê um duplo clique para configurar.
No campo “Server” adicionaremos os dados da imagem acima onde o endereço do server é “broker.hivemq.com” e a porta nesse caso é a “1883”.
É importante também escolher o tópico onde serão lidas e publicadas as mensagens, neste caso escolhi o tópico “TAR/sensor” mas você pode escolher qualquer nome que faça sentido para sua aplicação.
Agora de volta ao HiveMQ com o servidor já conectado, na área “Publish” preencha o campo Topic com “TAR/sensor” que foi nosso tópico criado e configurado no Node-RED e no campo Message vamos escrever uma mensagem no formato objeto JSON como por exemplo:
{“analyze”:false, “value”:10}
(Ao copiar e colar este exemplo pode acontecer do Node-RED não interpretar as aspas, caso aconteça basta reescrevê-las no campo mensagem).
Utilizando o node MQTT
De volta a tela do Node-RED ligue o node “mqtt in” ao node “json” (quem tem a função de converter o texto em objeto) e em sequência a um node “debug” em seguida clique em deploy para conferir que a mensagem de nosso sensor simulado foi recebida.
Conclusão
Utilizamos o MQTT um protocolo de comunicação bem difundido em projetos de Internet das Coisas para enviar dados de um sensor simulado no formato JSON para que esses dados possam então ser trabalhados em sua aplicação.
Referência:
Este post tem um comentário
Heya i’m for the first time here. I found this board and
I find It really useful & it helped me out much. I hope to
give something back and help others like you helped me.