#include <WiFi.h>
#include <PubSubClient.h>
#include "DHTesp.h"
const int DHT_PIN = 19;
DHTesp dhtSensor;
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Datos del Broker
//const char* mqtt_server = "66.29.142.107";
const char* mqtt_server = "broker.hivemq.com";
//const uint16_t MQTT_PORT = 1883;
WiFiClient espClientChaux;
PubSubClient client(espClientChaux);
long lastMsg = 0;
void setup_wifi(){
delay(10);
Serial.println();
Serial.println("Conectando a ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.print("IP: ");
Serial.println(WiFi.localIP());
}
void reconnect(){
while (!client.connected()){
Serial.print("Intentando conectar a MQTT broker ...");
if (client.connect("ESP32ClientChaux")){
Serial.println("Conectado");
} else {
Serial.print("Fallido, rc=");
Serial.print(client.state());
Serial.println(" intente de nuevo en 5 s");
//Espera 5 segundos antes de reintentar
delay(5000);
}
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
}
void loop() {
if (!client.connected()){
reconnect();
}
client.loop();
long now = millis();
if (now - lastMsg > 1000) {
lastMsg = now;
TempAndHumidity data = dhtSensor.getTempAndHumidity();
char char_temp[10];
char char_hum[10];
//char * itoa( int valor, char * cadena_destino, int base )
//Esta función se utiliza para convertir un valor numérico en una cadena de texto, es decir,
//que permite convertir un número entero en un texto. La cadena contendrá tantos carácteres
//como dígitos tenga el resultado.
itoa(data.temperature, char_temp, 10);
itoa(data.humidity, char_hum, 10);
Serial.print("Temperatura: ");
Serial.println(char_temp);
Serial.print("Humedad: ");
Serial.println(char_hum);
client.publish("Prueba/Temp", char_temp);
client.publish("Prueba/Hum", char_hum);
}
}