// Bibliotecas
#include <PubSubClient.h> // PubSubClient
#include <EspMQTTClient.h> // EspMQTTClient
#include <ArduinoJson.h> // ArduinoJson
#include <DHTesp.h> // DHT sensor library for ESPx
// Variáveis
#define DHT_PIN 15
float controle_temp, controle_umid;
DHTesp dhtSensor;
DynamicJsonDocument dados(1024);
// Conexões WI-FI e MQTT
EspMQTTClient client(
"Wokwi-GUEST", //Rede wi-fi
"", // Senha wi-fi
"mqtt.tago.io", // Broker
"Default", // Usuário
"token", // Token da plataforma Tago.io
"Esp32" // Identificação única
);
// MQTT (Função que recebe dados do Subscribe)
void mensagemRecebida(const String &topico){
}
// MQTT (Subscribe)
void onConnectionEstablished() {
client.subscribe("topic", mensagemRecebida);
}
// Setup
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
}
// Loop
void loop() {
client.loop();
// Leitura de dados DHT22
TempAndHumidity data = dhtSensor.getTempAndHumidity();
// Variáveis de Temperatura e Umidade
float temp = data.temperature;
float umid = data.humidity;
// Insere os dados no JSON
dados[0]["variable"] = "Temperatura";
dados[0]["value"] = temp;
dados[0]["unit"] = "°C";
dados[1]["variable"] = "Umidade";
dados[1]["value"] = umid;
dados[1]["unit"] = "%";
// conversão da estrutura de dados (JSON)
String dadosJsom;
serializeJson(dados, dadosJsom);
// MQTT (Publish) e controle (alteração de valores)
if(controle_umid != umid || controle_temp != temp){
Serial.println(dadosJsom);
client.publish("dadosJsomEsp32", dadosJsom);
controle_temp = temp;
controle_umid = umid;
}
delay(1000);
}