#include <DHT.h>
#include <LiquidCrystal.h>
#include <Wire.h>
#include <Arduino.h>
#include <WiFi.h>
#include <ESP32Firebase.h>
#include <ArduinoJson.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
#define REFERENCE_URL "https://dht11firebase-ebfeb-default-rtdb.firebaseio.com/"
#define PPM_PIN 0
#define DHTPIN 23
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12,25,21,19,17,4);
int ledPinR = 15;
int ledPinG = 16;
Firebase firebase(REFERENCE_URL);
void setup() {
Wire.begin(23, 22);
Serial.begin(9600);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to WiFi");
Serial.println(WiFi.localIP());
pinMode(ledPinR, OUTPUT);
pinMode(ledPinG, OUTPUT);
lcd.begin(16, 2);
lcd.print("System Starting !");
}
void loop() {
float temperature = dht.readTemperature();
float h = dht.readHumidity();
int16_t ppmValue = analogRead(PPM_PIN);
firebase.setString("Sensor_Data/Temperature", String(temperature));
firebase.setString("Sensor_Data/Humidity", String(h));
firebase.setString("Sensor_Data/AirQuality", String(ppmValue));
firebase.json(true);
if (temperature > 39 || temperature < 18 || h < 20 || h > 90 ) {
lcd.clear();
digitalWrite(ledPinR, HIGH);
digitalWrite(ledPinG, LOW);
Serial.print(F("Temperature: "));
Serial.print(temperature);
Serial.println(F("°C"));
lcd.print(temperature);
lcd.print("C /");
Serial.print(F("Humidité: "));
Serial.print(h);
lcd.print(h);
lcd.print("%");
Serial.println(F("%"));
} else {
lcd.clear();
digitalWrite(ledPinG, HIGH);
digitalWrite(ledPinR, LOW);
Serial.print(F("Temperature: "));
Serial.print(temperature);
lcd.print(temperature);
lcd.print("C /");
Serial.println(F("°C"));
Serial.print(F("Humidité: "));
Serial.print(h);
lcd.print(h);
lcd.print("%");
Serial.println(F("%"));
}
Serial.print("PPM: ");
Serial.println(ppmValue);
delay(1000);
}