// Learn about the ESP32 WiFi simulation in
// https://docs.wokwi.com/guides/esp32-wifi
#include <LiquidCrystal_I2C.h>
#include <DHTesp.h>
#include <HTTPClient.h>
#include <Arduino.h>
#include <ArduinoJson.h>
#include <WiFi.h>
#include <RTClib.h>
//setup
#define DHT_PIN 23
#define LED 2
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
DHTesp dhtSensor;
HTTPClient client;
RTC_DS1307 rtc;
//variables
float temperatura;
float humedad;
String temp_Post;
String hum_Post;
const char* ssid = "Wokwi-GUEST";
const char* password = "";
void setup() {
Serial.begin(115200);
// hardware
LCD.init();
LCD.backlight();
LCD.setCursor(0, 1);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(LED, OUTPUT);
// firebase
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
// esperar conexion
while (WiFi.status() != WL_CONNECTED)
{
Serial.println("Attempting connection...");
delay(500);
}
client.begin("https://a00827575-default-rtdb.firebaseio.com/.json");
client.addHeader("Content-Type", "application/json");
// fecha
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running, let's set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
TempAndHumidity sensorData = dhtSensor.getTempAndHumidity();
DateTime time = rtc.now();
temperatura = sensorData.temperature;
humedad = sensorData.humidity;
if (temperatura < 15)
{
temp_Post = "TEMP: BAJA ";
}
else if (temperatura >= 15 && temperatura < 35)
{
temp_Post = "TEMP: AMBIENTE";
}
else
{
temp_Post = "TEMP: ALTA ";
}
LCD.setCursor(0,0);
LCD.println(temp_Post);
LCD.setCursor(0,1);
LCD.println("HUMEDAD: " + String(humedad, 1) + "%");
String json;
StaticJsonDocument<200> doc;
doc["Humedad"] = String(humedad, 1) + "%";
doc["Temperatura"] = String(temperatura, 2) + "°C";
doc["Sensor"] = "DHT22";
if (temperatura < 15)
{
doc["Status"] = "FRIO";
}
else if (temperatura >= 15 && temperatura < 35)
{
doc["Status"] = "AGRADABLE";
}
else
{
doc["Status"] = "CALIENTE";
}
doc["Fecha"] = time.timestamp(DateTime::TIMESTAMP_DATE);
serializeJson(doc, json);
client.PATCH(json);
String payload = client.getString();
Serial.println(payload);
for (int i = 0; i < 5; i++)
{
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
}
delay(30000);
}
//id
//9f5682de-0137-46bc-ba21-102d152fb983
//secret key
//VDM6YMFNSACIDNXSBYCQ