Abstract:
A thermostat receives requests to enter into setback modes of operation whereby at least one setpoint normally used by the thermostat is to be changed at a stipulated start time for each setback mode of operation. The thermostat is operative to enter into a requested setback mode of operation at a time following the requested start time in the event there has been a delay in receiving the request to enter into a setback mode of operation. The thermostat is furthermore operative to track the time that elapses during each setback mode of operation and to report the total accumulated time that has elapsed in response to a request to do so. The thermostat is furthermore operative to set the total accumulated time to zero in response to a request to initialize the total accumulated time.

Description:
BACKGROUND OF THE INVENTION 
     The present invention relates to thermostats having the capability of tracking, recording, and reporting setback information to a remotely located entity. 
     Thermostats have heretofore received and implemented adjustments to locally programmed setpoints in response to receiving setpoint information from a remotely located source such as an energy provider. An example of such a thermostat is disclosed in commonly assigned U.S. patent application Ser. No. 09/456,355 entitled “Communicating Thermostat”. The aforementioned thermostat implements the adjustments to the locally programmed setpoints at such time as the adjustments are scheduled to begin. 
     The above described thermostat could potentially fail to initiate the adjustments to the locally programmed setpoints if the setpoint information is not timely received. In this regard, the time at which the adjustments were scheduled to start could have already passed. This could happen if there are any unforeseen delays at the energy provider&#39;s end in initially transmitting the setpoint information. This could also happen if there is any disruption or delay in the communication link to the thermostat. Such a delay may, for instance, occur if the energy provider is communicating to the thermostat over a phone line that is not dedicated to the thermostat. In this latter case, the phone line could be tied up for long periods of time on other matters. 
     SUMMARY OF THE INVENTION 
     It is an object of this invention to provide a thermostat with the capability of partially implementing any setback or curtailment request of locally entered setpoints in the event of a delay in the transmission or receipt of the setback or curtailment request. 
     The above and other objects are achieved by a thermostat having a transceiver associated therewith for receiving setback or curtailment information relative to locally programmed setpoints from a remotely located source. The thermostat is operative to store the information which preferably includes an offset to the currently programmed setpoint as well as a start time for any setback period of operation as well as the length of the setback period. The thermostat is thereafter operative to implement the requested setback at the setback start time or any time thereafter that the setback information is first processed. The thermostat tracks the time during which the thermostat is in the requested setback mode of operation. This tracking of the time includes noting any override of the requested setback which would prematurely terminate the period during which the setback mode of operation is in effect. 
     The thermostat is moreover operative to maintain a record of previous setback modes of operation implemented by the thermostat whether or not terminated prematurely by an override. The record of the current mode of setback operation as well as any previous setback modes of operation is stored for retrieval by the remotely located entity, which is usually an energy provider seeking an accurate record of actual setback operation of the thermostat. This time record is available at any time, including a time when the thermostat is in a setback mode of operation. The thermostat also preferably allows the requester to clear the accumulated time record or simply read the time record without clearing. In either case, the thermostat preferably continues to track any time during which the thermostat is in a setback mode of operation. This includes the tracking of any remaining time in a current setback mode of operation. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     For a filler understanding of the present invention, reference should now be made to the following detailed description taken in conjunction with the accompanying drawings, wherein: 
     FIG. 1 is a block diagram of a thermostat and transceiver, wherein the transceiver is in communication with a remotely located device (not shown) so as to thereby receive and/or transmit information to the remotely located device; 
     FIG. 2 is a block diagram of elements within the thermostat including a microprocessor that is responsive to signals from the transceiver; 
     FIGS. 3A,  3 B and  3 C are a flowchart of the program implemented by the processor of FIG. 2 so as to respond to communications from the transceiver; and 
     FIG. 4 is a flowchart of a sub-routine within the program of FIGS. 3A,  3 B and  3 C. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     Referring to FIG. 1, a thermostat  10  is operatively connected to a transceiver  12  via a communication line  14  so as to receive or transmit information to the transceiver  12 . The transceiver  12  provides a communication link between the thermostat  10  and a remotely located device (not shown), which provides setpoint control information to the thermostat  10 . The remotely located device is preferably controlled by an energy provider seeking to provide cost effective setpoint control information to the thermostat  10 . 
     The thermostat preferably causes messages to be displayed on a display  16  in response to receipt of information from the remotely located device that is preferably controlled by an energy provider. This includes the display of a message that the thermostat is in a setback mode of operation wherein the locally entered setpoint has been adjusted or altered in response to a request from the remotely located device preferably controlled by an energy provider. A touch sensitive button  18  on the front panel of the thermostat can be depressed any time one wishes to override the setback mode of operation. 
     Referring to FIG. 2, the touch-sensitive button  18  is illustrated as a switch connected to a microprocessor  20  which is in turn connected to the display  16 . The microprocessor  20  is also connected to a temperature sensor  22  and a memory  24 . The microprocessor normally executes one or more control programs stored in memory  24 , which monitor any variation of the temperature indicated by the sensor  22  with respect to one or more locally entered setpoints preferably stored in the memory  24 . These control programs cause the microprocessor to control an HVAC system  26  through relay logic  28  so as to thereby heat or cool the space in which the thermostat is located as necessary. 
     The microprocessor  20  also executes a program stored in memory  24 , which processes information received from the transceiver  12  via the line  14 . This latter program, when executed by the microprocessor, will preferably implement adjustments to the locally entered setpoints that have been stored in the memory  24 . It is, however, to be noted that this program may simply replace the locally entered setpoints without departing from the invention. The microprocessor will thereafter execute the one or more control programs stored in the memory  24  so as to monitor any variation of the temperature indicated by the temperature sensor  22  with respect to the now modified ore replaced setpoints. The program will furthermore cause the microprocessor to track and maintain an accurate record of the amount of time during which the thermostat remains in this setback or curtailment mode of operation. The program processor will moreover maintain any record of any past setback or curtailment modes of operation so as to thereby provide an accurate record of setback usage upon receipt of a request from the energy provider. 
     Referring to FIGS. 3A,  3 B and  3 C, a flowchart of the steps executed by the microprocessor  20  in response to receipt of information concerning setback or curtailment of locally entered setpoints is illustrated. As has been previously discussed, the microprocessor will receive this information from the transceiver  12  via the line  14 . The flowchart begins with a step  30  wherein certain variables used by the program are initialized. These include SB_TIMER, SB_ACTIVE, SETBACK_RECORD and SB_TOTAL. The microprocessor proceeds from a step  30  to a step  32  and inquires as to whether SB_ACTIVE is equal to one. Since this variable will have been initially set equal to zero, the microprocessor would proceed to a step  34  and inquire as to whether the SETBACK_RECORD equals zero. It is to be appreciated that the microprocessor  20  will independently of the program illustrated in FIG. 3, respond to a communication passed along by the transceiver  12  regarding any setback of the setpoint that may be requested by the energy provider. SETBACK_RECORD will be set equal to one when this occurs. The processor will furthermore store information pertaining to the requested setback in the memory  24 . This information will preferably include values for the following variables: SB_SETPOINTOFFSET, SB_STARTTIME, and SB_PERIOD. SB_SETPOINTOFFSET is the amount by which the locally setpoints are to be adjusted whereas SB_STARTTIME is the preferred time in which the setback of the setpoints is to begin. SB_PERIOD is the amount of time during which the particular setback mode of operation is to occur. Assuming a setback request has been received and stored in the memory, the processor will proceed along a yes path to a step  36  and store the values for SB_SETPOINTOFFSET, SB_STARTTME and SB_PERIOD. The processor will proceed to a step  38  and compute the value of SB_ENDTIME, which is the sum of SB_STARTTIME plus SB_PERIOD. 
     The processor will next proceed to a step  40  and inquire as to whether the value of SB_ENDTIME is greater than TOTAL_TIME_ONE_DAY. In this regard, it is to be noted that the SB_ENDTIME value computed in step  38  can potentially be greater than the total time of day if, for instance, SB_STARTTIME is close to the end of a particular day. It is to be appreciated that TOTAL_TIME_ONE_DAY will be an amount of time expressed in increments of time similar to that used to define SB_STARTTIME. This may, for instance, be total minutes in a day or whatever unit of time is used in the particular embodiment. In the event that SB_ENDTIME is greater than the TOTAL_TIME_ONE_DAY, the processor will proceed to step  42  and subtract TOTAL_TIME_ONE_DAY from SB_ENDTIME. The processor will proceed either from step  42  or from step  40  to a step  44  and read the “TIME_OF_DAY”. This is preferably read from an internal system clock within the microprocessor, which tracks time by at least the total number of minutes in a twenty-four hour day. The processor proceeds from step  44  to step  46  and inquires as to whether the TIME_OF_DAY read in step  44  is between SB_STARTTIME and SB_ENDTIME. It is to be appreciated that this particular comparison may require some additional computation to account for the SB_ENDTIME occurring during a day following the day in which the SB_STARTTIME is defined. In this particular case, the time of day would first have to be examined as to whether it is in the latter part of a given day or the early part of a second day. Depending on the answer to the above, the time of day would either be compared with only SB_STARTTIME or SB_ENDTIME so as to account for the setback occurring over two days. 
     Assuming that the time of day is not between SB_STARTTIME and SB_ENDTIME, the processor will proceed along a no path out of step  46  to a step  48  and read the currently stored values of heat setpoint, T h  and cool setpoint, T c . The microprocessor will thereafter proceed to step  50  and read the temperature sensor  22  and thereafter control the HVAC system  26  to either T h  or T c . It is to be appreciated that such control is defined by a separate control program, which reads the temperature sensor  22  and thereafter controls the HVAC system  26  so as to either achieve the heat setpoint T h  or the cool setpoint T c . It is to be appreciated that the setpoint which is used will depend on the HVAC system. If the HVAC system is, for example, a reversible heat pump, then the mode of operation of the heat pump will determine whether T h  or T c  is used. The processor will proceed to step  52  and display a message on the display  16  that the thermostat is in a “normal” mode of operation. The processor will proceed from step  52  through a junction A to a step  54  and inquire as to whether or not a request has been received for a report on setback usage by the thermostat. It is to be understood that such a request would normally be initiated by the energy provider and stored in the memory  24  for inquiry by the microprocessor in step  54 . Assuming that no such setback usage has occurred, the processor will proceed along the no path to a step  56  and inquire as to whether a communication has been received from the energy provider requesting that setback usage be initialized. Assuming that such an initialization has not been requested, the processor will proceed along the no path to junction B and return to step  32 . 
     Since the value of SB_ACTIVE is still zero, the processor will proceed through steps  34 - 46 , as has been previously discussed. Assuming that the read time of day in step  44  now lies between SB_STARTTIME and SB_ENDTIME, the processor will proceed along the yes path out of step  46  to a step  58 . Referring to step  58 , the processor will first set the variable SB_ACTIVE equal to one. The processor will also set a variable Δ equal to SB_SETPOINTOFFSET. The processor will still furthermore compute the value of a variable “t” as being equal to SB_ENDTIME minus TIME_OF_DAY. The processor may again need to account for any transition between one day and the next when doing this computation. In this regard, SB_ENDTIME would need to be adjusted by TOTAL_TIME_ONE_DAY in the event that TIME_OF_DAY is near the end of one day and SB_ENDTIME occurs the next day. 
     The final computation within step  58  is to set SB_INITIAL_START equal to the value of TIME_OF_DAY. The processor will proceed to step  60  and set a software timer SB_TIMER equal to “t” and initiate a decrementing of the software timer. The processor will next proceed from step  60  to a step  62  and read the locally entered setpoints T h  and T c  from memory  24 . The processor will next proceed to a step  64  and adjust the values of T h  and T c  by the value of Δ. This will effectively lower the heat setpoint T h  by the amount of Δ and raise the cool setpoint T c  by the amount Δ. The processor will proceed to step  66  and read the temperature sensor  22  and control the HVAC system  26  in accordance with either T′ h  or T′ c  as computed in step  64 . In this manner, the HVAC control system will now be controlling the HVAC system to a lower heat setpoint or to a higher cool setpoint so as to thereby produce an incremental savings of energy costs. The processor will proceed to a step  68  and display the current value of SB_TIMER and a message indicating that the thermostat is in a curtailment or setback mode of operation. The processor will proceed through steps  54  and  56  in the event that neither setback usage or an initialization of setback usage have been requested by the energy provider. 
     The processor will again return to step  32  and inquire as to whether SB_ACTIVE is equal to one. Since SB_ACTIVE will have been set equal to one in step  58 , the processor will proceed along the yes path to a step  70  and inquire as to whether the software time, SB_TIMER, has been decremented to zero. Assuming that the SB_TIMER is not equal to zero, the processor will proceed to a step  72  and inquire as to whether the override button  18  has been depressed. Assuming that the override button  18  has not been depressed, the processor will proceed to a step  74  and inquire as whether either the locally entered heat setpoint “T h ” or the locally entered cool setpoint “T c ” has changed between successive executions of the logic of FIG.  3 . This is preferably accomplished by comparing the time of day with any user programmed setpoint change times in memory  24 . If the time of day is within a very small predefined range of a programed setpoint change time in memory  24 , then the values of the new locally entered setpoints for the particular change time are read and stored as T h  and T c . The processor will then proceed to step  64  and adjust the new locally entered setpoints T′ h  and T′ h . 
     The processor will proceed either from step  74  or step  64  to step  66  and implement the control of the HVAC system  26 , as has been previously described. The display will be updated in accordance with step  68  before proceeding through steps  54  and  56  in the event that setback usage has not been requested. 
     Referring again to step  32 , the processor will again inquire as to whether SB_ACTIVE is equal to one. Since the thermostat is in a setback mode of operation, the processor will again proceed to step  70  and inquire as to whether the SB_TIMER equals zero. Assuming that SB_TMER has now been decremented to zero, the processor will proceed along the yes path to a step  76  and set SB_ACTIVE equal to zero. The processor will proceed to a step  78  and initiate a sub-routine entitled “COMPUTE_SETBACK_PARTICIPATION”. This particular sub-routine is illustrated in FIG.  4 . 
     Referring to FIG. 4, the COMPUTE_SETBACK_PARTICIPATION sub-routine begins with a step  80  wherein the current time of day is read as well as the value of the variables SB_INITIAL_START and SB_TOTAL. It will be remembered that the value of SB_INITIAL_START will have been computed in step  58  to be equal to the TIME_OF_DAY read in step  44  when the thermostat enters a setback mode of operation. SB_TOTAL, on the other hand, will initially be equal to zero as required in step  30 . 
     The processor proceeds from step  80  to a step  82  and inquires as to whether the currently read TIME_OF_DAY is greater than SB_INITIAL_START. In the event that the currently read TIME_OF_DAY is greater than SB_INITIAL_START, the processor will proceed along the yes path to a step  84  and compute the value of a variable denoted as SB_CURRENT. Referring to step  84 , SB_CURRENT is equal to the TIME_OF_DAY as read in step  80  minus the value of SB_INITIAL_START. It is to be appreciated that this computation should yield the current amount of setback time that has expired since SB_ACTIVE was set equal to one in step  58 . It is furthermore to be appreciated that SB_INITIAL_START may not necessarily be the same as SB_STARTIME since SB_STARTTIME is only used to determine whether or not to proceed to step  58  and begin a setback type of operation. Referring again to step  82 , in the event that the TIME_OF_DAY is not greater than SB_INTLAL_START, then the processor will proceed along the no path and compute the value of the SB_CURRENT variable in another manner. Specifically, SB_CURRENT will be equal to the value of TOTAL_TIME_ONE_DAY plus TIME_OF_DAY minus SB_INITAL_START. In this regard, the value of the variable TOTAL_TIME_ONE_DAY is the total amount of time in a given day expressed in terms of total number of minutes in the day or whatever unit of time is used in the particular embodiment. It is to be appreciated that the computation of SB_CURRENT in step  86  is necessary in the event that a transition has occurred from one day to the next following the time indicated by SB_INITIAL_START. 
     Referring now to step  88 , the value of the variable SB_TOTAL is computed as a function of the determined value of SB_CURRENT out of either steps  84  or  86 . SB_TOTAL is seen to be equal to the sum of any previous value of SB_TOTAL plus the value of SB_CURRENT. Since SB_TOTAL was initially set equal to zero in step  30 , the value of SB_TOTAL, as first computed in step  88 , should merely be the value of SB_CURRENT. It is, however, to be understood that if there have been previous setback modes of operation of the thermostat, then the value of SB_TOTAL out of step  88  will be equal to the previously determined SB_TOTAL plus SB_CURRENT. The processor proceeds from the computation of SB_TOTAL in step  88  to step  90  wherein inquiry is made as to whether SB_TOTAL is greater an MAX_SB_VALUE. MAX_SB_VALUE is preferably a value set by the energy provider as the maximum setback usage amount that may be claimed by the user of the thermostat during any one particular billing. This value may be hard coded into the software or it may be admitted to the thermostat at any point in time and stored in the memory  24  for use when step  90  is encountered. In the event that the SB_TOTAL exceeds MAX_SB_VALUE, the processor proceeds to step  92  and sets SB_TOTAL equal to MAX_SB_VALUE. Otherwise, the microprocessor proceeds along the no path out of step  90  to return step  94 . The processor proceeds out of the sub-routine of FIG. 4 back to step  78  wherein the processor proceeds to step  96  and sets SETBACK_RECORD equal to zero. 
     The processor proceeds from step  96  to stop  48  wherein the locally programed setpoints T h  and T c  are read before proceeding to step  50  to control the HVAC system in accordance with the appropriate locally entered setpoint T h  or T c . In this regard, the processor will have left the setback mode of operation and will now be using normal local unit setpoints to control the HVAC system. The processor will proceed through steps  52 ,  54 , and  56 , as has been previously described, before returning to step  32 . Since SB_ACTIVE will have been previously set equal to zero in step  76 , the processor will proceed along no path out of step  32  to inquire as to whether SETBACK_RECORD equals one. If it does not, the microprocessor will proceed along the no path to step  48  and again execute steps  48 - 56 , as has been previously described. 
     Referring again to step  34 , in the event that SETBACK_RECORD is equal to one at some point, then the processor will again read the values of SB_SETPOINTOFFSET, SB_STARTTIME, and SB_PERIOD from the memory  24  in step  36 . The processor will next proceed through steps  36 - 46  to determine whether the current TIME_OF_DAY is between the SB_STARTIME and the determined SB_ENDTIME. Assihg ta at some point TIME_OF_D)AY is between these times, the processor will proceed through steps  58 - 68  and hence through  54 - 56  as has been previously discussed. The processor will, on the next execution of the logic of FIG. 3, proceed back through step  32  and now exit along the yes path to step  70 . Assuming that the SB_TIMER is not equal to zero, the processor will proceed to a step  72  and inquire whether the override button  18  has been depressed. It will be remembered that the override button  18  will have been depressed in the event that the user wishes to override the setback mode of operation, as displayed on the display  16 . If this occurs, the processor will proceed along the yes path out of step  72  and set SB_TIMER equal to zero in a step  96 . The processor will proceed to set SB_ACTIVE equal to zero in step  76  before proceeding in step  78  to the sub-routine for computing setback participation of FIG.  4 . 
     Referring to FIG. 4, the current TIME_OF_DAY as well as the values of SB_INITIAL_START and SB_TOTAL will be read in step  80 . Inquiry will next be made as to whether the TIME_OF_DAY is greater than SB_INITIAL_START and the appropriate computation of SB_CURRENT thereafter will be made in either step  84  or  86 . The value of SB_TOTAL will again be computed in step  88 . Since the processor has previously computed a value of SB_TOTAL, the computation in step  88  will be the previous value of SB_TOTAL plus the computed value of SB_CURRENT in either step  84  or  86 . The thus computed value of SB_TOTAL will be compared to MAX_SB_VALUE in step  90  and appropriately capped in step  92 , if necessary. The processor will proceed to return to step  78  and thereafter proceed through steps  96  and  48 - 54 . Assuring that a setback usage request has not been received in step  54 , the processor will proceed through steps  54  and  56  and return to step  32 , as has been previously discussed. 
     Referring again to step  32 , it is to be appreciated that at some point in time during the successive executions of the logic of FIG. 3, another SETBACK_RECORD flag equal to one may occur. When this happens, SB_SETPOINTOFFSET and SB_STARTTIME and SB_PERIOD will again be read from the memory  24  in step  34 . At some point the TIME_OF_DAY will again be between the SB_STARTTIME and the computed SB_ENDTIME. The processor will now enter into a setback mode of operation by setting SB_ACTIVE equal to one in step  58 . The processor will proceed through steps  60 - 68 , as has been previously described, before encountering step  54 . Assuming that a setback usage request has been made and stored in the memory  24 , the processor will proceed out of step  54  to step  98  and clear the thus stored setback usage request in memory  24 . The processor will proceed to step  100  and implement the setback participation s ub-routine of FIG.  4 . As has been previously discussed, the TIME_OF_DAY will be read and compared with SB_INITIAL_START before computing the value of SB_CURRENT in either step  84  or  86 . The processor will proceed in step  88  to compute the value of SB_TOTAL. The thus computed value of SB_TOTAL will be clamped at MAX_SB_VALUE, if necessary, in step  92  before returning to step  800 . The processor will proceed from step  100  to step  102  wherein a message will be sent to the transceiver  12 , which will in turn communicate with the energy provider&#39;s receiving device. The message will include the value of SB_TOTAL. The processor will next proceed to step  104  and inquire as to whether SB_ACTIVE is equal to zero. It will be re membered that the request for setback usage was encountered during a time in which the setback mode of operation was in effect. SB_ACTIVE would hence still be equal to one prompting the processor to proceed from step  104  to step  106 . Referring to step  106 , the variable SB_INITIAL_START will be set equal to the currently read time of day from the system clock. This will, essentially, set a new SB_INITIAL_START that is equal to the presently read TIME_OF_DAY. The processor will proceed from step  106  to step  56 . 
     Referring to step  56 , it is to be noted that this step may also be encountered out of step  104 . The processor will have proceeded out of step  104  to step  56  in the event that the thermostat was no longer in a setback mode of operation, as indicated by SB_ACTIVE being equal to zero. The processor will proceed to inquire in step  56  as to whether an initialization of setback usage request has been received and stored in the memory  24 . This particular request message will possibly be transmitted by the energy provider when the energy provider wishes to start the computation of SB_TOTAL all over again from zero. If this message has been received, then the processor will proceed along the yes path to a step  108  and clear the initial setback usage request stored in memory  24 . The processor will then proceed to step  110  and set SB_TOTAL equal to zero. The processor will proceed from step  110  through junction B back to step  32 . Referring again to step  56 , in the event that a request to initialize the setback usage has not been received, the processor will proceed directly to step  32 . It is thus to be appreciated that the processor may have sent a message to the energy provider in step  102  without initializing SB_TOTAL if the processor has not received the initialized setback usage request. On the other hand, if the processor has received the initialized setback usage request, then the SB_TOTAL will be set equal to zero in step  110 . 
     Referring again to step  32 , inquiry is made as to whether SB_ACTIVE is equal to one. It is to be appreciated that SB_ACTIVE may either be one or zero after having processed a usage request through steps  98 - 110 . Assuming that SB_ACTIVE is still equal to one, then the processor will proceed along the yes path to step  70  and inquire as to whether SB_TIMER equals zero. It will be remembered that SB_TIMER has been continually decrementing towards zero since having been initially set equal to “t” in step  60 . This decrementing of the SB_TIMER will occur regardless of whether or not a setback usage request has been processed in steps  98 - 100 . At some point, the SB_TIMER will be decremented to zero when step  70  is encountered. When this occurs, the processor will proceed along the yes path to step  76  and set SB_ACTIVE equal to zero before implementing the computation of setback participation in step  78 . Referring to the sub-routine for computing setback computation in FIG. 4, the processor will again read the TIME_OF_DAY as well as the values of SB_INITIAL_START and SB_TOTAL. It will be remembered that SB_INITIAL_START will have been set equal to the TIME_OF_DAY occurring when step  106  is executed. This will be a different SB_INITLAL_START than would have been normally carried by the processor as a result of implementing step  58 . In other words, SB_INITIAL_START will now be whatever TIME_OF_DAY it was when the setback usage request was processed. The processor will proceed to inquire whether or not the read time of day in step  80  in greater than the value of SB_INITIAL_START in step  82 . As has been previously discussed, SB_CURRENT will be computed out of step  82  in either step  84  or  86 . SB_TOTAL will now be computed in step  88 . Referring to steps  98 - 110 , it will be appreciated that the previous value of SB_TOTAL will either be whatever has been computed previously during previous executions of the logic or SB_TOTAL will have been previously set equal to zero in step  110 . In this latter case, SB_TOTAL will be equal to zero in step  110  as a result of a received message from the energy provider to initialize the setback usage out of step  56 . It is hence to be appreciated that SB_TOTAL as computed in step  88  will either be a continuing accumulation of previous SB_TOTAL values in conjunction with the SB_CURRENT value or it will be a new SB_TOTAL starting from an SB_TOTAL of zero. It is to be furthermore appreciated that any subsequent computation of SB_TOTAL in step  88  will include any remaining portion of a setback mode of operation that continues in effect. This will occur even if the SB_TOTAL is cleared in step  110  as a result of also having received a request to initialize the setback usage. 
     It is to be appreciated that a preferred embodiment of a program for tracking and reporting setback usage has been disclosed. Alternations and modifications to the thus disclosed program may occur without departing from the scope of the invention. In particular, the processor may, for instance, receive different setpoint offsets for heating and cooling. In this event, the adjustments to the current heating and cooling setpoints would be with respect to the particularly computed offsets for each setpoint rather than the currently disclosed single SB_SETPOINTOFFSET. It is also to be appreciated that the approach to adjusting current heating and cooling setpoints by setpoint offsets need not occur to practice the invention. In this regard, setpoint offsets could be replaced by setpoints communicated by the energy provider. In this latter case, there would be no need for logic implementing adjustments to T h  or T c . It is furthermore to be appreciated that the SB_TIMER may be initially set up differently so as to not be a decrementing timer from a particular time “t”. For instance, the timer may be incremented from zero at the initialization of a setback mode would work equally well. 
     Accordingly, the foregoing description of a preferred embodiment is by way of example only and the invention is to be limited by the following and equivalents thereto.