Abstract:
A method for programming a thermostat, comprising the steps of providing a thermostat programmed to convert programming codes into time-temperature schedules; determining a desired time-temperature schedule; developing a programming code corresponding to the desired time-temperature schedule; and entering the programming code into the thermostat, whereby the programming code is translated into the desired time-temperature schedule. The schedule and programming code can advantageously be determined by a user by accessing a server via computer network, on a suitably programmed personal computer, by telephone, or by any other suitable method of allowing the user access to software for determining the schedule and developing the desired code.

Description:
BACKGROUND OF THE INVENTION 
     The invention relates to a method for programming a thermostat and, more particularly, to a method for programming a thermostat with heating and cooling schedules. 
     Programmable thermostats are well known in the art and typically have a keypad wherein heating and cooling schedules can be entered so as to provide for different thermostat temperature settings for various periods of the day. Programming the heating and cooling schedules of a programmable thermostat typically requires many button presses, mode changes, good vision and a good memory. Due to size requirements of the thermostat, the display is necessarily small making programming difficult. The difficulty of programming such a thermostat is compounded by the fact that programming directions, which are typically provided with product literature, are frequently not readily available to the user. 
     It is clear that the need remains for a method for programming a programmable thermostat which overcomes these difficulties. 
     It is therefore the primary object of the present invention to provide an improved method for programming a programmable thermostat. 
     It is a further object of the present invention to provide such a method wherein programming is enhanced within the resource constraints of existing programmable thermostats. 
     Other objects and advantages of the present invention will be presented herein below. 
     SUMMARY OF THE INVENTION 
     In accordance with the present invention, the foregoing objects and advantages have been readily attained. 
     According to the invention, a method is provided for programming a thermostat, which method comprises the steps of providing a thermostat programmed to convert programming codes into time-temperature schedules; determining a desired time-temperature schedule; developing a programming code corresponding to said desired time-temperature schedule; and entering said programming code into said thermostat, whereby said programming code is translated into said desired time-temperature schedule. 
     The desired schedule and code can advantageously be selected and obtained by a user interfacing with a suitable programming device. The interface could be by computer network, telephone or personal computer, for example. This allows the user to select scheduling options directly from a user friendly graphical user interface. 
     A further advantage of the invention results from recursively generating a decoding dictionary at the thermostat whereby memory requirements at the thermostat are reduced. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     A detailed description of preferred embodiments of the invention follows, with reference to the attached drawings, wherein: 
     FIG. 1 is a flowchart illustrating the preparation of a programming code in accordance with the present invention; and 
     FIG. 2 is a flowchart illustrating the decoding of a programming code at the thermostat device so as to obtain thermostat operating instructions. 
    
    
     DETAILED DESCRIPTION 
     The invention relates to a method for programming a thermostat and, more particularly, to a method utilizing an external device to create a programming code which can readily and easily be entered into a programmable thermostat, thereby greatly facilitating the programming function. 
     In accordance with the invention, a method is provided whereby time-temperature scheduling is transformed into a programming code which is recognizable by a programmable thermostat. The programming code is devised using a device external to the programmable thermostat. This allows the programming to be carried out using a far more user friendly device such as a personal computer or a server-based programming device remote to the thermostat and accessible by Internet, telephone network, and the like. 
     Conventional programmable thermostats typically involve the entering of complex instructions utilizing a very small display window and keypad. This can present difficulty to users when attempting to program the thermostat for operation on 2 or 4 period days, and potentially with more than one different schedule, for example for weekdays and weekends. 
     It is typically desirable to be able to program a thermostat for at least two periods per day, those being day and night periods. It is further preferable to be able to program a thermostat for operation on a four period day with potentially different instructions for periods during the day such as wake, day, evening and night. Of course, different numbers of periods per day could also be used, if desired. 
     This programming preferably includes heating setpoints, cooling setpoints and start times for the various periods. Thus, the variables which must be accounted for during programming of a thermostat include heating and/or cooling temperatures for each different period, and various different start times for those periods. 
     One aspect of the invention relates to the graphical user interface (GUI) or interfaces presented to the user for selecting a desired time-temperature schedule. Another aspect of the invention relates to the programming or development of a code corresponding to the desired schedule and decoding of that code at the thermostat to operate according to the desired schedule. 
     In connection with the interface, it may be desirable to present a user with a number of time and temperature options from which the desired schedule can be selected, and such options are advantageously displayed to the user as actual options for selection. That is, an interface or display is presented to the user including actual times and temperatures for selection, which greatly simplifies the schedule selection step and makes programming more user friendly. 
     Table 1 below sets forth a typical example of a limited selection of time-temperature scheduling that could be presented to a user, for example in a GUI of other display. 
     
       
         
               
               
               
             
               
               
               
               
               
             
               
               
               
               
               
               
             
           
               
                   
                 TABLE 1 
               
             
             
               
                   
                   
               
               
                   
                 Periods 
                   
               
             
          
           
               
                   
                 Wake 
                 Day 
                 Evening 
                 Night 
               
               
                   
                   
               
             
          
           
               
                   
                 Heating 
                 60 
                 60 
                 60 
                 60 
               
               
                   
                 Setpoints 
                 64 
                 64 
                 64 
                 64 
               
               
                   
                 (deg F.) 
                 66 
                 66 
                 66 
                 66 
               
               
                   
                   
                 68 
                 68 
                 68 
                 68 
               
               
                   
                   
                 70 
                 70 
                 70 
                 70 
               
               
                   
                   
                 72 
                 72 
                 72 
                 72 
               
               
                   
                   
                 74 
                 76 
                 74 
                 76 
               
               
                   
                   
                 76 
                   
                 76 
               
               
                   
                   
                 80 
                   
                 80 
               
               
                   
                 Cooling 
                 68 
                 72 
                 68 
                 72 
               
               
                   
                 Setpoints 
                 70 
                 74 
                 70 
                 74 
               
               
                   
                 (deg F.) 
                 72 
                 76 
                 72 
                 76 
               
               
                   
                   
                 74 
                 78 
                 74 
                 78 
               
               
                   
                   
                 76 
                 80 
                 76 
                 80 
               
               
                   
                   
                 78 
                 82 
                 78 
                 82 
               
               
                   
                   
                 80 
                 84 
                 80 
                 84 
               
               
                   
                   
                 82 
                   
                 82 
               
               
                   
                   
                 84 
                   
                 84 
               
               
                   
                 Start 
                 5:00 am 
                 Tw + 90 min 
                 3:00 pm 
                  9:30 pm 
               
               
                   
                 Times 
                 5:30 am 
                   
                 4:00 pm 
                 10:30 pm 
               
               
                   
                   
                 6:00 am 
                   
                 5:00 pm 
                 11:30 pm 
               
               
                   
                   
                 6:30 am 
               
               
                   
                   
                 7:00 am 
               
               
                   
                   
                 7:30 am 
               
               
                   
                   
               
             
          
         
       
     
     Table 1 would also be valid for allowing selection on a two period per day operation by utilizing, for example, only the day and night entries. Evening temperatures would follow the day temperatures and wake temperatures would follow the night temperatures. 
     Of course, other types of interfaces could be presented to the user for selection of a schedule. For example, the user could be presented with a number of times starting setpoints for a number of periods selected from half hour increments of a 24 hour period , and a series of possible temperature setpoints, for example ranging from 60° F. to 79° F. in one degree increments. 
     It should be appreciated that the more options presented to the user, the more complicated will be the encode/decode steps to be performed, which could result in increased memory requirements at the thermostat and/or undesirably long codes. 
     It should also be appreciated that a user can be presented with several “pre-programmed” options corresponding to certain common time-temperature schedules so as to further simplify the schedule selection process. 
     According to the invention, the desired schedule is encoded so as to provide a programming code for entry into the thermostat. 
     The encoding/decoding can be done using a “table-based approach” wherein a dictionary is present at both the code generating device and the code receiving device. The programming code in this approach could be a serially or otherwise generated number corresponding to the desired dictionary entry. This approach results in a reduced length or number of digits of the code, but also in a substantial amount of memory overhead for storage of the dictionary at the thermostat. 
     The encoding/decoding can also be done using a “raw data approach” which essentially appends time-temperature information directly into the programming code. This results in a reduced memory requirement in the code receiving device, but requires a longer code. 
     To further illustrate a straight table based approach, assume 4 periods per schedule and 20 possible temperature setpoints per period (for example ranging from 60 to 79 degrees F. in increments of 1 degree). The total number of combinations of temperatures for a heating setpoint profile is 20 4  or 160,000. It is expected that there would be two schedules for every 7 days, one schedule for workweek and the other schedule for weekend. Thus, the total number of combinations and table entries for a 7 day heating setpoint profile would be 2·20 4 , or 320,000, which could lead to substantial memory requirements at the thermostat. Of course, by assigning a different number to each profile, it is readily apparent that any particular profile identifier will not exceed 7 base-10 or base-8 digits. 
     In connection with the time portion of the schedule, assuming a ½ hour interval for times, there are 48 possible time points in a 24 hour range. This generates 48 4  or 5,308,416 combinations which must be doubled to account for both weekday and weekend schedules. A time schedule used for heating will be the same schedule as used for cooling, so no additional scheduling is required. Thus, the total number of combinations for time scheduling becomes 2·48 4 , or 10,616,832, table entries, which also could lead to substantial memory requirements of the thermostat, but which also could be identified using an 8 digit code. Thus, utilizing a combination of the digit identifiers for temperature and time, the table or dictionary approach will provide substantially complete coverage of the operational time-temperature space with only a 15 digit string to represent the two schedules of four periods for heating and cooling. However, this approach will also require significant memory at the programmable thermostat to hold the table (or dictionary) data. 
     To further illustrate the raw data approach, the time and temperature information of a schedule is defined through four time-temperature pairs of raw data. In this approach, no table or dictionary is required for interpreting the entered programming code. Rather, a simple program can be provided in the programmable thermostat which will accept the first digit of each pair as a time, for example, and the second digit of each pair as a temperature. Utilizing this approach, a programming code could be provided as follows: [11,68 15,62 27,70 45,64]. Under this approach, the programmable thermostat would be programmed to set 68° F. as a temperature at 5:30 am, 62° F. at 7:30 am, 70 ° F. at 1:30 pm and 64° F. at 10:30pm. This corresponds to 16 base-10 digits for one schedule. Taking into account two different schedules per week, this approach will require a 32 digit string to be entered by a user as opposed to the 15 digit string of the table approach. Of course, the raw data approach does minimize the amount of memory required at the programmable thermostat as compared to the table or dictionary approach. 
     In accordance with the invention, an encode/decode algorithm has been formulated which utilizes a table-based approach utilizing a subset of the total operational space (for example Table 1), and a recursively generated dictionary. Instructions for generating the dictionary preferably include a first portion contained in the programming code format and a second portion stored in memory at the receiving device. This advantageously provides for a reasonably small programming code as compared to the raw data approach while nevertheless substantially reducing the memory requirements at the code receiving device or thermostat as compared to the table approach. 
     As set forth above, one encoding/decoding method or algorithm which is particularly useful in accordance with the present invention is a table approach utilizing a subset of the operational space as a user selection menu or GUI, and a recursively generated dictionary, both of which reduce memory requirements at the thermostat. The recursive algorithm does require that a table be ordered such that the most rapidly varying signal, that is, the one with the highest frequency, is in the leftmost column and the slowest varying signal, that is the lowest frequency signal, is in the rightmost column. The recursion is preferably index based rather than value based so as to extend the linearity, thereby making the decode algorithm simpler and more efficient and therefore more suitable to incorporate into a programmable thermostat. 
     The table is preferably structured in column form with the index in the first column, and successive columns followed by the highest frequency signal through to the lowest frequency in descending order of frequency. 
     For example, consider a table of 3 signals, x 1 , x 2 , x 3  defined as: 
     x 1  =[x 1 ( 0 ) x 1 ( 1 ) x 1 ( 2 )] 
     x 2  =[x 2 ( 0 ) x 2 ( 1 )] 
     x 3  =[x 3 ( 0 ) x 3 ( 1 )] 
     A table (Table 2) can be arbitrarily created with the index in the first column, x 1  in the second column, x 2  in the third column and x 3  in the fourth column as follows: 
     
       
         
               
               
               
               
               
             
           
               
                   
                 TABLE 2 
               
               
                   
                   
               
               
                   
                 Index 
                 x1 
                 x2 
                 x3 
               
               
                   
                   
               
             
             
               
                   
                 1 
                 x1 (0) 
                 x2 (0) 
                 x3 (0) 
               
               
                   
                 2 
                 x1 (1) 
                 x2 (0) 
                 x3 (0) 
               
               
                   
                 3 
                 x1 (2) 
                 x2 (0) 
                 x3 (0) 
               
               
                   
                 4 
                 x1 (0) 
                 x2 (1) 
                 x3 (0) 
               
               
                   
                 5 
                 x1 (1) 
                 x2 (1) 
                 x3 (0) 
               
               
                   
                 6 
                 x1 (2) 
                 x2 (1) 
                 x3 (0) 
               
               
                   
                 7 
                 x1 (0) 
                 x2 (0) 
                 x3 (1) 
               
               
                   
                 8 
                 x1 (1) 
                 x2 (0) 
                 x3 (1) 
               
               
                   
                 9 
                 x1 (2) 
                 x2 (0) 
                 x3 (1) 
               
               
                   
                 10  
                 x1 (0) 
                 x2 (1) 
                 x3 (1) 
               
               
                   
                 11  
                 x1 (1) 
                 x2 (1) 
                 x3 (1) 
               
               
                   
                 12  
                 x1 (2) 
                 x2 (1) 
                 x3 (1) 
               
               
                   
                   
               
             
          
         
       
     
     The values of x 1 , x 2 , and x 3  are not used, instead their indices are used. This will preserve linearity in the encode algorithm making the decoding algorithm a linear inversion independent of data spacing and value. 
     Based on Table 2, the index in column  1  can be represented by the encoding relationship: 
       i=i   x1   +n   x1   i   x2   +n   x1   n   x2   i   x3 +1 
     where 
     i x1 =x 1  index=[ 012 ] 
     i x2 =x 2  index=[ 01 ] 
     i x3 =x 3  index=[ 01 ] 
     n x1 =#x 1  entries=3 
     n x2 =#x 2  entries=2 
     To generalize this relationship, indices i xn  can be encoded to provide a programming code (i) for n columns using an encoding algorithm as follows: 
     
       
           i=i   x1   +n   x1   i   x2   +n   x1   n   x2   i   x3   +. . . +n   x1   n   x2    . . . n   x(n−1)   i   xn +1, 
       
     
     wherein i is the programming code, i x  represents index values, and n x  represents the number of selections for each column. 
     Based on the encoding relationship, repeated below for a three signal table, and using the integer characteristic of the indices, it is possible to solve the encoding relationship directly (non-iteratively) for each index. 
     
       
           i=i   x1   +n   x1   i   x2   +n   x1   n   x2   i   x3 1 
       
     
     or 
     
       
           ii=i −1 =i   x1   +n   x1   i   x2   +n   x1   n   x2   i   x3   
       
     
     The decode approach used is outlined in the following procedure (Table 3) for the 3 signal table in the above example; 
     
       
         
               
               
               
             
           
               
                   
                 TABLE 3 
               
               
                   
                   
               
             
             
               
                   
                 Step 1: Given the index, i, and each of the signal dimensions, n x1 , n x2 , . . . , compute the rightmost signal index, in this case i x3   
                 
                   
                     
                       
                         
                           i 
                           x3 
                         
                         = 
                         
                           
                             int 
                              
                             
                               ( 
                               
                                 ii 
                                 
                                   
                                     n 
                                     x1 
                                   
                                    
                                   
                                     n 
                                     x2 
                                   
                                 
                               
                               ) 
                             
                           
                           - 
                           
                             int 
                              
                             
                               ( 
                               
                                 
                                   i 
                                   x1 
                                 
                                 
                                   
                                     n 
                                     x1 
                                   
                                    
                                   
                                     n 
                                     x2 
                                   
                                 
                               
                               ) 
                             
                           
                           - 
                           
                             int 
                              
                             
                               ( 
                               
                                 
                                   
                                     n 
                                     x1 
                                   
                                    
                                   
                                     i 
                                     x2 
                                   
                                 
                                 
                                   
                                     n 
                                     x1 
                                   
                                    
                                   
                                     n 
                                     x2 
                                   
                                 
                               
                               ) 
                             
                           
                         
                       
                     
                             
                     
                         
                     
                   
                 
               
               
                   
                   
               
               
                   
                   
                 
                   
                     
                       
                         
                           i 
                           x3 
                         
                         = 
                         
                           int 
                            
                           
                             ( 
                             
                               ii 
                               
                                 
                                   n 
                                   x1 
                                 
                                  
                                 
                                   n 
                                   x2 
                                 
                               
                             
                             ) 
                           
                         
                       
                     
                             
                     
                         
                     
                   
                 
               
               
                   
                   
               
               
                   
                 Step 2: Deflate 
                 ii = i − 1 − n x1 n x2 i x3  = i x1  + n x1 i x2   
               
               
                   
                   
               
               
                   
                 Step 3: Resolve as in Step 1 
                 
                   
                     
                       
                         
                           i 
                           x2 
                         
                         = 
                         
                           
                             int 
                              
                             
                                 
                             
                              
                             
                               ( 
                               
                                 ii 
                                 
                                   n 
                                   x1 
                                 
                               
                               ) 
                             
                           
                           - 
                           
                             int 
                              
                             
                                 
                             
                              
                             
                               ( 
                               
                                 
                                   i 
                                   x1 
                                 
                                 
                                   n 
                                   x1 
                                 
                               
                               ) 
                             
                           
                         
                       
                     
                             
                     
                         
                     
                   
                 
               
               
                   
                   
               
               
                   
                   
                 
                   
                     
                       
                         
                           i 
                           x2 
                         
                         = 
                         
                           int 
                            
                           
                             ( 
                             
                               ii 
                               
                                 n 
                                 x1 
                               
                             
                             ) 
                           
                         
                       
                     
                             
                     
                         
                     
                   
                 
               
               
                   
                   
               
               
                   
                 Step 4: Deflate and 
                 ii = ii − n x1 i x2  = i x1   
               
               
                   
                 continue solution 
               
               
                   
                 iterations until all 
               
               
                   
                 signal indices are 
               
               
                   
                 solved. 
               
               
                   
                   
               
             
          
         
       
     
     Referring now to FIG. 1, the method of the present invention is illustrated starting with selection of a desired heating/cooling and time schedule through to entering of the code in a programmable thermostat. 
     As shown in step  10 , a user interface is established to allow the user to select a desired schedule. The user interface could be a GUI such as Table 1 presenting the user with a limited subset of actual choices within the entire operational space, or could be any other interface selected to allow user friendly entry of the desired schedule. The user interface can be established through accessing processing software which can reside on a server accessed by communication network such as the Internet, or which could reside locally on a personal computer, or both. The user is prompted to enter or select a pre-programmed schedule or the number of periods desired per day, the period starting times and the period temperatures. The programming device receiving this information then determines whether cooling mode or heating mode or both is to be selected, as shown in FIG. 1 at step  20 . 
     As shown in step  30 , in heating mode, time and heating temperature data is mapped into indices, as are times and cooling temperature data in step  40 . In step  50 , the programming device determines whether two or four periods have been selected, and redefines periods (step  55 ) if necessary. Finally, in step  60 , the programming device encodes time and temperature indices into programming code which is then provided to the user for external entry into the programmable thermostat as desired. 
     Referring to FIG. 2, the method of the present invention related to entry of the programming code into the code receiving thermostat is further illustrated. 
     As shown by step  70 , the thermostat may be programmed to operate in a code receiving mode upon receiving a specified command. Once a user enters this command the thermostat is configured to receive the previously developed programming code. 
     As shown in step  80 , in code receiving mode, the thermostat receives the appropriate programming code, for example, a 12 digit programming code having 6 digits each for two schedules. Since programmable thermostats typically have 8 buttons, the code may desirably have been provided as a code of base 8 numbers. Of course, other types of codes and keypads are suitable within the scope of the present invention, and entry may be facilitated for the user through a keypad overlay and the like. 
     As shown in step  90 , the programmable thermostat will cycle through the code entering step until the full amount of expected digits have been entered, at which point the programmable thermostat will decode the programming code into time and temperature indices (step  100 ), map time and temperature indices to the time and temperature values (step  110 ) and resume normal operation automatically under the control of the new programming profile (step  120 ). 
     It should be readily appreciated that this method advantageously allows for versatile and detailed programming of the thermostat in a user friendly and resource efficient manner, and thereby responds to the need identified above. 
     EXAMPLE 
     In this example, selection is made by the user accessing a web server programmed with appropriate selection and encoding software. In order to illustrate use of the preferred encode and decode algorithms a representative example is presented. Consider a typical 4 period heating setpoint table as shown below: 
     
       
         
               
               
             
               
               
               
               
               
             
               
               
               
               
               
             
           
               
                   
                   
               
               
                   
                 Periods 
               
             
          
           
               
                   
                 Wake 
                 Day 
                 Evening 
                 Night 
               
               
                   
                   
               
             
          
           
               
                 Heating 
                 x1 (1) = 64 
                 x2 (1) = 60 
                 x3 (1) = 64 
                 x4 (1) = 60 
               
               
                 Setpoints 
                 x1 (2) = 68 
                 x2 (2) = 64 
                 x3 (2) = 68 
                 x4 (2) = 64 
               
               
                 (deg F.) 
                 x1 (3) = 70 
                 x2 (3) = 68 
                 x3 (3) = 70 
                 x4 (3) = 68 
               
               
                   
                 x1 (4) = 72 
                 x2 (4) = 72 
                 x3 (4) = 72 
                 x4 (4) = 72 
               
               
                   
                 x1 (5) = 74 
                   
                 x3 (5) = 74 
               
               
                   
               
             
          
         
       
     
     The encode—decode procedure is defined in a three step process. 
     Step 1: Parameter setup in the thermostat and the web server. Here the heating setpoint values and related dimensionality parameters are defined in both the thermostat and the web server. 
     1A. Heating Setpoint Values are defined in 4 vectors: 
     Tw=[64,68,70,72,74]=Wakeup Temperatures 
     Td=[60,64,68,72]=Day Temperatures 
     Te=[64,68,70,72,74]=Evening Temperatures 
     Tn=[60,64,68,72]=Night Temperatures 
     1B. Dimensionality is the number of elements in each of the four periods: 
     nw=5=Number of Wakup Temperatures 
     nd=4=Number of Day Temperaturess 
     ne=5=Number of Evening Temperatures 
     nn=4=Number of Night Temperatures 
     Step 2: Encode the temperature selection. This operation occurs in the web server. For illustration purposes, the following four temperatures are defined to represent the wakeup, day, evening, and night selections. T=[72,60,70,64] 
     2A. Convert the temperature values to their associated indices: 
     iw=4=Temperature index of wakeup temperature selection 
     id=1=Temperature index of day temperature selection 
     ie=3=Temperature index of evening temperature selection 
     in=2=Temperature index of night temperature selection 
     2B. Encode the indices into the programming code, i, using the relationship; 
     
       
           i=i   w   +n   w   i   d   +i   e   +n   w   n   d   n   e   i   n +1=4+5·1+5·4·3+5·4·5·2+1=270 
       
     
     Step 3: Decode the programming code in the thermostat after it has been manually entered. Using the programming code generated in step  2 B, the following recursive operations are performed to first extract the individual Temperature indices and then to convert the indices back to actual temperature values. 
     3A. Decoding operation, 
     
       
         
               
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 Step 1: Compute the index of the 
                 ii = i − 1 = 269 
               
               
                   
                 rightmost temperature column. 
               
               
                   
                   
               
               
                   
                   
                 
                   
                     
                       
                         
                           i 
                           n 
                         
                         = 
                         
                           
                             int 
                              
                             
                                 
                             
                              
                             
                               ( 
                               
                                 ii 
                                 
                                   
                                     n 
                                     w 
                                   
                                    
                                   
                                     n 
                                     d 
                                   
                                    
                                   
                                     n 
                                     e 
                                   
                                 
                               
                               ) 
                             
                           
                           = 
                           
                             
                               int 
                                
                               
                                   
                               
                                
                               
                                 ( 
                                 
                                   269 
                                   100 
                                 
                                 ) 
                               
                             
                             = 
                             2 
                           
                         
                       
                     
                             
                     
                         
                     
                   
                 
               
               
                   
                   
               
               
                   
                 Step 2: Deflate 
                 ii = ii − n w n d n e i n  = 269 − 100 · 
               
               
                   
                   
                 2 = 69 = i w  + n w i d  + n w n d i e   
               
               
                   
                   
               
               
                   
                 Step 3: Resolve as in Step 1 
                 
                   
                     
                       
                         
                           i 
                           e 
                         
                         = 
                         
                           
                             int 
                              
                             
                                 
                             
                              
                             
                               ( 
                               
                                 ii 
                                 
                                   
                                     n 
                                     w 
                                   
                                    
                                   
                                     n 
                                     d 
                                   
                                 
                               
                               ) 
                             
                           
                           = 
                           
                             
                               int 
                                
                               
                                   
                               
                                
                               
                                 ( 
                                 
                                   69 
                                   20 
                                 
                                 ) 
                               
                             
                             = 
                             3 
                           
                         
                       
                     
                             
                     
                         
                     
                   
                 
               
               
                   
                   
               
               
                   
                 Step 4: Deflate 
                 ii = ii − n w n d i e  = 69 − 20 · 3 = 
               
               
                   
                   
                 9 = i w  + n w i d   
               
               
                   
                   
               
               
                   
                 Step 5: Resolve as in Step 1 
                 
                   
                     
                       
                         
                           i 
                           d 
                         
                         = 
                         
                           
                             int 
                              
                             
                                 
                             
                              
                             
                               ( 
                               
                                 ii 
                                 
                                   n 
                                   w 
                                 
                               
                               ) 
                             
                           
                           = 
                           
                             
                               int 
                                
                               
                                   
                               
                                
                               
                                 ( 
                                 
                                   9 
                                   5 
                                 
                                 ) 
                               
                             
                             = 
                             1 
                           
                         
                       
                     
                             
                     
                         
                     
                   
                 
               
               
                   
                   
               
               
                   
                 Step 6: Deflate 
                 ii = ii − n w i d  = 9 − 5 · 1 = 4 = 
               
               
                   
                   
                 i w   
               
               
                   
                   
               
             
          
         
       
     
     The recursive nature of the decoding operations is in steps 2 through 6. 
     3B. Convert indices to temperature value 
     Twakeup=Tw(iw)=Tw( 4 )=72 
     Tday=Td(id)=Td( 1 )=60 
     Tevening=Te(ie)=Te( 3 )=70 
     Tnight=Tn(in)=Tn( 2 )=64 
     It is to be understood that the invention is not limited to the illustrations described and shown herein, which are deemed to be merely illustrative of the best modes of carrying out the invention, and which are susceptible of modification of form, size, arrangement of parts and details of operation. The invention rather is intended to encompass all such modifications which are within its spirit and scope as defined by the claims.