#include <FirebaseESP32.h>
#include <WiFi.h>
#include "DHT.h"
#define FIREBASE_HOST "https://smart-home-7b44f-default-rtdb.firebaseio.com"
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
#define FIREBASE_Authorization_key "oTRPje2my9ROlP2dIhJMzEd66sd3arqmtC4WG6cv"
FirebaseData firebaseData;
FirebaseJson json;
int led = 27;
String message = "";
String message1 = "";
String s_pir = "";
String b = "";
String c = "";
bool a = 0;
#define pir 14
#define buzzer 12
#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
pinMode(led, OUTPUT);
pinMode(pir, INPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(115200);
dht.begin();
WiFi.begin (WIFI_SSID, WIFI_PASSWORD);
Serial.println("Connecting...");
while (WiFi.status() != WL_CONNECTED) {
Serial.println("NOT CONNECTED");
delay(300);
}
b = WIFI_SSID;
Serial.println();
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
Serial.println();
Firebase.begin(FIREBASE_HOST,FIREBASE_Authorization_key);
}
void loop() {
bool state_pir = digitalRead(pir);
if (Firebase.getString(firebaseData, "/ESP32APP_LED/LED")) {
String message_fb = firebaseData.stringData();
if (message_fb != message) {
message = message_fb;
if(message.indexOf("LED ON") != -1){digitalWrite(led, HIGH);}
if(message.indexOf("LED OFF") != -1){digitalWrite(led, LOW);}
}
}
if (Firebase.getString(firebaseData, "/ESP32APP_MOTION/ALARM_SET")) {
String message1_fb = firebaseData.stringData();
if (message1_fb != message1) {
message1 = message1_fb;
if(message1.indexOf("ALARM SET ON") != -1){
a=1;
s_pir = "READY";
}
if(message1.indexOf("ALARM SET OFF") != -1){
digitalWrite(buzzer, LOW);
s_pir = "OFF";
a=0;
}
}
}
if (state_pir==1 && a==1){
digitalWrite(buzzer, HIGH);
s_pir = "THIEFFFF";
}
float hum = dht.readHumidity();
float temp = dht.readTemperature();
if (isnan(hum) || isnan(temp) ){
Serial.println(F("Failed to read from DHT sensor!"));
c = "FAILED";
}
else {
c= "READY";
}
Serial.print("Temperature: ");
Serial.print(temp);
Serial.print("°C");
Serial.print(" Humidity: ");
Serial.print(hum);
Serial.print("%");
Serial.print(" ");
Serial.print(message);
Serial.print(" ");
Serial.print(message1);
Serial.print(" ");
Serial.print(s_pir);
Serial.println();
Firebase.setFloat(firebaseData, "/ESP32APP_DHT11/TEMPERATURE", temp);
Firebase.setFloat(firebaseData, "/ESP32APP_DHT11/HUMIDITY", hum);
Firebase.setString(firebaseData, "/ESP32APP_DHT11/STATUS", c);
Firebase.setString(firebaseData, "/ESP32APP_MOTION/BUZZER", s_pir);
Firebase.setString(firebaseData, "/ESP32APP_WIFI/STATUS", b);
delay(200);
}