#include <FirebaseESP32.h>
#include <FirebaseJson.h>
#define PIR_GPIO_PIN 4 // Pin connected to the PIR sensor (D2 on NodeMCU)
#define LED_GPIO_PIN 2 // Assuming you connected the LED to D2 on NodeMCU
// Firebase configuration
#define FIREBASE_HOST "your-firebase-project-id.firebaseio.com"
#define FIREBASE_AUTH "your-firebase-secret-key"
FirebaseData firebaseData;
FirebaseAuth auth;
FirebaseConfig firebaseConfig;
void setupFirebase() {
firebaseConfig.api_key="AIzaSyCi1xNkwLIkSxWLTCRymVwJjgCsHfb3n3k",
firebaseConfig.database_url="https://iot-garage-door-default-rtdb.europe-west1.firebasedatabase.app",
firebaseConfig.host = "evthardware-47a6a-default-rtdb.asia-southeast1.firebasedatabase.app",
Firebase.begin(&firebaseConfig, &auth);
}
void updateFirebase(bool motionDetected) {
FirebaseJson json;
json.add("motion_detected", motionDetected);
if (Firebase.pushJSON(firebaseData, "/motion_events", json)) {
Serial.println("Data pushed to Firebase successfully");
} else {
Serial.println("Failed to push data to Firebase");
}
}
void setup() {
Serial.begin(115200);
pinMode(PIR_GPIO_PIN, INPUT);
pinMode(LED_GPIO_PIN, OUTPUT);
setupFirebase(); // Initialize Firebase
}
void loop() {
int motionState = digitalRead(PIR_GPIO_PIN);
if (motionState == HIGH) {
Serial.println("Motion detected!");
digitalWrite(LED_GPIO_PIN, HIGH); // Turn on the LED
// Update Firebase with motion detection
updateFirebase(true);
delay(2000); // Adjust the delay time based on your preference
digitalWrite(LED_GPIO_PIN, LOW); // Turn off the LED
} else {
digitalWrite(LED_GPIO_PIN, LOW); // Ensure the LED is off when no motion is detected
}
delay(1000); // Adjust the delay time based on your preference
}