#define BLYNK_TEMPLATE_ID "TMPL2RSkUtq1S"
#define BLYNK_TEMPLATE_NAME "GRUPO 3"
#define BLYNK_AUTH_TOKEN "pT2aD-H2Ed4Y4G8F0RUJgdSlY5XJPaei"
#define BLYNK_PRINT Serial // Permite imprimir mensajes de depuración en el monitor serial
#include <WiFi.h> // Biblioteca para conectar a WiFi (ESP32)
#include <WiFiClient.h> // Biblioteca para manejar clientes WiFi
#include <BlynkSimpleEsp32.h> // Biblioteca para integrar Blynk con ESP32
char ssid[] = "Wokwi-GUEST"; // Nombre de la red WiFi a la que se conectará
char pass[] = ""; // Contraseña de la red WiFi (aquí está vacía porque es una red abierta)
BlynkTimer timer; // Crea un temporizador de Blynk para ejecutar tareas periódicas
// SENSOR DHT
#include <DHTesp.h> // Biblioteca para manejar sensores DHT
const int DHT_PIN = 15; // Pin donde está conectado el sensor DHT
byte led = 2; // Pin donde está conectado el LED (GPIO2)
DHTesp dhtSensor; // Crea un objeto para interactuar con el sensor DHT
float temp, hum; // Variables para almacenar temperatura y humedad
void setup()
{
Serial.begin(115200); // Inicia la comunicación serial a 115200 baudios
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass); // Conecta el dispositivo a Blynk y WiFi
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); // Configura el sensor DHT como DHT22 en el pin definido
timer.setInterval(2000L, myTimerEvent); // Configura el temporizador para ejecutar myTimerEvent cada 2 segundos
pinMode(led, OUTPUT); // Configura el pin del LED como salida
}
void myTimerEvent()
{
TempAndHumidity data = dhtSensor.getTempAndHumidity(); // Obtiene los datos de temperatura y humedad del sensor
if (isnan(data.temperature) || isnan(data.humidity)) { // Verifica si los datos del sensor son válidos
Serial.println("Error leyendo el sensor DHT22.."); // Muestra un mensaje de error si los datos no son válidos
return; // Sale de la función si no se pueden leer los datos
}
temp = data.temperature; // Almacena la temperatura obtenida en la variable temp
hum = data.humidity; // Almacena la humedad obtenida en la variable hum
Serial.println("Temperatura: " + String(temp, 1) + "C"); // Imprime la temperatura con 1 decimal
Serial.println("Humedad: " + String(hum, 1) + "%"); // Imprime la humedad con 1 decimal
// CODIGO PARA ENVIAR NOTIFICACION
if (temp > 35) { // Si la temperatura supera los 35°C
Serial.println("Temperatura Alta!!!"); // Imprime un mensaje de advertencia
delay(1000); // Pausa de 1 segundo
}
Blynk.virtualWrite(V1, temp); // Envía la temperatura al pin virtual V1 de Blynk
Blynk.virtualWrite(V0, hum); // Envía la humedad al pin virtual V0 de Blynk
}
BLYNK_WRITE(V2) // Función que se ejecuta cuando el valor del pin virtual V2 cambia
{
int pinValue = param.asInt(); // Lee el valor del pin virtual (0 o 1)
Serial.print("V2 Switch value is: "); // Imprime el valor recibido
Serial.println(pinValue);
digitalWrite(led, pinValue); // Controla el LED según el valor recibido (encender/apagar)
}
void loop()
{
Blynk.run(); // Mantiene la conexión y sincronización con el servidor de Blynk
timer.run(); // Ejecuta las tareas programadas en el temporizador
}