Privacy focused “smart” doorbells seem to be few and far between so I decided to build one that integrates with Home Assistant via ESPHome and is easy to build.
This project is aimed at being simple while allowing a ton of customisation and flexibility. To get started, you’ll need an instance of Home Assistant running with the ESPHome add-on as well as the Home Assistant companion app on your mobile phone to receive notifications when someone presses the doorbell button.
I have used an 8 RGB LED ring light in my version but if you want to simplify things, you can skip this and use the ESP32-CAM’s built in LED as a flash – it’s surprisingly bright.
Parts list:
- ESP32-CAM (Amazon – US, UK, DE) Make sure to get one with a “flash/download/io0” button to make your life easier when you flash ESPHome onto it for the first time. If you make the same mistake as me and buy the one without that button, follow this guide to flash the ESP32-CAM using an FTDI adapter.
- Momentary push button (Amazon – US, UK, DE)
- 10k resistor
- 8 RGB LED ring light (Amazon – US, DE) Note: these aren’t the exact ones that I used but they are the closest ones that I could find. I used the Pi Supply PIS-1270 from RS Components.
- 10m Micro USB cable (Amazon – US, UK, DE)
- M2.5 brass inserts (Amazon – US, UK, DE)
- M2.5 screws (Amazon – US, UK, DE)
- eSUN white PETG filament (Amazon – US, UK, DE)
You can find the .stl’s on Printables here and the home assistant config in my github repo: thatguy-za/esp32-cam-doorbell.
Build guide
Step 1 – Printing the enclosure
This step takes the longest so lets send the .stl’s to the printer while we crack on with the rest of the build. There are three pieces that you’ll need to print:
1. The main body
2. The ESP32-CAM retention plate
3. The back plate/wall mount
You’ll need to print the front and the back of the enclosure with supports. I printed it using PLA but you’ll want to use PETG or ABS filament so it is waterproof and use 20-30% infill.
Once everything has printed, you’ll need to add two M2.5 threaded inserts:
1. Into the front cover so you can screw the ESP32-CAM retention bracket into it.
1. Into the bottom of the backplate so you can screw on the face plate with a 10mm M2.5 screw
Step 2 – Configuring the ESP32-CAM in ESPHome
Hold down the “flash/download/io0” button and connect your ESP32-CAM to your computer using a micro USB cable. This will boot it into flashing mode.
Launch Google Chrome, go to your instance of Home Assistant and launch the ESPHome Add-on by clicking Settings -> Add-ons -> ESPHome -> Open Web UI. Chrome is important because it seems to be the most reliable browser for flashing firmware onto the ESP32-CAM.
Click + New Device to add a new device.Give it a name (“Doorbell” is probably a good starting point).
When asked to select the device type, select ESP32 and check the box “use recommended settings’.
Once the configuration has been created, you can skip installing it o