I have been using microcontrollers for a long time now. I started in college as part of the program and have never stopped. Professionally, educationally, hobby, I've done projects of all types.
Recently I decided to try something with a Raspberry Pi. It is the next step up, basically being a little computer. This was so I could play with Linux again (it's been years) and do something with a web browser. These are things I don't have experience with and have been interested in learning for some time.
The project I settled on was a monitor for the furnace in my apartment. This monitor will measure temperature(s) and sense if the furnace is running, then log this data. There will be a web interface that will draw graphs of the data on a daily basis. There will also be an LCD screen on the pi so that I can see the current data without needing a web browser.
Part 1: Hardware
The first step was to make sure I could sense whether the furnace was running. My furnace is controlled by a thermostat. A thermostat is a temperature controlled mechanical switch. Mine looks like this (The wire hanging down was added later)
I needed to open this up to see how it worked. So, I pulled off the ring on the front and exposed 3 screws holding it to the wall. I took out the screws and pulled the switch off the wall. I was left with a mounting plate that included a set of screw terminals with a 2 conductor wire attached. This is the wire running to the furnace in the basement that controls the furnace.
The screw terminals were labeled as RH and W. I took out my mult-meter and started doing some measuring.
Open (Furnace off): RH -> W, 25.8 VAC
Closed (Furnace on): RH -> W, 0 VAC @ 95mA
This means that I need to monitor the voltage across terminals RH and W. If voltage is present, the furnace should be off. The 95mA is mostly unimportant because the thermostat is going to stay in place. I just need to make sure the pi doesn’t draw so much current that it turns on the furnace on it’s own. I drew up the below circuit to accomplish this using a rectifier circuit and an opto-isolator fed into GPIO24.
For mroe detail: Aaron's piHouse Monitor