#include <WiFi.h>
#include <PubSubClient.h>
#include "DHTesp.h"
const int DHT_PIN = 23;
// Variáveis/constantes
const char* ssid = "Wokwi-GUEST"; //Rede wifi
const char* pass = ""; //senha
const char* mqtt_server = "meztli.ddns.net";
const char* mqtt_usuario = "usuario"; //meztli
const char* mqtt_passwd = "a12345"; //meztli
char clientId[50];
String wokwi_payload;
String wokwi_topic;
WiFiClient ClienteWokwi;
PubSubClient client(ClienteWokwi);
DHTesp dhtSensor;
void callback(char* topic, byte* payload, unsigned int length) {
String c_payload;
for (int i = 0; i < length; i++) {
c_payload +=((char)payload[i]);
}
wokwi_topic = topic;
wokwi_payload=c_payload;
Serial.print("Mensaje recibido [");
Serial.print(topic);
Serial.print("- ");
Serial.print(wokwi_payload);
Serial.print("] ");
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Estableciendo conexion MQTT...");
// Attempt to connect
long r = random(1000);
sprintf(clientId, "ESP32-Wokwi%ld", r);
if (client.connect(clientId,mqtt_usuario, mqtt_passwd)) {
Serial.print(mqtt_server);
Serial.println("Conexión exitosa!");
client.subscribe("ESP32-");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" intentando nuevamente en 5 segundos");
// Aguardando 5 segundos
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, pass); //config wifi
while(WiFi.status() != WL_CONNECTED){ //conectando...
delay(100);
Serial.print("*");
}
Serial.println("WiFi Connectado!");
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
}
void publica_dados()
{
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temperatura: " + String(data.temperature, 2) + "°C");
Serial.println("Humeddad: " + String(data.humidity, 1) + "%");
Serial.println("---");
String dados;
dados= String(data.temperature,2) + String(",") + String(data.humidity, 1);
client.publish("casa/temperatura",String(data.temperature,2).c_str());
client.publish("casa/humedad",String(data.humidity,1).c_str());
//client.publish("ESP32-Wokwi2",String(",").c_str());
//client.publish("ESP32-Wokwi2",dados.c_str());
delay(2000);
}
void loop() {
if (!client.connected()) {
reconnect();
}
publica_dados();
client.loop();
}