Neste tutorial, você irá aprender a utilizar MQTT e enviar mensagens formatadas em JSON.
Componentes do Tutorial
Software: MasterTool 3.71
Hardware: XP340
Seções do Tutorial
1. INTRODUÇÃO
2. O PROJETO
2.1 JSON
2.1.1 JSON_DUT
2.1.2 JSON_GVL
2.1.3 JSON_Compose
2.2 MQTTClient
3. DEMONSTRANDO O FUNCIONAMENTO
1. INTRODUÇÃO
Neste tutorial, iremos apresentar um projeto de exemplo desenvolvido para demonstrar o funcionamento de uma comunicação MQTT publicando mensagens no formato JSON, enviando os valores de 2 variáveis.
Em anexo no fim deste tutorial, você pode encontrar dois arquivo chamados MQTT JSON.part1.rar e MQTT JSON.part2.rar. Para obter o projeto compactado, você deve extrair esses dois arquivos na mesma pasta.
Este projeto foi realizado na versão de MasterTool 3.71, e estaremos demonstrando o seu funcionamento nos tópicos abaixo.
Para isso, estaremos utilizando a biblioteca PRO-JSON, desenvolvida pela comunidade da CODESYS. Caso tenha interesse, segue o link da documentação: https://forge.codesys.com/lib/pro-json/home/Home/.
Para ver o conteúdo da biblioteca, você pode abrir o Library Manager no projeto baixado, e procurar pela biblioteca PRO_JSON.
2. O PROJETO
O projeto está divido em duas partes: a parte da formatação em JSON e a parte de MQTT.
2.1 JSON
Na pasta JSON, temos 3 objetos:
2.1.1 JSON_DUT
JSON_DUT é uma STRUCT (DUT - tipo de unidade de dado). Basicamente, você está criando um tipo de variável, assim como existem tipos BOOL, REAL, INT, estamos criando o tipo JSON_DUT.
Olhando dentro do arquivo, podemos ver que o tipo JSON_DUT criado consiste em uma variável STRUCT, que guarda várias variáveis dentro de uma.
2.1.2 JSON_GVL
Na JSON_GVL, estamos declarando as variáveis a serem utilizadas na comunicação e na formatação de dados.
2.1.3 JSON_Compose
No programa JSON_Compose, temos a formatação das saídas em uma string em formato JSON. É utilizado o bloco STRUCT_TO_JSON, da biblioteca PRO_JSON mencionada no primeiro tópico.
Este bloco de função recebe como entrada as variáveis por meio de uma STRUCT, e formata os seus nomes e valores no formato JSON. Ele tem como parâmetro de entrada o ponteiro JSONString, que recebe o endereço da variável string que queremos que seja alterada. Podemos ver isso na linha 18, onde passamos o endereço da variável JSON_String localizada na JSON_GVL.
Para demonstração de funcionamento, foi desenvolvido uma lógica simples para simular uma alteração nos valores, onde eles são inscrementados automaticamente:
2.2 MQTTClient
Nesta POU, temos toda a configuração do broker MQTT, dos seus publishers e dos seus subscribers.
Para demonstrar o funcionamento, estarei hosteando um broker local utilizando o Mosquitto. Com isso, alterei o valor da variável sHostName para o IP do meu computador para poder acessar localmente o meu broker.
Na linha 32, definimos a mensagem a ser publicada: a string gerada pelo bloco de função que formatou as variáveis em JSON. Na linha 33, definimos o valor de bEnablePublish como Pulse_5s como um exemplo de acionamento da variável que ativa o envio da mensagem MQTT.
3. DEMONSTRANDO O FUNCIONAMENTO
Primeiro, iniciei o broker local na minha máquina e me inscrevi em todos os tópicos como subscriber utilizando o tópico "#". Assim, recebo a mensagem de todos os tópicos.
Depois, carreguei o projeto na CPU e a coloquei em RUN.
Como o projeto possui a simulação de valores, você pode ver na imagem abaixo que a publicação estava sendo realizada já em formato JSON!
Com isso, você está capacitado para publicar os dados de várias variáveis em um broker MQTT no formato JSON.
Comentários
0 comentário
Por favor, entre para comentar.