#include <DHT.h>
#include <WiFi.h>
#include <ThingerESP32.h>
// Configuración de credenciales Thinger.io
#define USERNAME "JairoHerrera"
#define DEVICE_ID "PRACTICA1"
#define DEVICE_CEDENTIAL "1715864144"
// Pines de los sensores DHT22
#define DHT_PIN_DATA1 22
#define DHT_PIN_DATA2 19
// Inicialización de la conexión Thinger.io
ThingerESP32 thing(USERNAME, DEVICE_ID, DEVICE_CEDENTIAL);
// Inicialización de los sensores DHT22
DHT dht1(DHT_PIN_DATA1, DHT22);
DHT dht2(DHT_PIN_DATA2, DHT22);
void setup() {
Serial.begin(115200);
Serial.println("Iniciando sensores y conexión...");
// Iniciar sensores DHT
dht1.begin();
dht2.begin();
// Conexión WiFi
thing.add_wifi("Wokwi-GUEST", "");
// Configuración de recursos en Thinger.io para el primer sensor
thing["dht1"] >> [](pson &out) {
out["Ruido"] = dht1.readTemperature();
out["Contaminación"] = dht1.readHumidity();
};
// Configuración de recursos en Thinger.io para el segundo sensor
thing["dht2"] >> [](pson &out) {
out["Temperatura"] = dht2.readTemperature();
out["CO2"] = dht2.readHumidity();
};
}
void loop() {
thing.write_bucket("DBC01","dht1");
thing.write_bucket("DBC02","dht2");
thing.handle();
// Leer datos del primer sensor
float hum1 = dht1.readHumidity();
float temp1 = dht1.readTemperature();
Serial.print("[Sensor 1] Ruido: ");
Serial.println(hum1);
Serial.print(" %, Polution: ");
Serial.println(temp1);
// Enviar alarmas para el primer sensor
if (hum1 >= 75) {
pson dato;
dato["HR"] = hum1;
thing.call_endpoint("emailHR", dato);
Serial.println("[Alarma] Sensor 1: Alta contaminación auditiva");
}
if (temp1 >= 35) {
pson dato;
dato["Temp"] = temp1;
thing.call_endpoint("email", dato);
Serial.println("[Alarma] Sensor 1: Alta contaminación en el aire");
}
// Leer datos del segundo sensor
float hum2 = dht2.readHumidity();
float temp2 = dht2.readTemperature();
Serial.print("[Sensor 2] nivel CO2: ");
Serial.println(hum2);
Serial.print(" %, Temperatura: ");
Serial.println(temp2);
// Enviar alarmas para el segundo sensor
if (hum2 >= 75) {
pson dato;
dato["HR1"] = hum2;
thing.call_endpoint("emailHR1", dato);
Serial.println("[Alarma] Sensor 2: Alta concentración de CO2");
}
if (temp2 >= 35) {
pson dato;
dato["Temp1"] = temp2;
thing.call_endpoint("email1", dato);
Serial.println("[Alarma] Sensor 2: Alta temperatura");
}
// Retraso para evitar saturación del loop
delay(120000); // 2 minutos
}