On This Page...
A DIY smart doorbell with a built-in camera, microphone, and speaker. This steampunk-themed design integrates with home assistant and our multi-room audio system to communicate with the rest of our DIY smart home.
Rather than buying a Ring Doorbell (or Nest, or one of the other competitors) I built our own smart doorbell with a Raspberry Pi. The whole project cost about $150 (USD), which is about average for a smart doorbell, but it is much more full-featured than anything else you’ll find on the market. For example, it integrates with the rest of the home security system — using machine learning to identify humans, cars, animals, and more:
But I’m getting ahead of myself.
Designing the Smart Doorbell
Doorbells live outside.
Okay, that’s obvious. But it was my first electronic project that needed to survive the elements. To that end, I decided to use a junction box to house the electronics themselves.
The next requirement was also obvious: a button. However, the concern with such a unique design is that visitors need to intuitively understand what the device is. I decided upon a durable metal button that also lights up. The intention is for the light of the ring to make the button obvious.
Finally, the camera & speakers. This is arguably the most important security camera in the entire house, and I didn’t have a lot of space in the junction box, so I splurged on a night-vision IR camera with a microphone built-in. Throw in a tiny USB speaker, and we have bi-directional audio.
The complete part list:
Building the Doorbell
I had some spare copper and brass parts lying around from prior steampunk projects. This came in handy when not all of the electronics could easily fit in the junction box.
I began by laying out the parts. Three holes were drilled in the sides of the junction box for the power cable, USB cables, and button wires. Plus, one larger hole in the cover to accommodate the camera:
Before sealing the parts, though, it was time to prototype the doorbell itself.
Making a Doorbell Smart
The first order of business was to make the doorbell actually ring.
With the doorbell wire attached to GPIO18 (pin 12) on the Raspberry Pi, I then used the Serial Port input in Node RED to detect button-presses. To actually trigger a doorbell alert, as well as handle bi-directional (microphone/intercom) audio, see this post:
There’s also the topic of motion detection and video, which will be covered in the security camera section of the smart home retrofit. With the coding done, it was time to put all the parts together…
Smart Lock Integration
With the basics covered, it was time to assemble and mount everything:
I used hot glue on the openings of the junction box to seal it, where possible. The copper ring seen above also has a lip, protecting the camera from water. Plus, the whole thing is installed underneath a balcony, so not much water even has the chance to hit the doorbell.
The final pieces was to integrate the doorbell with a smart lock. Thankfully, Home Assistant makes this easy. We have this Yale Assure lock:
It communicates with Home Assistant via Z-Wave. What I like about this lock is that it can be programmed remotely to support different user codes (useful as an Airbnb host, or when you need to let a friend in). It also can detect which user pin code was used to open the door (and when) — great peace of mind when giving cleaners a code to the house.
But, most importantly, it can be locked/unlocked with a tap in Home Assistant.