Automating my home has been a journey I’ve been on for several years now and at no point in that journey did I feel the necessity for a $200USD  doorbell. Not that I don’t see use cases for it or think others couldn’t have a compelling use case for them, I, however, could never identify a use case that justified the purchase costs (and potential monthly subscription costs). Not to mention I absolutely hate products that require cloud services to function. There are far too many instances of companies deciding to shutter their cloud offering or otherwise discontinuing the service which most times, leaves the product only useful as a doorstop.

Recently, however, I did find a use case for some improvement in our current doorbell situation. Our doorbell is wired, but it’s tough to hear from anywhere but the living room. I tried replacing the doorbell with a newer model that was supposed to be louder and yet it still didn’t help. I wanted to be able to hear the doorbell from any room in the house (basement included). I also wanted an SMS or other notification when someone rang the doorbell. What I didn’t want was any cloud-connected solution, video or bi-directional audio. I didn’t see the use case for those features. I also wanted to keep the aesthetic of our wire doorbell button (I personally do not like the asthenic of most modern “smart” doorbell buttons with cameras and bright blue LEDs).

That’s when I started looking for options for purchase, undoubtedly someone shared my same thoughts on the “smart” doorbells and had a solution I could purchase, or at least build from…well, I was wrong. I couldn’t find anything that filled the gap between a traditional doorbell system and the ultra-modern camera-enabled doorbell buttons. There were some articles where folks were trying to solve very niche issues with their old-style doorbells but nothing that fit my use case and had a very high WAF (wife approval factor).

So I decided to do what any sensible maker would do, I set off to design and build my own, and this serves as a record of my journey with this project.

First, I sat down and documented what the problem was with the current solution, a simple hard-wired doorbell where the actual doorbell is mounted in the stairwell leading upstairs and is very difficult to hear (I wasn’t about to attempt to relocate it, but I did investigate that option first). There are two primary problems with the current solution.

  1. It’s impossible to hear the doorbell unless you are standing in the stairwell.
  2. There are no modern-style digital notifications of the doorbell being rung.

So, what then are my requirements for a new solution?

  1. Keeps the use of the existing doorbell, wiring, and doorbell button.
  2. Can communicate with my HASS.IO server (MQTT preferred)
  3. Does not prevent the doorbell from working if the internet, my network, or my HASS.IO server is down. Works like an old-school doorbell should work when all else fails.
  4. Requires no batteries
  5. Fits inside the existing doorbell cover and/or outlet

Now that I felt like I knew what the problem was and I had a good set of requirements for a new solution, I could start my design. The first requirement that I felt I needed to tackle was the requirement to run off the existing 16V AC power the current doorbell leverages, and thus eliminates the need for any batteries. I was surprised by the search results I found when searching for similar DIY solutions, the way some folks were going about attempting to rectify and leverage the 16V AC blew my mind…I spent a few days researching best practice and standard designs for basic AC/DC rectification and landed on a design I felt would suit my needs. I ended up testing the design and was quite pleased with the results (and lack of ripple). I found this article particularly helpful in identifying the size/value of the filtering capacitor to use in my design. I tested the ripple in my design and included the results in my GitHub repo.

Screen Capture

Now that I knew that I could get good clean 3.3V power from the 16V AC power already available (and reuse that wiring), I needed to ensure I could communicate with my HASS.IO server and thus satisfy that requirement as well as the ability to have other (SMS, Email, etc.) notifications when the doorbell is rung. Given my recent development projects, all have revolved around the ESP8266 MCU; it was a no brainer to decide it would fit the bill here as well, it’s small, powerful and has relatively low power consumption.

 

 

 

MCU Relay Trigger Detect

The last significant requirement to design toward was the need for the solution to not interfere with normal doorbell operation when the complex pyramid of dependencies failed. It needed to ring just as it would have thirty years ago without all this newfangled technology existed. I pondered my options for a few days before landing on the idea to use a standard mechanical relay. I will rectify the 16V AC down to 3.3V DC which will power the ESP8266. I’ll also use that same 3.3V DC to trigger the relay using the existing doorbell button, although I will replace the AC light inside the button with an LED which is obviously not an issue if you don’t have a fancy doorbell button with a light. In order to detect that the button was pushed and to trigger the MQTT message to HASS.IO, I’ll assign an IO pin from the ESP8266 to monitor the state of the button, when it detects the button going HIGH (someone pushed the button and energized the relay to ring the doorbell), it’ll send the appropriate MQTT message. I’ll allow HASS.IO automation to perform notifications, and most importantly, play a “door-bell” sound effect on all my home Sonos speakers, ensuring we hear the doorbell. This design is how I satisfy the requirement that the doorbell works just as it did 30 years ago. As long as there is AC power, the doorbell will work, even if the “smart” features don’t.

 

Lastly, I needed to make the solution fit into the existing doorbell cover, given the choices in MCU, this was super easy, I even designed and printed an enclosure for the new PCB and it all fits nicely into the existing doorbell cover, nobody would ever know our doorbell has gained some fancy new features. I’m not an expert in 3D modeling and I’ve only been using Fusion 360 for a few weeks now, but I think this case turned out good. I even spent the time to build in an external button solution to activate the tactile reset switch on the PCB.

 

Board before adding screw terminals.

Overall, I’m quite happy with this solution and it’s been working without fail for a few weeks now. Every time someone rings the doorbell, the nice doorbell MP3 plays on the selected Sonos speakers around my house and I get a nice SMS message on my phone, perfect! As always, you can find all the artifacts related to this project on my GitHub repo for the project.