A long, long time ago, we moved a door from our kitchen to the hall, and in the process, our doorbell was moved into the basement stairs. We can barely hear it on the first floor, and I spend most of my days on the third.
I know I could buy an Internet doorbell, or a simple wireless doorbell, but I really liked the idea of being able to tap into any events, and keeping all the data in my own network.
I bought a 433 MHz doorbell that I knew someone else had controlled from an Arduino (I’d normally give credit, but I lost the reference). I didn’t want potential network failures to keep the regular doorbell from working, so I decided to always trigger a relay and send the wireless doorbell code, while informing a messaging server of the events. This MVP is great because it improves my doorbell situation while providing lots of room for growth, such as triggering future security cameras, sending messages etc.
433 MHz Doorbells
There are some very cheap 433 MHz transmitter/receiver pairs (<$5) that are compatible with a lot of the wireless doorbells. I ended up using the RC-Switch library (available from the library manager). It’s also supported by the RadioHead library.
You only need the receiver to decode the transmission from the doorbell’s pushbutton. I just hooked it up to an Arduino Uno and ran one of the receive example sketches. You might get several different “packets’ with different codes, but one of them is the right one. Hook up the transmitter, and transmit the codes one at a time until one of them works.
Here you see a rough prototype with a switch standing in for the doorbell button.
When my thermostat went on the blink last winter, I looked at Nest, and Ecobee, and the other me-too thermostats, and I decided I would rather build my own.
If Nest goes out of business (or even more likely, Google decides to go a different direction), all that cool connected functionality pffft!
If I want to control it just inside my house, I don’t really have that option.
Some of the connected thermostats also offer remote sensors, behavior learning, etc. but they are expensive, and you have no control.
I have a two wire system. While some of the connected thermostats do power stealing (Nest), I wanted more powering options.
I’ve been playing with ESP32’s and I’ve found them powerful and cheap!
Most home hvac systems run on 24VAC. When I moved in to my house, it had one of those classic round bun thermostats that tilt a mercury switch with a bimetallic spiral. More modern systems have an additional C wire for power (and separate fan and cool wire). This meant that I would be powering the thermostat externally. A little googling and I found this info on thermostat wiring:
It features three triac channels with Opto-isolated inputs. The control signals seem to work at 5V or 3.3V.
For the controller I found a dev board with an ESP32 module, SiLabs usb controller, and a small monochrome OLED display. It’s sold as Wemos Lolin, and it has a Wemos-like logo on the back. it’s actually a clone of a D-Duino-32 by Travis Lin.
I mounted it on top of the triac board, with a laser cut plate to mount the same as my existing thermostat.
I used a Sparkfun TMP102 as the temperature sensor. I floated it to keep it off the cold wall. Figured I’d mount it in a case later. It worked great! The next installment will cover the PCB design and debugging. The code and the EDA files are at: https://github.com/wyolum/wyostat
Sparkfun launched a free cloud data service for your devices. It’s limited (rolling last 50MB) but also open source so if you want to roll your own you can do as much as you want!
This is an example of how doing a service and open source can benefit you. As they say
Our hope is that you buy a SparkFun widget to connect your next beehive.
It looks easy to use, and besides making it easy to put your own sensor data up, data from all other users is public, making it available to data scientists and hobbyists.
I’m looking forward to trying it out, and if I do I’ll share here!