#include <WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
/*************************Variables del dht22***********************************/
#include <DHT.h> //Cargamos la librería DHT
#define DHTTYPE DHT22 //Definimos el modelo del sensor DHT22
#define DHTPIN 4 // Se define el pin 4 del ESP32 para conectar el pin de datos del DHT22
DHT dht(DHTPIN, DHTTYPE);
/********************Parametros de conexion Wifi*******************************/
#define WLAN_SSID "*****" // Ingresa el nombre de tu red
#define WLAN_PASS "*****" // Ingresa la contraseña de tu red
/************************* Adafruit.io Setup *********************************/
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
#define AIO_USERNAME "SensorGLatam1"
#define AIO_KEY "aio_hnnS24g0eavlowsSZoUCj2KJCj9o"
/************ Estado global (¡no necesita cambiar esto!) *********************/
// Crea una clase WiFiClient para conectarse al servidor MQTT
WiFiClient client;
// o ... use WiFiFlientSecure para SSL
//WiFiClientSecure client;
// Configuración cliente MQTT pasando, cliente WiFi y servidor MQTT y los detalles de inicio de sesión.
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
/***************** Feeds que se definieron en Adafruit IO *******************/
// Configuracion para publicar los feeds
Adafruit_MQTT_Publish temperatura = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME"/feeds/temperatura");
/****************************************************************************/
void MQTT_connect();
void setup()
{
dht.begin();
pinMode(DHTPIN, INPUT);
Serial.begin(115200);
delay(10);
/*************************Conexión a la red wifi**************************/
Serial.println();
Serial.print("Connecting to ");
Serial.println(WLAN_SSID);
//WiFi.begin(WLAN_SSID, WLAN_PASS);
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi conectado");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
/****************************************************************************/
void loop()
{
MQTT_connect();
float tem = dht.readTemperature(); //Se lee la temperatura
Serial.print(F("\n Lectura"));
Serial.print(tem);
Serial.print("...");
if (! temperatura.publish(tem)) {
Serial.println(F("Failed"));
} else {
Serial.println(F("OK!"));
}
delay(2000);
}
void MQTT_connect() {
int8_t ret;
// Detener si ya está conectado
if (mqtt.connected()) {
return;
}
Serial.print("Conectando a MQTT... ");
uint8_t retries = 3;
while ((ret = mqtt.connect()) != 0) { // connect devolverá 0 para conectado
Serial.println(mqtt.connectErrorString(ret));
Serial.println("Re-intentando la conexión MQTT en 5 segundos...");
mqtt.disconnect();
delay(5000); // espera 5 segundos
retries--;
if (retries == 0) {
// La conexión falla y espera a que se reinicie
while (1);
}
}
Serial.println("MQTT Conectado!");
}