Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <WiFiManager.h> // https://github.com/tzapu/WiFiManager
- #include "DHT.h" // https://github.com/adafruit/DHT-sensor-library/
- #include <WiFi.h>
- #include <FirebaseESP32.h>
- #include <addons/TokenHelper.h>
- #include <addons/RTDBHelper.h>
- #define LOCK_Relay_PIN 5
- #define DHT11_SENSOR_PIN 18
- #define DOOR_SENSOR_PIN 19
- #define PACKAGE_SENSOR_PIN 34
- #define API_KEY "AIzaSyAMLah8tvEF1v6MZBHMos3XYUIhVZOGyl0"
- #define DATABASE_URL "project-edab4-default-rtdb.firebaseio.com"
- #define USER_EMAIL "ProjectSamrtPOBOXFirebase@proton.me"
- #define USER_PASSWORD "123456789"
- #define DATABASE_SECRET "NLIrkh5Zg7AcUv9OzWoOyLZgq56R7qBAC0fSzpbI"
- FirebaseData fbdo;
- FirebaseAuth auth;
- FirebaseConfig config;
- unsigned long sendDataPrevMillis = 0;
- unsigned long getDataPrevMillis = 0;
- String password_To_Open_the_door;
- String user_inputPassword;
- int doorState;
- int packageState;
- float h;
- float t;
- int resetInputPasswordFlag = 0;
- String String_temperature = "";
- String String_humidity = "";
- String String_package_available = "";
- String String_door_sensor_open = "";
- int package_threshold = 2800;
- DHT dht(DHT11_SENSOR_PIN, DHT11);
- void setup() {
- Serial.begin(9600);
- Connect_To_WiFi();
- Setup_Sensors_and_Inputs_and_Outputs();
- Connect_To_Firebase();
- }
- void loop() {
- ReConnect_To_WiFi();
- Read_Password_from_Database(1000);
- Read_DHT11_Sensor();
- Read_Package_Sensor();
- Read_Door_Sensor();
- Write_Data_to_Database(2000);
- //digitalWrite(LOCK_Relay_PIN, HIGH);
- }
- void Setup_Sensors_and_Inputs_and_Outputs() {
- dht.begin();
- pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP);
- pinMode(PACKAGE_SENSOR_PIN, INPUT);
- pinMode(LOCK_Relay_PIN, OUTPUT);
- digitalWrite(LOCK_Relay_PIN, LOW);
- }
- void ReConnect_To_WiFi() {
- while (WiFi.status() != WL_CONNECTED) {
- //delay(500);
- Serial.print(".");
- Connect_To_WiFi();
- }
- }
- void Connect_To_WiFi() {
- WiFiManager wm;
- bool res;
- res = wm.autoConnect("Smart P.O. Box [Setup WiFi]"); // password protected ap
- if (!res) {
- Serial.println("Failed to Connect!!");
- // ESP.restart();
- }
- else {
- //if you get here you have connected to the WiFi
- Serial.println("Connected...");
- }
- }
- void Read_Door_Sensor() {
- doorState = digitalRead(DOOR_SENSOR_PIN);
- String_door_sensor_open = String(doorState);
- if (doorState == HIGH) {
- Serial.println("The door is open");
- }
- else if (doorState == LOW) {
- Serial.println("The door is closed");
- }
- }
- void Read_Package_Sensor() {
- packageState = analogRead(PACKAGE_SENSOR_PIN);
- //Serial.println(packageState);
- if (packageState < package_threshold) {
- Serial.println("Package Inside");
- String_package_available = "1";
- }
- else if (packageState > package_threshold) {
- Serial.println("P.O. Box is EMPTY");
- String_package_available = "0";
- }
- }
- void Read_DHT11_Sensor() {
- h = dht.readHumidity();
- t = dht.readTemperature();
- Serial.print(F("Humidity: "));
- Serial.print(h);
- Serial.print(F("% Temperature: "));
- Serial.print(t);
- Serial.println(F("°C "));
- String_temperature = String(t);
- String_humidity = String(h);
- }
- void Read_Password_from_Database(unsigned long timeE) {
- if (Firebase.ready() && (millis() - getDataPrevMillis > timeE || getDataPrevMillis == 0)) {
- getDataPrevMillis = millis();
- if (Firebase.getString(fbdo, F("/password"))) {
- password_To_Open_the_door = fbdo.stringData();
- Serial.print("Password retrieved successfully: ");
- Serial.print("Password is Set to: ");
- Serial.println(password_To_Open_the_door);
- }
- if (Firebase.getString(fbdo, F("/user_input_password"))) {
- user_inputPassword = fbdo.stringData();
- if (user_inputPassword == "" || user_inputPassword == "1") {
- Serial.println("No Password Entered to Open the Box");
- }
- else {
- Serial.print("Password: ");
- Serial.println(user_inputPassword);
- resetInputPasswordFlag = 1;
- if (user_inputPassword == password_To_Open_the_door) {
- Serial.println("Open Door Password Correct");
- digitalWrite(LOCK_Relay_PIN, HIGH);
- delay(5000);
- digitalWrite(LOCK_Relay_PIN, LOW);
- }
- else {
- Serial.println("Password Wrong!!!!!!!!!!!!!!!!!!!!!!");
- digitalWrite(LOCK_Relay_PIN, LOW);
- }
- }
- }
- }
- }
- void Write_Data_to_Database(unsigned long timeE) {
- if (millis() - sendDataPrevMillis > timeE && Firebase.ready())
- {
- sendDataPrevMillis = millis();
- String path1 = "/temperature";
- String path2 = "/humidity";
- String path3 = "/package_available";
- String path4 = "/door_sensor_open";
- String path5 = "/user_input_password";
- String emptyString = "1";
- Serial.printf("Set temperature... %s\n", Firebase.setString(fbdo, path1, String_temperature) ? "ok" : fbdo.errorReason().c_str());
- Serial.printf("Set humidity... %s\n", Firebase.setString(fbdo, path2, String_humidity) ? "ok" : fbdo.errorReason().c_str());
- Serial.printf("Set package_available... %s\n", Firebase.setString(fbdo, path3, String_package_available) ? "ok" : fbdo.errorReason().c_str());
- Serial.printf("Set door_sensor_open... %s\n", Firebase.setString(fbdo, path4, String_door_sensor_open) ? "ok" : fbdo.errorReason().c_str());
- if (resetInputPasswordFlag) {
- Serial.println("------------------------------------------------------");
- Serial.printf("Set user_input_password... %s\n", Firebase.setString(fbdo, path5, emptyString) ? "ok" : fbdo.errorReason().c_str());
- Serial.println("------------------------------------------------------");
- resetInputPasswordFlag = 0;
- }
- }
- }
- void Connect_To_Firebase() {
- Serial.printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);
- config.api_key = API_KEY;
- auth.user.email = USER_EMAIL;
- auth.user.password = USER_PASSWORD;
- config.database_url = DATABASE_URL;
- config.token_status_callback = tokenStatusCallback;
- Firebase.reconnectWiFi(true);
- fbdo.setResponseSize(4096);
- Firebase.begin(&config, &auth);
- Firebase.setDoubleDigits(5);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement