Receber dados via MQTT na plataforma

Olá , boa noite!
Creio que seja algo simples a minha dúvida, mas não encontrei algo semelhante no fórum.
Eu já fiz algumas aplicações com ESP32 e a plataforma Wnology, como lê sensores e enviar comandos por MQTT. Porém, eu gostaria de saber como fazer para pegar um payload publicado pelo ESP32 e usá-lo em outras aplicações, para outras pessoas usarem os dados. Que tipo de device deve-se usar? que tipo de workflow deve-se usar? como configurar o workflow?

1 Curtida

Olá Luiz Henrique!

Na expressão “para outras pessoas usarem” os dados, se for “visualizar” os dados via dashboards, é desenvolvido um acesso via usuário e senha, onde as pessoas acessarão as telas desenvolvidas por você. Temos um exemplo neste post do Fórum:

Particularmente para “pegar o payload publicado no ESP32 e usá-lo em outras aplicações”
, aí é preciso usar as diversas formas de integração que a Plataforma disponibiliza, por exemplo, usando WebHooks e Integrations.

image

Olá, Luiz.

Você pode usar a API do wgnology para consultar a tabela de dados do device via HTTP.
OU
se é para consumir os dados via MQTT Subscribe, você pode:
-Criar um device standalone e usar ele como como o ID dele como um dispositivo subscribe apenas. Importante usar as chave de acesso que tenha permissão para todos os tópicos.

1 Curtida

ola @NeemiasPereira eu sou da eletrônica e tem alguns termos e situações que estou aprendendo ainda, desculpa se parecer óbvio as dúvidas! Teria algum exemplo de algo deste tipo, eu quero apenas receber os dados na plataforma! eu crie a aplicação e ja estou recebendo o payload.

,


A minha dúvida é como receber esses dados em outra aplicação nova. teria essa possibilidade do jeito que está? tentei usar as soluções propostas mas devo estar cometendo algum erro.

1 Curtida

Bom dia!

Estou em dúvida sobre esta sua frase “… receber esses dados em outra aplicação nova…”.
Não entendi esta dúvida.
Você quer “do mesmo ESP32 enviar dados para mais aplicações na WEGnology”?

Existem as seguintes regras:

  • Somente 1 dispositivo real pode publicar para 1 dispositivo na plataforma
  • Da mesma forma somente 1 dispositivo pode assinar tópicos em um dispositivo na plataforma.

Para seu ESP32 “receber” dados da plataforma existem os comandos, ou seja, a plataforma escreve nos dispositivos através dos comandos, que é o tópico “wnology/DeviceID/command”.

Quando a Plataforma “escreve”, por padrão (e por facilidade) usamos o tópico “command”.
Para isto temos os blocos de workflow “Device Command” por exemplo.

Vamos lá, digamos que você quer ligar e desligar um LED, recebendo um comando da plataforma para o ESP.

Para seu ESP32 fazer isto, é preciso que ele monitore as mensagens que recebe.
Para isto existem as funções de “callback” do mqtt. Por exemplo, mqtt_client.callback()

Trago um trecho de código para ESP32, onde o tópico lido, faz acender ou apagar um LED.
Na variável “*topic” você configura o tópico de comando.
Ao enviar a palavra “on” ele ligará o LED e ao enviar “off” desligará.

void mqttCallback(char *topic, byte *payload, unsigned int length) {
    Serial.print("Message received on topic: ");
    Serial.println(topic);
    Serial.print("Message:");
    String message;
    for (int i = 0; i < length; i++) {
        message += (char)payload[i];  // Convert *byte to string
    }
    // Control the LED based on the message received
    if (message == "on" && !ledState) {
        digitalWrite(LED, HIGH);  // Turn on the LED
        ledState = true;
        Serial.println("LED is turned on");
    }
    if (message == "off" && ledState) {
        digitalWrite(LED, LOW); // Turn off the LED
        ledState = false;
        Serial.println("LED is turned off");
    }
    Serial.println();
    Serial.println("-----------------------");
}