/*
Make sure your Firebase project's '.read' and '.write' rules are set to 'true'.
Ignoring this will prevent the MCU from communicating with the database.
For more details- https://github.com/Rupakpoddar/ESP32Firebase
*/
#include <ESP32Firebase.h>
#include <WiFi.h>
#define _SSID "Wokwi-GUEST" // Your WiFi SSID
#define _PASSWORD "" // Your WiFi Password
#define REFERENCE_URL "https://pnu-parking-default-rtdb.firebaseio.com/" // Your Firebase project reference url
Firebase firebase(REFERENCE_URL);
const int PIR_SENSOR_OUTPUT_PIN = 12;
const int GreenLed=14;
const int RedLed=27;
void setup() {
pinMode(PIR_SENSOR_OUTPUT_PIN, INPUT);
Serial.begin(115200);
pinMode(GreenLed, OUTPUT);
pinMode(RedLed, OUTPUT);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(1000);
// Connect to WiFi
Serial.println();
Serial.println();
Serial.print("Connecting to: ");
Serial.println(_SSID);
WiFi.begin(_SSID, _PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print("-");
}
Serial.println("");
Serial.println("WiFi Connected");
// Print the IP address
Serial.print("IP Address: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
int data1=0,sensor_output=0;
void loop() {
data1 = firebase.getInt("RESERVE/APP");
while(data1==0)
{
sensor_output = digitalRead(PIR_SENSOR_OUTPUT_PIN);
if(sensor_output==LOW)
{
digitalWrite(GreenLed, HIGH);
digitalWrite(RedLed, LOW);
firebase.setInt("RESERVE/ESP", 1);
Serial.print("LOW\n");
}
else
{
digitalWrite(GreenLed, LOW);
digitalWrite(RedLed, HIGH);
firebase.setInt("RESERVE/ESP", 0);
Serial.print("HIGH\n");
}
data1 = firebase.getInt("RESERVE/APP");
Serial.print("Received int:\t");
Serial.println(data1);
delay(100);
}
while(data1==1)
{
digitalWrite(GreenLed, LOW);
digitalWrite(RedLed, HIGH);
firebase.setInt("RESERVE/ESP", 0);
data1 = firebase.getInt("RESERVE/APP");
Serial.print("Received int:\t");
sensor_output = digitalRead(PIR_SENSOR_OUTPUT_PIN);
Serial.println(data1);
if(sensor_output==LOW)
{
firebase.setInt("RESERVE/ESP2", 1);
Serial.print("LOW\n");
}
else
{
firebase.setInt("RESERVE/ESP2", 0);
Serial.print("HIGH\n");
}
};
}