Skip to content

Interpreting Data

Ron Isaacson edited this page Nov 29, 2020 · 46 revisions

Note: The data format is somewhat similar, but a very simplified version of the Carrier Infinity data format. See: https://github.com/nebulous/infinitude/wiki/Infinity---interpreting-data

The first three bytes of the data refer to a "register" which represents a table and row number. The high byte of the register relates to a table, and the low byte refers to a row in that table. A dot "." is used as a delimiter between bytes.

Zone 1 is the master controller in a CZII system.

Some example data below (checksums omitted):

// Zone 1 Master writing to CZII Controller Table 9, Row 5 the value "128"
9.0   1.0   4    0.0.12  0.9.5.128
// Ack response "0" from CZII Controller to Zone 1 
1.0   9.0   1    0.0.6   0  

// Request from Zone 1 to Zone 2 for Table 2, Row 3 data
2.0   1.0   3    0.0.11  0.2.3            
// Response from Zone 2 to Zone 1 with data "1 0 0 0 4 69 68 66 78 0" 
1.0   2.0   13   0.0.6   0.2.3.1.0.0.0.4.69.68.66.78.0

Table 9

Table 9 seems to be used to get status information from and to send commands to the CZII Controller (Address=9).

Row 1

9.0  1.0  3   0.0.11  0.9.1.                                             
1.0  9.0  11  0.0.6   0.9.1.255.255.255.255.255.255.255.255.             

Row 2

9.0  1.0  3   0.0.11  0.9.2.                                             
1.0  9.0  11  0.0.6   0.9.2.255.255.255.255.255.255.255.255.             

Row 3

9.0  1.0  3   0.0.11  0.9.3.                                            
1.0  9.0  10  0.0.6   0.9.3.195.3.136.71.255.0.0.                       

Bytes 0-2: Table & Row

Byte 3 : Panel option switch values

Byte 3
Option Switch 1 Option Switch 2 Option Switch 3 Option Switch 4 Option Switch 5 Option Switch 6 Option Switch 7 Option Switch 8
0 = AC, 1 = HP 0 = 1 Speed, 1 = 2 Speed 0 = 1- or 2-Stage Heat (also called No Smart Staging), 1 = 3-Stage Heat (also called Smart Staging) 0 = Smart Recovery, 1 = Conventional Recovery 0 = Address 1, 1 = Address 2 0 = Normal, 1 = Installer Test 0 = Lo Temp Cool, 1 = Lo Temp Cool Off 0 = No Dual Fuel, 1 = Dual Fuel

Bytes 4 and 5: Outside Temperature The bytes (3.136) represent the outside temperature. To get deg F convert the two bytes (2s compliment format) into decimal and divide by 16.

Byte 6: Leaving Air Temperature from the air handler/furnace.

Byte 7: HPT temperature (the temperature of the air leaving the indoor coil)

Byte 8: Defrost W1 Input (0 = Off, 1 = On)

Byte 9: Defrost W2 Input (0 = Off, 1 = On)

Row 4

9.0  1.0  11  0.0.12  0.9.4.15.0.0.0.0.0.0.0.                            
1.0  9.0  1   0.0.6   0.                                                 

Bytes 0-2: Table & Row

Bytes 3-10: Damper positions for Zones 1-8. Value is from 0 (fully closed) to 15 (fully open).

Row 5

9.0  1.0  4   0.0.12  0.9.5.128.                                          
1.0  9.0  1   0.0.6   0.                                                 

Zone 1 write to Zone 9 configuration info:

Bytes 0-2: Table & Row

Byte 3 : Bit mask of operating state

Fan Off                  (128) (80) (1000 0000)
Fan On                   (160) (A0) (1010 0000)
Fan On, Heat Pump On     (161) (A1) (1010 0001)
Fan On, Aux Heat On      (173) (AD) (1010 1101)
Fan On, A/C On           (177) (B1) (1011 0001)

Note: Aux heat might come on briefly while defrosting, but otherwise, the use of aux heat might indicate that the heat pump isn't working.

Byte 3
De Humidify Humidify Fan State (G) Reversing Valve Aux Heat Stage 2 (W2) Aux Heat Stage 1 (W1) Compressor Stage 2 (Y2) Compressor Stage 1 (Y1)
1 bit 1 bit 1 bit 1 bit 1 bit 1 bit 1 bit 1 bit

Table 2

Table 2 seems to be used by the Zone 1 Master (Address = 1) to get status information from and to send commands to the different Zones (Addresses = 2-8).

Row 1

2.0  1.0  13  0.0.12  0.2.1.0.60.3.140.3.0.0.0.2.0.                      

Zone 1 sends to Zone 2 status info:

Bytes 0-2: Table & Row

Byte 3 : Unknown

Byte 4: Humidity

Bytes 5 and 6: Outside Temperature The bytes (3.140) represent the outside temperature (56 deg F). To get deg F convert the two bytes (2s compliment format) into a decimal and divide by 16.

Byte 7-12 : Unknown

Row 2

2.0  1.0  10  0.0.12  0.2.2.0.0.0.0.67.77.0.                           

Zone 1 sends data to Zone 2:

Bytes 0-2: Table & Row

Byte 3 : Hold?

Byte 4 : Unknown

Byte 5 : Out?

Byte 6 : Unknown

Byte 7: Zone Heat set point (deg F)

Byte 8: Zone Cool set point (deg F)

Byte 9 : Zone 1 seems to set to 1 to save changes to Zone???

Row 3

2.0  1.0  3   0.0.11  0.2.3.                                            
1.0  2.0  13  0.0.6   0.2.3.0.0.0.0.4.120.71.67.77.0.                    

Zone 2 responds to Zone 1 with status info:

Bytes 0-2: Table & Row

Byte 3-6 : Unknown

Bytes 7 and 8: Zone Temp? The bytes (4.120) represent the outside temperature. To get deg F convert the two bytes (2s compliment format) into decimal and divide by 16.

Byte 9: Zone Temperature (deg F)

Byte 10: Zone Heat set point (deg F)

Byte 12: Zone Cool set point (deg F)

Table 1

Table 1 seems to be used to remotely control and to get status information from the Zone 1 Master (Address = 1). Table 1 messages are not normally transmitted on the CZII communication bus during normal use, but if a request is sent to Zone 1 it will respond with data for rows 1-34.

Row 1

1.0  3.0  3   0.0.11  0.1.1  
3.0  1.0  19  0.0.6   0.1.1.0.240.0.207.0.240.0.240.0.240.0.240.0.240.0.240.  

Row 2

1.0  3.0  3   0.0.11  0.1.2.  
3.0  1.0  17  0.0.6   0.1.2.6.2.0.79.3.10.0.1.2.2.243.100.1.160.  

Bytes 0-2: Table & Row

Byte 4 : Number of zones

Byte 10 : Zone number whose information is currently displayed on the LCD screen

Byte 12 : Current scheduled program (0 = Wake, 1 = Day, 2 = Eve, 3 = Sleep) for the zone indicated by byte 10

Row 3

1.0  3.0  3   0.0.11  0.1.3. 
3.0  1.0  19  0.0.6   0.1.3.0.7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.  

Row 4

1.0  3.0  3   0.0.11  0.1.4.  
3.0  1.0  10  0.0.6   0.1.4.0.0.0.0.0.0.0.  

Row 5

1.0  3.0  3   0.0.11  0.1.5. 
3.0  1.0  8   0.0.6   0.1.5.0.0.0.0.0.  

Row 6

1.0  3.0  3   0.0.11  0.1.6.  
3.0  1.0  16  0.0.6   0.1.6.0.0.4.98.61.0.0.0.0.0.0.10.6. 

Zone 1 sends to Zone 3 data:

Bytes 0-2: Table & Row

Byte 3-4 : Unknown

Bytes 5 and 6: Zone 1 Temperature The bytes (4.98) represent the outside temperature. To get deg F convert the two bytes (2s compliment format) into decimal and divide by 16.

Byte 7 : Zone 1 Humidity

Byte 8-13 : Unknown

Byte 14-15 : Seems to be a time value. High byte is Minutes, low byte is seconds.

Row 7

1.0  3.0  3   0.0.11  0.1.7. 
3.0  1.0  18  0.0.6   0.1.7.0.0.35.0.0.0.0.0.12.12.12.12.12.12.0. 

Row 8

1.0  3.0  3   0.0.11  0.1.8. 
3.0  1.0  19  0.0.6   0.1.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.  

Row 9

1.0  3.0  3   0.0.11  0.1.9.  
3.0  1.0  18  0.0.6   0.1.9.184.61.2.35.45.3.153.0.29.2.60.128.240.0.0.  

Bytes 0-2: Table & Row

Byte 3 : Same as row 17, byte 3?

Byte 4 : Zone 1 Humidity

Byte 5 : Humidifying mode. Possible values are: 0 = Normal, 1 = FAN icon, 2 = AUTO icon, 3 = both FAN and AUTO icons, 4 = OFF. See pages 13-14 of the installation manual or pages 17-18 of the owner's guide for an explanation of the different humidifying modes.

Byte 6 : Humidify setpoint (manual) - used when humidifying in Normal or FAN mode

Byte 7 : Humidify setpoint (automatic, based on Auto RH Adjust) - used when humidifying in AUTO or FAN+AUTO mode

Bytes 8-9 : Outside temperature? To get deg F convert the two bytes (2s compliment format) into decimal and divide by 16.

Row 10

1.0  8.0  3   0.0.11  0.1.10.                                            
8.0  1.0  19  0.0.6   0.1.10.0.240.0.207.0.0.0.0.0.0.0.0.0.0.0.0.         

Row 11

1.0  8.0  3   0.0.11  0.1.11.                                             
8.0  1.0  19  0.0.6   0.1.11.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.             

This row has the zone calibration offsets. Each offset is two bytes in 2s complement format (0.5 = +5, 0.0 = 0, 255.255 = -1, 255.251 = -5).

Bytes 0-2: Table & Row

Bytes 3-4 : Zone 1

Bytes 5-6 : Zone 2

etc.

Row 12

1.0  8.0  3   0.0.11  0.1.12.                                            
8.0  1.0  17  0.0.6   0.1.12.1.0.0.0.0.0.0.0.0.0.0.0.0.0.                

Bytes 0-2: Table & Row

Byte 4 : Operating mode: 0 = Heat, 1 = Cool, 2 = Auto, 3 = E Heat, 4 = Off

Byte 6 : The effective mode (0 = Heat, 1 = Cool) when the mode is set to Auto

Byte 9 : Temporary setpoint bitmask. This is a list of zones that are currently using a temporary setpoint. They will keep this temporary setpoint until the next scheduled change, and then automatically resume the pre-programmed schedule. Each bit is set to 0 normally, or 1 if the corresponding zone is using a temporary setpoint. If ALL mode is in effect, the ALL-zone setting (see byte 15) applies to all zones, and the other bits are ignored.

Byte 9
Bit 7 (0x80) Bit 6 (0x40) Bit 5 (0x20) Bit 4 (0x10) Bit 3 (0x08) Bit 2 (0x04) Bit 1 (0x02) Bit 0 (0x01)
Zone 8 Zone 7 Zone 6 Zone 5 Zone 4 Zone 3 Zone 2 Zone 1

Byte 10 : HOLD mode bitmask. Exactly the same semantics as byte 9, but for HOLD mode. When a zone is in HOLD mode, it will ignore all scheduled changes and keep the current setpoint forever. As before, if ALL mode is in effect, the ALL-zone setting applies to all zones, and the other bits are ignored.

Byte 12 : OUT mode bitmask. Exactly the same again, but for OUT mode. When a zone is in OUT mode, the display shows "--" and it uses heating and cooling setpoints of 60 and 85, respectively.

Byte 15 : ALL mode: 0 = Normal, or any zone number (1-8) = ALL mode (that zone's setpoints are used for all zones).

Row 13

1.0  8.0  3   0.0.11  0.1.13.                                            
8.0  1.0  11  0.0.6   0.1.13.0.0.0.0.0.0.0.0.                            

Row 14

1.0  8.0  3   0.0.11  0.1.14.                                             
8.0  1.0  11  0.0.6   0.1.14.2.3.0.0.0.0.0.0.                             

Row 15

1.0  8.0  3   0.0.11  0.1.15.                                             
8.0  1.0  19  0.0.6   0.1.15.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.            

Row 16

8.0  1.0  19  0.0.6   0.1.16.82.77.76.76.76.76.76.76.67.67.68.68.68.68.68.68. 

This row can be used to read and write the cooling/heating setpoints. Note that if you want your setpoint changes to stick, each changed zone must be in either HOLD mode or temporary setpoint mode (see row 12). Otherwise any changes will quickly be reverted back to the programmed setpoint for the active schedule.

Bytes 0-2: Table & Row

Bytes 3-10 : Zone1-Zone8 Current cooling setpoint

Bytes 11-18 : Zone1-Zone8 Current heat setpoint

Row 17

1.0  8.0  3   0.0.11  0.1.17.                                            
8.0  1.0  19  0.0.6   0.1.17.184.3.4.3.1.3.3.2.150.0.0.0.0.0.0.240.      

This row has mostly configuration parameters that are set by the installer. It's fine to change the fan setting (byte 3, bit 2; this is set by the Fan button on the thermostat) but otherwise these are dangerous. These parameters are described in more detail in the installation manual.

Bytes 0-2: Table & Row

Byte 3 : Configuration options

Byte 3
Blower Style Ignore Lat/HPT Cool to Dehumidify Humidify Auto RH Adjust Fan Mode Fan (G) On with W Zoning
0 = Constant Speed, 1 = Variable Speed 0 = Off, 1 = On 0 = Off, 1 = On 0 = When Heating, 1 = Always 0 = Off, 1 = On 0 = Auto, 1 = Always On 0 = Off, 1 = On 0 = Enabled, 1 = Disabled

Byte 4 : Clean Filter Timer (multiply by 400 to get number of hours)

Byte 5 : Aux Heat Lockout (multiply by 5 to get degrees)

Byte 6 : Dual Fuel Crossover (multiply by 5 to get degrees)

Byte 10 : Deadband Setting

Byte 11 : Heat Shutdown

Byte 12-13 : Outdoor Air Offset in 2s complement format (0.5 = +5, 0.0 = 0, 255.255 = -1, 255.251 = -5)

Byte 14 : Fan Operation (0 = Normal, 75 = Auto when Zone 1 SLEEP)

Row 18

1.0  8.0  3   0.0.11  0.1.18.                                             
8.0  1.0  7   0.0.6   0.1.18.3.22.33.47.                                

Bytes 0-2: Table & Row

Byte 3 : Day of Week: Sun=0, Mon=1, Tue=2, Wed=3, Thur=4, Fri=5, Sat=6

Byte 4,5,6 : Hour, Minute, Seconds

Row 19

1.0  8.0  3   0.0.11  0.1.19.                                             
8.0  1.0  19  0.0.6   0.1.19.0.0.0.0.0.0.0.0.0.0.0.0.0.22.0.0.          

Bytes 0-2: Table & Row

Byte 4 : TimeGuard Timer (multiply by 15 to get number of seconds)

Byte 5 : Y1 Cycle Timer (multiply by 15 to get number of seconds)

Byte 6 : Y2 Cycle Timer (multiply by 15 to get number of seconds)

Byte 7 : W1 Cycle Timer (multiply by 15 to get number of seconds)

Byte 8 : W2 Cycle Timer (multiply by 15 to get number of seconds)

Byte 9 : Staging Timer (multiply by 15 to get number of seconds)

Byte 10 : Minimum On Timer (multiply by 15 to get number of seconds)

Row 20

1.0  8.0  3   0.0.11  0.1.20.                                            
8.0  1.0  11  0.0.6   0.1.20.0.0.0.0.0.0.0.0.                           

Row 21

1.0  8.0  3   0.0.11  0.1.21.                                             
8.0  1.0  19  0.0.6   0.1.21.255.243.255.238.0.0.0.0.0.0.0.0.0.0.0.0.    

Row 22

1.0  8.0  3   0.0.11  0.1.22.                                            
8.0  1.0  19  0.0.6   0.1.22.4.64.4.66.0.0.0.0.0.0.0.0.0.0.0.0.           

Row 23

1.0  8.0  3   0.0.11  0.1.23.                                             
8.0  1.0  11  0.0.6   0.1.23.255.255.255.255.255.255.255.255.            

Row 24

1.0  8.0  3   0.0.11  0.1.24.                                             
8.0  1.0  13  0.0.6   0.1.24.67.68.0.0.0.0.0.0.3.149.   

Bytes 0-2: Table & Row

Bytes 3-10 : Current Zone Temperatures (deg F) (Zones 1-8)

Bytes 11,12 : Unknown

Row 25

1.0  8.0  3   0.0.11  0.1.25.                                            
8.0  1.0  5   0.0.6   0.1.25.3.141.                                    

Row 26

1.0  8.0  3   0.0.11  0.1.26.                                             
8.0  1.0  19  0.0.6   0.1.26.4.48.4.48.0.0.0.0.0.0.0.0.0.0.0.0.         

Row 27

1.0  8.0  3   0.0.11  0.1.27.                                            
8.0  1.0  19  0.0.6   0.1.27.4.64.255.246.0.0.0.0.0.0.0.0.0.0.0.0.        

Row 28

1.0  8.0  3   0.0.11  0.1.28.                                           
8.0  1.0  19  0.0.6   0.1.28.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.            

Row 29

1.0  8.0  3   0.0.11  0.1.29.                                            
8.0  1.0  19  0.0.6   0.1.29.4.48.4.48.0.0.0.0.0.0.0.0.0.0.0.0.          

Row 30

1.0  8.0  3   0.0.11  0.1.30.                                            
8.0  1.0  19  0.0.6   0.1.30.5.32.4.208.0.0.0.0.0.0.0.0.0.0.0.0.          

Row 31

1.0  8.0  3   0.0.11  0.1.31.                                             
8.0  1.0  8   0.0.6   0.1.31.0.0.0.0.120.                                 

Bytes 0-2: Table & Row

Byte 7: Auto Changeover Time. Divide by 4 to get number of minutes.

Row 32

1.0  8.0  3   0.0.11  0.1.32.                                             
8.0  1.0  7   0.0.6   0.1.32.128.0.0.128.                                

Row 33

1.0  8.0  3   0.0.11  0.1.33.                                             
8.0  1.0  7   0.0.6   0.1.33.0.3.141.61.                                  

Row 34

1.0  8.0  3   0.0.11  0.1.34.                                             
8.0  1.0  5   0.0.6   0.1.34.55.120.                                      

Table 10

Table 10 holds the schedules on the Zone 1 Master (Address = 1). You can query or change the schedules using this table.

There is one row per zone per day, for a total of 56 rows:

  • Row 1 (0.10.1) : Zone 1 - Sunday
  • Row 2 (0.10.2) : Zone 1 - Monday
  • ...
  • Row 7 (0.10.7) : Zone 1 - Saturday
  • Row 8 (0.10.8) : Zone 2 - Sunday
  • Row 9 (0.10.9) : Zone 2 - Monday
  • ...
  • Row 14 (0.10.14) : Zone 2 - Saturday
  • Row 15 (0.10.15) : Zone 3 - Sunday
  • Row 16 (0.10.16) : Zone 3 - Monday
  • ...
  • Row 21 (0.10.21) : Zone 3 - Saturday

etc. There are four different daily programs, called Wake, Day, Eve, and Sleep. Each row holds the start time and setpoints for each program. The format of each row is the same:

Bytes 0-2: Table & Row

Byte 3 : Wake hour

Byte 4 : Day hour

Byte 5 : Eve hour

Byte 6 : Sleep hour

Byte 7 : Wake minute (use only 0, 15, 30, or 45)

Byte 8 : Day minute

Byte 9 : Eve minute

Byte 10 : Sleep minute

Byte 11 : Wake heat setpoint, or 196 for OUT

Byte 12 : Day heat setpoint, or 188 for OUT

Byte 13 : Eve heat setpoint, or 196 for OUT

Byte 14 : Sleep heat setpoint, or 188 for OUT

Byte 15 : Wake cool setpoint

Byte 16 : Day cool setpoint

Byte 17 : Eve cool setpoint

Byte 18 : Sleep cool setpoint