Hi,
I've always wanted an automated house, so when we bought a house in need of repair, I thought I'd take the opportunity to automate it. The heating is just one part, but I automate it as follows:
I use these to control the power to the honeywell zone valves:
http://www.quasarelectronics.com/3108.htm - Serial port 8 channel relay
..although they can take mains, I use them to drive further (beefier) din mount relays for the valves and also for the underfloor elements.
The temperatures in all rooms (plus outside temp) are measured using 3 of these
http://www.quasarelectronics.com/3145.htm - serial port temp sensor
all fully populated so I have 12 sensors in total (they are very small, so I built them into the light switches in each room
I also have PIR sensors and reeds on the external doors for the alarm in each room, and these feed digital signals into the relay units (they have 4 digi inputs in each, and I have 4, so 16 inputs)
So that gives me all the inputs I need to know if anyone is home, where they are, and how warm it is in that room.
I just then use code (mainly shell scripts) plus some CGIs for the web end and also an SMS modem to accept texts.
The code is really rather simple, and I have about 3000 lines of the stuff which controls pretty much everything, for the ligths I use these units:
http://www.bpesolutions.com/dmxproduct.html.
The code looks something like this, so even if you aren't a coder, you can see it's quite readable:
#!/bin/bash
MAX_TEMP_UP="1800" # temp in C * 100
MIN_TEMP_UP="1700"
CUR_TEMP_UP=`./current_temps.bash | grep EM | awk '{ print $3 }' | sed s/" "//g
| sed s/'\.'//g`
MAX_TEMP_DOWN="1850" # temp in C * 100
MIN_TEMP_DOWN="1800"
CUR_TEMP_DOWN=`./current_temps.bash | grep LOU | awk '{ print $3 }' | sed s/" "/
/g | sed s/'\.'//g`
date
echo Max upstairs " =" $MAX_TEMP_UP " " Min upstairs " =" $MIN_TEMP_UP " " Cur
rent upstairs " =" $CUR_TEMP_UP
echo Max downstairs = $MAX_TEMP_DOWN " " Min downstairs = $MIN_TEMP_DOWN " " Cur
rent downstairs = $CUR_TEMP_DOWN
# Do some tests first
if [ $CUR_TEMP_UP -lt "100" ]
then echo Something wrong very cold upstairs ; exit
elif [ $CUR_TEMP_UP -gt "3000" ]
then echo Something wrong very hot upstairs ; exit
fi
if [ $CUR_TEMP_DOWN -lt "100" ]
then echo Something wrong very cold downstairs ; exit
elif [ $CUR_TEMP_DOWN -gt "3000" ]
then echo Something wrong very hot downstairs; exit
fi
# Heating decisions
if [ $CUR_TEMP_UP -lt $MIN_TEMP_UP ]
then echo HEATING SWITCH ON UPSTAIRS ; ./relay_put.kermit N6
elif [ $CUR_TEMP_UP -gt $MAX_TEMP_UP ]
then echo HEATING SWITCH OFF UPSTAIRS ; ./relay_put.kermit F6
fi
if [ $CUR_TEMP_DOWN -lt $MIN_TEMP_DOWN ]
then echo HEATING SWITCH ON DOWNSTAIRS ; ./relay_put.kermit N5
elif [ $CUR_TEMP_DOWN -gt $MAX_TEMP_DOWN ]
then echo HEATING SWITCH OFF DOWNSTAIRS ; ./relay_put.kermit F5
fi
In total I need about 10 serial ports for all my gear, I use an 8port serial card in the server and that does the job.
Hope that's of some interest to someone - most of my friends are sick of me talking about it, but it's easy to be enthuiastic about, it just works so well!!