Projeto integração com ESP32

Prezados, boa noite !

Meu projeto baseia-se em um ESP32 que recebe a informação BSSID do ponto de acesso. O mesmo deve enviar este código juntamente com o seu MAC ADRESS próprio para o servidor wnology.
Já tenho um código para envio.
O que preciso:
Configurar o frontend do servidor para receber estes dados, fazer uma comparativa com a base de dados, onde estes identificadores já estarão previamente mapeados. a partir da comparação, um template com tabelas com marca, modelo, numero de serie, BSSID e Setor deverá ser gerado.
Alguém pode me ajudar com estes passos ?

Olá Lucas!

Para enviar os dados de um ESP32 ou um ESP8266 para a plataforma você pode se basear no tópico já existente no Fórum:

Neste tópico acima enviamos um exemplo simples e explicamos ele.
Segue o link do arquivo .ZIP:
https://forums.app.wnology.io/uploads/short-url/y66b3395zf13rFxxPcP3oitVbfk.zip

No JSON que contém os dados, além de suas variáveis, adicione o objetos citados, por exemplo:


  /*FORMATO DA MENSAGEM JSON
  {
    "data" :
    {
      "TESTE1" : 1,
      "TESTE2" : 5,
      "TESTE2" : 1.234,
      "TESTE2" : "OK",
      "macAddress" : "00:01:c2:12:34:56",
      "BSSID" : "accessPoint1"
    }
  }
 */

na Platafotma

Agora, uma vez subindo estes dados, crie um workflow para acessar eles e comparar com uma DataTable, por exemplo.

1 - Para acessar estes dados, temos o bloco "Device State" (trigger)
2 - Com os blocos de “datatable” é possível pesquisar qual é o Setor correspondente.
3 - Usando um bloco “Device State” (de saída), é possível persistir o dado no atributo de um device


FZijvjc.png)
Olá ! Em minha ocasião, estou utilizando o simulador de Esp32 Workwi. ele envia os dados do BSSID e Macadress do dispositivo atribulado para o Wegnology. O servidor deve receber o bssid e comparar com a tabela BSSIDxSetor, e retornar a qual setor pertence o dispositivo.
A mesma lógica para o mac, comparar com tabela macadress x Equipamento, e retornar os dados completos do equipamento.
a parte do envio pelo simulador é bem sucedida, porém no debug do Wegnology não a recebo. Mesmo já tendo configurado o Endpoint.

Boa tarde!

Não estamos entendendo o que você cita “configurar o front do servidor”.
Não é necessário nenhum trabalho de front-end na Plataforma WEGnology, ou seja, desde que seja enviado o payload corretamente, nos valores já são salvos nos atributos do Device.

Você poderia anexar todo o código do ESP32 aqui?

Talvez poderemos te auxiliar nele, provavelmente o payload não está sendo gerado de acordo.

Muito obrigado!

O que ocorre é o seguinte.
O programa roda e obtém o mac e o bssid, e envia para o token da wegnology. No console do programa do ESP retorna “myCustomData”: “Dados obtidos com sucesso no wegnology”, mostrando que está enviando corretamente para o servidor.
Após isto, segui as orientações de criação do workflow, porém dentro de cada um deles não sei direito como manusear. o Payload, o result path… e por fim, criar o template do usuário mostrando os valores, para ver aonde será necessário acertar o casamento de variáveis.


#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* serverName = "https://66ecbaa830d3ef4fcd44f9f8.wnology.io/devices/{66ecbaa830d3ef4fcd44f9f8}/{attribute?}";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid,password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
  }
}

void loop() {
  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;

    http.begin(serverName);
    http.addHeader("Content-Type", "application/json");
    http.addHeader("Authorization", "Bearer 66ecbe0763f9064902ede3c3");

    String mac = WiFi.macAddress();
String bssid = WiFi.BSSIDstr();
Serial.println("MAC Address: " + mac);
Serial.println("BSSID: " + bssid);
    String jsonData = "{\"data\": {\"MAC Address\": \"" + mac + "\", \"BSSID\": \"" + bssid + "\"}}";

    int httpResponseCode = http.POST(jsonData);
    if (httpResponseCode > 0) {
      String response = http.getString();
      Serial.println(response);
    } else {
      Serial.println("Error on sending POST");
    }

    http.end();
  }
  delay(10000);
}

Boa tarde @LucasVital,

Pelo que entendi, você quer enviar as informações de BSSID e MAC ADRESS do ESP32. Então realizar uma consulta a um data table, com essas informações, para buscar informações referentes a Setor e Equipamento, mas não ficou claro o que gostaria de fazer com essas informações, se seria somente responder nessa API (endpoint) criado, ou se gostaria de publicar essas informações no timeseries do dispositivo. E após isso desenvolver uma interface que permita consultar essas informações.

No caso da imagem do flow que você enviou, você utilizou um Experience Endpoint, provavelmente sem autenticação, o que não é recomendado por questões de segurança. Recomendo utilizar conforme o tópico que o Alexandre comentou, utilizando MQTT, e passando credenciais de autenticação do dispositivo.

Após isso, no recebimento dos dados você teria que utilizar as queries de data table, Table: Get Rows Node, para buscar as informações de Setor e Equipamento das respectivas tabelas, usando filtros como BSSID == "{{data.BSSID}} nas consultas as tabelas, para retornar a linha referente a esse dispositivo, mas depende de como seus dados estão estruturados na tabela.

Então você tera que manipular esses dados retornado para o formato desejado, recomendo a leitura dessa documentação Accessing Payload Data, que trás referências de como manipular os dados em workflows.

Assim, você poderá utilizar esses dados para responder a API, ou então salvar esses dados no dispositivo, conforme sua necessidade, e então desenvolver uma interface para consulta posteriormente.