Advertisement
safwan092

Untitled

Feb 5th, 2024
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.13 KB | None | 0 0
  1.  
  2. #include <WiFiManager.h> // https://github.com/tzapu/WiFiManager
  3. #include "DHT.h" // https://github.com/adafruit/DHT-sensor-library/
  4. #include <WiFi.h>
  5. #include <FirebaseESP32.h>
  6. #include <addons/TokenHelper.h>
  7. #include <addons/RTDBHelper.h>
  8.  
  9. #define LOCK_Relay_PIN 5
  10. #define DHT11_SENSOR_PIN 18
  11. #define DOOR_SENSOR_PIN 19
  12. #define PACKAGE_SENSOR_PIN 34
  13.  
  14.  
  15. #define API_KEY "AIzaSyAMLah8tvEF1v6MZBHMos3XYUIhVZOGyl0"
  16. #define DATABASE_URL "project-edab4-default-rtdb.firebaseio.com"
  17. #define USER_EMAIL "ProjectSamrtPOBOXFirebase@proton.me"
  18. #define USER_PASSWORD "123456789"
  19. #define DATABASE_SECRET "NLIrkh5Zg7AcUv9OzWoOyLZgq56R7qBAC0fSzpbI"
  20.  
  21. FirebaseData fbdo;
  22. FirebaseAuth auth;
  23. FirebaseConfig config;
  24. unsigned long sendDataPrevMillis = 0;
  25. unsigned long getDataPrevMillis = 0;
  26. String password_To_Open_the_door;
  27. String user_inputPassword;
  28. int doorState;
  29. int packageState;
  30. float h;
  31. float t;
  32. int resetInputPasswordFlag = 0;
  33.  
  34. String String_temperature = "";
  35. String String_humidity = "";
  36. String String_package_available = "";
  37. String String_door_sensor_open = "";
  38.  
  39. int package_threshold = 2800;
  40.  
  41. DHT dht(DHT11_SENSOR_PIN, DHT11);
  42.  
  43. void setup() {
  44. Serial.begin(9600);
  45. Connect_To_WiFi();
  46. Setup_Sensors_and_Inputs_and_Outputs();
  47. Connect_To_Firebase();
  48.  
  49. }
  50.  
  51. void loop() {
  52. ReConnect_To_WiFi();
  53. Read_Password_from_Database(1000);
  54. Read_DHT11_Sensor();
  55. Read_Package_Sensor();
  56. Read_Door_Sensor();
  57. Write_Data_to_Database(2000);
  58. //digitalWrite(LOCK_Relay_PIN, HIGH);
  59. }
  60.  
  61. void Setup_Sensors_and_Inputs_and_Outputs() {
  62. dht.begin();
  63. pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP);
  64. pinMode(PACKAGE_SENSOR_PIN, INPUT);
  65. pinMode(LOCK_Relay_PIN, OUTPUT);
  66. digitalWrite(LOCK_Relay_PIN, LOW);
  67. }
  68.  
  69.  
  70. void ReConnect_To_WiFi() {
  71. while (WiFi.status() != WL_CONNECTED) {
  72. //delay(500);
  73. Serial.print(".");
  74. Connect_To_WiFi();
  75. }
  76. }
  77.  
  78. void Connect_To_WiFi() {
  79. WiFiManager wm;
  80. bool res;
  81. res = wm.autoConnect("Smart P.O. Box [Setup WiFi]"); // password protected ap
  82.  
  83. if (!res) {
  84. Serial.println("Failed to Connect!!");
  85. // ESP.restart();
  86. }
  87. else {
  88. //if you get here you have connected to the WiFi
  89. Serial.println("Connected...");
  90. }
  91. }
  92.  
  93. void Read_Door_Sensor() {
  94. doorState = digitalRead(DOOR_SENSOR_PIN);
  95. String_door_sensor_open = String(doorState);
  96. if (doorState == HIGH) {
  97. Serial.println("The door is open");
  98. }
  99. else if (doorState == LOW) {
  100. Serial.println("The door is closed");
  101. }
  102. }
  103.  
  104. void Read_Package_Sensor() {
  105. packageState = analogRead(PACKAGE_SENSOR_PIN);
  106. //Serial.println(packageState);
  107. if (packageState < package_threshold) {
  108. Serial.println("Package Inside");
  109. String_package_available = "1";
  110. }
  111. else if (packageState > package_threshold) {
  112. Serial.println("P.O. Box is EMPTY");
  113. String_package_available = "0";
  114. }
  115. }
  116.  
  117. void Read_DHT11_Sensor() {
  118. h = dht.readHumidity();
  119. t = dht.readTemperature();
  120. Serial.print(F("Humidity: "));
  121. Serial.print(h);
  122. Serial.print(F("% Temperature: "));
  123. Serial.print(t);
  124. Serial.println(F("°C "));
  125. String_temperature = String(t);
  126. String_humidity = String(h);
  127. }
  128.  
  129. void Read_Password_from_Database(unsigned long timeE) {
  130. if (Firebase.ready() && (millis() - getDataPrevMillis > timeE || getDataPrevMillis == 0)) {
  131. getDataPrevMillis = millis();
  132. if (Firebase.getString(fbdo, F("/password"))) {
  133. password_To_Open_the_door = fbdo.stringData();
  134. Serial.print("Password retrieved successfully: ");
  135. Serial.print("Password is Set to: ");
  136. Serial.println(password_To_Open_the_door);
  137. }
  138. if (Firebase.getString(fbdo, F("/user_input_password"))) {
  139. user_inputPassword = fbdo.stringData();
  140. if (user_inputPassword == "" || user_inputPassword == "1") {
  141. Serial.println("No Password Entered to Open the Box");
  142. }
  143. else {
  144. Serial.print("Password: ");
  145. Serial.println(user_inputPassword);
  146. resetInputPasswordFlag = 1;
  147. if (user_inputPassword == password_To_Open_the_door) {
  148. Serial.println("Open Door Password Correct");
  149. digitalWrite(LOCK_Relay_PIN, HIGH);
  150. delay(5000);
  151. digitalWrite(LOCK_Relay_PIN, LOW);
  152. }
  153. else {
  154. Serial.println("Password Wrong!!!!!!!!!!!!!!!!!!!!!!");
  155. digitalWrite(LOCK_Relay_PIN, LOW);
  156. }
  157.  
  158. }
  159. }
  160. }
  161. }
  162.  
  163. void Write_Data_to_Database(unsigned long timeE) {
  164. if (millis() - sendDataPrevMillis > timeE && Firebase.ready())
  165. {
  166. sendDataPrevMillis = millis();
  167. String path1 = "/temperature";
  168. String path2 = "/humidity";
  169. String path3 = "/package_available";
  170. String path4 = "/door_sensor_open";
  171. String path5 = "/user_input_password";
  172. String emptyString = "1";
  173. Serial.printf("Set temperature... %s\n", Firebase.setString(fbdo, path1, String_temperature) ? "ok" : fbdo.errorReason().c_str());
  174. Serial.printf("Set humidity... %s\n", Firebase.setString(fbdo, path2, String_humidity) ? "ok" : fbdo.errorReason().c_str());
  175. Serial.printf("Set package_available... %s\n", Firebase.setString(fbdo, path3, String_package_available) ? "ok" : fbdo.errorReason().c_str());
  176. Serial.printf("Set door_sensor_open... %s\n", Firebase.setString(fbdo, path4, String_door_sensor_open) ? "ok" : fbdo.errorReason().c_str());
  177. if (resetInputPasswordFlag) {
  178. Serial.println("------------------------------------------------------");
  179. Serial.printf("Set user_input_password... %s\n", Firebase.setString(fbdo, path5, emptyString) ? "ok" : fbdo.errorReason().c_str());
  180. Serial.println("------------------------------------------------------");
  181. resetInputPasswordFlag = 0;
  182. }
  183. }
  184. }
  185.  
  186. void Connect_To_Firebase() {
  187. Serial.printf("Firebase Client v%s\n\n", FIREBASE_CLIENT_VERSION);
  188. config.api_key = API_KEY;
  189. auth.user.email = USER_EMAIL;
  190. auth.user.password = USER_PASSWORD;
  191. config.database_url = DATABASE_URL;
  192. config.token_status_callback = tokenStatusCallback;
  193. Firebase.reconnectWiFi(true);
  194. fbdo.setResponseSize(4096);
  195. Firebase.begin(&config, &auth);
  196. Firebase.setDoubleDigits(5);
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement