Differences

This shows you the differences between two versions of the page.

Link to this comparison view

iothings:proiecte:2021:homesecurity [2022/01/28 00:04]
robert.olteanu1909 [Software Description]
iothings:proiecte:2021:homesecurity [2022/01/28 01:14] (current)
robert.olteanu1909 [References]
Line 37: Line 37:
 Next thing the software is split in two main parts: Next thing the software is split in two main parts:
   - Initial setup - this is where all the components / modules are getting initialized   - Initial setup - this is where all the components / modules are getting initialized
-    * WiFi - The ESP32 tries to connect to the configured network until succeed and it gets the IP address +    ​* **WiFi** - The ESP32 tries to connect to the configured network until succeed and it gets the IP address 
-    * MQTT - The Adafruit.io supports data transfer using MQTT, and on this initial setup there is needed to subscribe to all topics needed while the publishers doesn'​t need to.+    ​* **MQTT** - The Adafruit.io supports data transfer using MQTT, and on this initial setup there is needed to subscribe to all topics needed while the publishers doesn'​t need to.
  
 <code c> <code c>
Line 52: Line 52:
 </​code>​ </​code>​
  
-    * RFC522 - Initialize the SPI Bus then initialize the RFID module. +    ​* **RFC522** - Initialize the SPI Bus then initialize the RFID module. 
-    * LCD16x2 - Initialize the LCD and if the module supports, the backlight for a better display of messages +    ​* **LCD16x2** - Initialize the LCD and if the module supports, the backlight for a better display of messages 
-    * Keypad - Define the keypad and it's GPIO pins used+    ​* **Keypad** - Define the keypad and it's GPIO pins used
  
 <code c> <code c>
Line 96: Line 96:
 </​code>​ </​code>​
   - Loop - this is looping until the ESP32 is stopped by user.   - Loop - this is looping until the ESP32 is stopped by user.
-    * Connect to MQTT - this is done on each iteration to ensure a good connectivity +    ​* **Connect to MQTT** - this is done on each iteration to ensure a good connectivity 
-    * Read code subscription - first time after initial setup the user must insert his/her keycode of 4 characters inside Adafruit.io dashboard+    ​* **Read code subscription** - first time after initial setup the user must insert his/her keycode of 4 characters inside Adafruit.io dashboard
  
 <code c> <code c>
Line 118: Line 118:
 </​code>​ </​code>​
  
-    * Card scan - Wait until a card is scanned and check if it's a valid one+    ​* **Card scan** - Wait until a card is scanned and check if it's a valid one
  
 <code c> <code c>
Line 135: Line 135:
 </​code>​ </​code>​
  
-    * Type code - If the card was valid the user is prompted to input the security code+    ​* **Type code** - If the card was valid the user is prompted to input the security code
  
 <code c> <code c>
 +bool scannedCard() {
 +  int idx = 0;
  
 +  lcd.clear();​
 +  lcd.setCursor(0,​0);​
 +  lcd.print("​Insert code:"​);​
 +  lcd.setCursor(0,​1);​
 +  ​
 +  do {
 +    do{
 +      keyp = keypad.getKey();​
 +    }while(!keyp);​
 +    kcode[idx] = keyp;
 +    idx++;
 +    lcd.print("​*"​);​
 +  }while(idx < 4);
  
 +  for(int i=0; i<​4;​i++){
 +    if(kcode[i] != code.charAt(i)) { // code is the variable containing the current keycode
 +      return false;
 +    }
 +  }
 +  return true;
 +}
 +</​code>​
  
 +    * **Update status** - anything from opening a door / disabling alarm etc.
 +
 +<code c>
 +lcd.clear();​
 +lcd.setCursor(0,​0);​
 +lcd.print("​Door opened"​);​
 +char msg[] = "Door opened";​
 +hs_log.publish(msg);​ // publish message to logs
 +delay(7000);​ // open door / disable alarm etc.
 +lcd.clear();​
 +lcd.setCursor(0,​0);​
 +lcd.print("​Door closed"​);​
 +char msg2[] = "Door closed";​
 +hs_log.publish(msg2);​ // publish message to logs
 +delay(3000);​ // wait to be able to read the lcd message
 </​code>​ </​code>​
 ====== Software logical workflow ====== ====== Software logical workflow ======
-{{ iothings:​proiecte:​2021:​hs_schematic.png }}+Down below I created a small logical workflow for the code described in the previous chapter to be easily understood.
  
  
-====== References ====== 
  
 +{{ iothings:​proiecte:​2021:​hs_schematic.png }}
  
  
 +====== References ======
 +
 +[1] - [[http://​esp32.net/​]] \\
 +[2] - [[https://​lastminuteengineers.com/​how-rfid-works-rc522-arduino-tutorial/​]] \\
 +[3] - [[https://​esp32io.com/​tutorials/​esp32-rfid-nfc]] \\
 +[4] - [[https://​randomnerdtutorials.com/​esp32-esp8266-i2c-lcd-arduino-ide/​]] \\
 +[5] - [[https://​esp32io.com/​tutorials/​esp32-keypad]] \\
 +[6] - [[https://​io.adafruit.com/​api/​docs/​mqtt.html#​adafruit-io-mqtt-api]] \\
 +[7] - [[https://​raw.githubusercontent.com/​AchimPieters/​esp32-homekit-camera/​master/​Images/​ESP32-38%20PIN-DEVBOARD.png]] \\
iothings/proiecte/2021/homesecurity.1643321051.txt.gz · Last modified: 2022/01/28 00:04 by robert.olteanu1909
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0