Our furnace is a like a beast residing in our basement. When it is "on", the house has a bass hum and you can tell something is on fire, not far away from where you are.
Couple this ominousness with a curiousity to know about when the furnace is coming on and for how long, and you've got the background for my FurnaceClip.
(This kind of information can be useful. A few years ago, our furnace was coming on quite frequently in the summer. It didn't seem right. We came to find out a few years later that our hot water tank controller was defective. I can't tell you how much fuel and cash we wasted not catching that problem sooner).
I've tried a few approaches over the years and have an iteration now that has been working for quite a few months and (finally) accomplishes my goals.
Step 1: The Setup
I have a Blynk server running on a Raspberry Pi, which is devoted
to the task of providing a link between the FurnaceClip, which contains a WiFi-enabled Adafruit Huzzah breakout board for the ESP8266, and the internet. The data is stored in the Blynk cloud. It is downloadable in CSV format, which I do occasionally, to get the big picture on trends.
The Blynk application is also installed on my phone so I can get the real-time status of the furnace and its elapsed running time over the last few hours, weeks, or months.
To implement what I have, you'll need the FurnaceClip board, access to a 115V line on your furnace that toggles on when the furnace is running, a Raspberry Pi, and the Blynk java server and the Blynk application for your smart phone.
Step 2: The Circuit
The FurnaceClip schematic is above. Probably the most difficult task in this entire project was finding the method to actuate the circuit. I wanted the circuit to be triggered when the furnace was "on".
This is about the third iteration. In the first iternation, I had a DHT22 temperature sensor under the power vent that was connected to a Raspberry Pi. That was too code-dependent so I went to a small fan attached to a comparator circuit.
Step 3: The First Try
I tried a small fan under the blower on the outside of the furnace
window, what they call the Powervent. That worked alright. A small fan produces about 2V when it spins quickly . . but it is taking a hot (100 degree C), dirty stream of furnace exhaust on a daily basis. I found that the fans tended to wear out after a month or two so which wasn't the dependable operation I was looking for.
The circuit to implement this used a comparator on the little fan's voltage line.
Step 4: The Second Try
Then I discovered that my furnace has an over-temperature sensor
in the exhaust vent that is designed to trip when the exhaust vent temperature is excessive. I believe this is designed to shut the furnace down if large snow falls happens and the power vent to the outside gets blocked. We've had some big snowfalls in New England, but nothing to make that happen .. . yet.
The over-temperature circuit gets a 115V input when the furnace starts. As long as the 115V makes it past the sensor, the furnace will run. If not, it is too hot and the furnace will shutdown.
I used this 115V as my input to a one shot multi-vibrator, which reset the sleeping ESP8266. The chip wakes up, establishes a network connection to the house's WiFi and starts counting the elapsed time. When the furnace shuts off, the input pin drops below the threshold voltage, the counting stops, a final value is written to the Blynk server, and the chip goes back into shutdown mode. If you are interested in the code, let me know and I will share it. I also have a board and parts for two left over from my initial order so, if you are willing to beta test this, please send me that interest and I'll send you a board.
That's about it. Like many things, the good thing about this project has been the iterations I've gone through to get where I am now. They all yield some learning and insight and that is what it is all about!