Patent ID: 8292191

Claim:
A method for controlling heating or cooling calls from a thermostat to one or more heating or cooling devices, said method comprising the steps of: storing a plurality of sequential routines, each routine comprising a plurality of sequential time intervals and a corresponding on or off state for each time interval, wherein a sum of the plurality of sequential time intervals for each routine comprises a total routine time interval; in response to receiving a heating or cooling call from the thermostat, executing a designated current routine from a beginning point, wherein executing the designated current routine comprises (a) sending a heating or cooling activation signal to the one or more heating or cooling devices if a current time interval of the designated current routine comprises an on state or (b) not sending a heating or cooling activation signal to the one or more heating or cooling devices if the current time interval of the designated current routine comprises an off state; if the heating or cooling call received from the thermostat terminates before the total routine time interval lapses, stopping execution of the designated current routine and waiting for a subsequent heating or cooling call to be received from the thermostat before again executing the designated current routine from the beginning point; if the heating or cooling call from the thermostat continues uninterrupted for the total routine time interval, designating a different routine as the designated current routine and executing the newly designated current routine from a beginning point, the different routine being along the sequential routines in a first direction from the previously designated current routine; and if no heating or cooling call is received from the thermostat continues for the total routine time interval, designating a different routine as the designated current routine and executing the newly designated current routine from a beginning point, the different routine being along the sequential routines in a second direction from the previously designated current routine, the second direction being opposite the first direction.