Home Heating Monitor
We have "hot water" heating in our house - a central oil-fired boiler that pushes super-hot water to a manifold from which small pumps circulate the water thru the various "zones" in the house. Each zone has a thermostat that controls the pump.
Something that I've always wanted to know is the "duty cycle" of all the zones. This is even more relevant now that heating oil prices have doubled over the past couple years. This winter, if I can know the exact activity of all the zones, perhaps we can reduce our oil usage and save a few bucks.
Sounds like a fun electronics project!
The trick, of course, is capturing and storing the pumps' on/off times then storing and formatting the data into an understandable format.
I've made two attempts at the project:
- Based on a RabbitCore SBC.
- Rabbit does all measuring via long wire runs to the heat-control relays.
- Stored readings in onboard memory.
- Rabbit is connected to the house's ethernet.
- Data was retrieved by a Windows app via UDP.
This project failed, largely because the Rabbit is a piece of junk that I could never get working properly. Though it's programmed in the "C" language, Rabbit's flavor of C is very nonstandard, so I found it very frustrating to program the device. Additionally, I found the Rabbit's ethernet interface to be flaky... sometimes it simply wouldn't detect the network.
Due to the failure of Version 1, it tok me a while to get back into the project. Two recent developments got me going again:
- We installed an Outdoor Wood Boiler, and I wanted to track it's performance
- I've gotten into using the Arduino controller, which is a dream to develop with.
So, given the new parameters, here's how I'm doing V2:
- Based on the Arduino Uno and it's little brother the Teensy
- Multiple smaller processors, each doing it's own simple task, interconnected via RS485.
- Readings are uploaded in real-time to a webserver, which stores the data.
- Data is crunched & formatted by webserver scripts.
- Data is viewed by a web browser... I really liked the idea of platform and location independance.
Both versions deal with the same basic issue of detecting when the house's heat pumps turn on and off, capturing that data, and storing it somewhere.
The thermostats throughout the house are connected to the pumps via a relay box which converts the thermostat control signal (1-wire!) to 120VAC for the pumps:
The relay box has an LED array on the side; an LED is lit when the corresponding pump is running:
(green for power, plus one red LED for each of the 4 zones)
One thing I can't do is attach wires directly (electrically) to the relay system - the heater maintenance guys would freak out. So I gotta do something non-invasive.
It occurred to me that a simple non-invasive way to capture the pump's state would be to:
- Attach a light sensor (CdS or IR) to the end of the LED's lens with a bit of heat-shrink tubing - a crude optocoupler - and monitor the light sensor.
- Get some sort of stand-alone controller would continuously monitor the LED sensors and do something with the data when the state changes.
The details of how this is done are fundamentally different in Version 1 and Version 2.
Questions? Comments? email me!