Thermduino
Thermduino is a simple Arduino + Python project which I hacked together in a few days to set a rotary thermostat based on time and date.
Hardware
Here is a very quick video showing Thermduino in action:
The Thermduino simply consists of an Arduino connected to a servo, all powered by a 9v power supply. It must initially be configured via USB but is able to function without being connected to a computer once its clock has been set (which is facilitated by connecting it to the computer running the appropriate software).
It can follow a set of programmes (rules) which state what temperature it should set the thermostat at which times.
GUI
The desktop client is an (extremely messily coded) wxWidgets GUI which provides the ability to change the default program and to set the programmes and calibration information on the device. It can be hidden into the system tray where it will keep the clock on a connected arduino in time if it drifts more than 60 seconds.
Programmes can be expressed using a natural-language-ish expression along the lines of:
10*c on saturdays and sundays 20*c from 11/12/2012 4am to 1/1/2013
Code
The code is available on GitHub though is fairly rough in many areas, especially the GUI so please be careful!