#include <WiFi.h>
#include <ThingerESP32.h>
#include "DHT.h"
// Configuración de Thinger.io
#define USERNAME "Airton2804"
#define DEVICE_ID "airton11"
#define DEVICE_CREDENTIAL "o$3N!FijeZ_23@mO"
ThingerESP32 thing(USERNAME, DEVICE_ID, DEVICE_CREDENTIAL);
// Configuración del sensor DHT
#define DHTPIN 4 // Pin donde está conectado el DHT
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Configuración del sensor de humedad del suelo
#define SOIL_SENSOR_PIN 34
void reconnectWiFi() {
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Reconectando WiFi...");
WiFi.begin("Wokwi-GUEST", "");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConectado a WiFi Wokwi-GUEST");
}
}
void setup() {
Serial.begin(115200);
// Inicializar DHT
dht.begin();
Serial.println("Sensor DHT iniciado");
// Conexión WiFi
WiFi.begin("Wokwi-GUEST", "");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nConectado a WiFi Wokwi-GUEST");
// Conectar a Thinger.io
thing.add_wifi("Wokwi-GUEST", "");
Serial.println("Conectado a Thinger.io");
// Exponer los datos a Thinger.io
thing["environment"] >> [](pson &out) {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
int soil_moisture = analogRead(SOIL_SENSOR_PIN);
// Validar lecturas
if (isnan(temp) || isnan(hum)) {
Serial.println("Error al leer el sensor DHT");
return;
}
// Normalizar el valor de humedad del suelo
soil_moisture = map(soil_moisture, 0, 4095, 0, 100);
// Exponer los datos al dashboard de Thinger.io
out["temperature"] = temp;
out["humidity"] = hum;
out["soil_moisture"] = soil_moisture;
// Mostrar los valores en el monitor serie
Serial.print("Temp: "); Serial.print(temp);
Serial.print(" °C, Hum: "); Serial.print(hum);
Serial.print(" %, Soil: "); Serial.print(soil_moisture);
Serial.println(" %");
// Verificar si la humedad del suelo es menor a 33%
if (soil_moisture < 33) {
pson data;
data["soil_moisture"] = soil_moisture; // Agregar humedad
thing.call_endpoint("end01", data); // Llamar al endpoint "warning"
Serial.println("Envío de alerta por baja humedad del suelo");
}
};
}
void loop() {
// Manejar la conexión con Thinger.io
reconnectWiFi();
thing.handle();
}