I wrote an open source Thermostat about 6 months ago and finally decided to share it over on GitHub: https://github.com/kamermans/Arduino-Thermostat
The sketch is complete but poorly documented. I've actually been using this thermostat for 7 months now, so I know it works.
Here's a poor quality picture of the interface:
Here's a feature list:
- 4x20 LCD Interface that displays zone temperatures, status and an options menu (uses LCD117)
- Photoresistor for auto-dimming the backlit LCD
- 4 buttons to change temperature and navigate menu and heating/cooling modes
- 3 thermistors for using different zone temperatures as input. Different zones are averaged with a weighted algorithm to produce the reference temperature
- EEPROM interface that stores current settings so a power failure doesn't reset your temperature or heating/cooling mode
- 3 relays that switch Heat, AC and Fan
If you want to collect temperature data as well, you can use the USB/Serial port to both power the device and collect the temperature data from the Arduino (see http://www.stevekamerman.com/2010/12/home-temperature-monitor/)
Right now the code is slightly commented, but I can't upload the schematics or detailed pictures until I get back to my house in the next few days.
If you are interested in this project or turning it into a more portable Open Source Thermostat library, please do let me know! You are more than welcome to send me pull requests on GitHub if you've got some improvements.