KB-109501: Coletando valores e timestamp de uma mensagem JSON via Driver MQTT.

Descrição:

Recebo uma mensagem no formato JSON dos meus dispositivos MQTT, e portanto gostaria de coletar os valores Time (timestamp, ou estampa de tempo) , var1 e var2. Como devo configurar o template no Driver Elipse MQTT para isto?

{
"FormatId":"TagValues",
"ApiVersion":1,
"CollectionId":1,
"TagData":[{
                    "Time":"2020-05-25T21:11:07.337-3:00",
                    "Values":{"var1":110,"var2":true}
                    }]
}

Solução:

Para extrair o conteúdo de uma mensagem JSON e coletar o valor do timestamp (estampa de tempo) do driver Elipse MQTT, é necessário declarar um template. Os templates permitem informar não apenas o formato da mensagem mas também quais partes devem ser transformadas em dados. Templates podem ser do tipo JSON, CSV ou XML, e cada template deve utilizar palavras-chave, que devem substituir os valores a serem extraídos. As palavras-chave estão disponíveis no Manual do driver Elipse MQTT.

Na aba Templates, é possível definir diferentes padrões para os dados da mensagem MQTT, cujos elementos podem então ser automaticamente extraídos.

Para a mensagem específica deste artigo, podemos utilizar o seguinte template:

{"FormatId":"DUMMY",
"ApiVersion":"DUMMY",
"CollectionId":"DUMMY",
"TagData":[{"Time":"TS_TEXT(%Y-%m-%dT%H:%M:%S.%f%+)",
"Values":{"var1":"E3VAL","var2":"E3VAL"}}]}

Para receber os valores das variáveis, primeiramente crie um tag Bloco de Comunicação com dois elementos; logo depois, no parâmetro Item (propriedade ParamItem) do tag, especifique o tópico e o template.

O valor da variável Time será atribuído automaticamente a estampa de tempo (TimeStamp) do tag.

Para complementar a configuração realizada, assista ao vídeo relacionado a este artigo:

Configurando o Driver Elipse MQTT.
Autor: João Lima – Coordenador de desenvolvimento de negócios – WAGO Brasil

Modelo do Controlador utilizado: WAGO  750-8203 Firmware 15;
Broker: Eclipse mosquito-1.6.9;

A aplicação exemplo utilizada no vídeo está em anexo, e foi desenvolvida na versão 5.1.175 do Elipse E3.

Artigos Relacionados:


Anexos:

App_MQTT.zip

Este artigo foi útil? Was this post helpful?
Yes2
No0

Comentários em “KB-109501: Coletando valores e timestamp de uma mensagem JSON via Driver MQTT.

  1. Délio boa tarde,
    No formato JSON conforme descrito acima, como que eu faço no Elipse para ler os dados de Coletâneas diferentes?

    Mesmo colocando “CollectionId”:1, o driver lê os dados porém dá falha na comunicação pois ele está tentando subscrever os dados da coletânea 2 em cima da coletânea 1.

    1. Olá Paulo,
      Como você configurou o template para receber os dados?
      Os tags receberão os valores enviados em formato JSON independente da CollectionId.
      Você que deve tratar os dados conforme for recebendo.

      Exemplo de Template para receber CollectionId, var1 e var2, juntamente com o TimeStamp do tag:

      {“FormatId”:”DUMMY”,
      “ApiVersion”:”DUMMY”,
      “CollectionId”:”E3VAL”,
      “TagData”:[{“Time”:”TS_TEXT(%Y-%m-%dT%H:%M:%S.%f%+)”,
      “Values”:{“var1″:”E3VAL”,”var2″:”E3VAL”}}]}

      Para receber os valores, você pode criar 1 tag bloco com 3 elementos, onde cada elemento receberá a variável na ordem declarada.
      ParamItem: Plant-1/Sensor-001/Data/;Plant

      JSON enviado:
      {“FormatId”:”TagValues”,”ApiVersion”:1,”CollectionId”:1,”TagData”:[{“Time”:”2020-05-25T21:11:07.337-3:00″,”Values”:{“var1″:890,”var2”:true}}]}

      Qualquer dúvida entre em contato: delio@elipse.com.br

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *