Severin Teona - AAC2
teona.severin@stud.acs.upb.ro
The main idea behind this project is to have a smart video doorbell, whose camera is triggered by pressing a button. After the photo is taken, you get an e-mail (as a notification) to let you know somebody is at your door. In the e-mail you get a link to a simple HTTP server where you can see the photo. On the server there are also 2 buttons: one of them is used to open the door for the guest and greet him with a nice message using an LCD, and a button used just for sending a message that the owner is not home. If the first button is pressed, the door will also open. The main motivation for this project came actually from my parents: they have been asking me for the past year if I can build them a system like this, because at home, we don’t have any window facing the gate or the outside of the door. Furthermore, we don’t know if anyone enters our yard.
For this project, I used 2 ESP32 modules:
This project contains 2 ESP32 modules, and is therefore divided in 2:
The hardware schema is presented below:
When it comes to software, I used Arduino IDE and the following libraries:
The functionalities of both these modules are described in the following diagrams:
I have also created an Express JS server hosted on a Virtual Private Server (VPS) that listens to requests on port 8000. Also, I created a Vue JS application available on port 8080 that hosts the user interface of the server. The following picture is a screenshot of the UI:
We have a working system that can actually be used in real life situations. For now, the notifications are sent via e-mail using the IFTTT infrastructure, but it would be nice in the future to connect this little system with a mobile application. But for now, when the guest comes to you, he rings the camera trigger instead of the classic bell, his picture gets taken and sent to our private server, and the owner can choose what to do: to let the guest in or to display him a message.
To test this project, we used a 3D printed house as shown below: