2.2.117. Thermostat Setpoint Command Class, version 3

The Thermostat Setpoint Command Class is used to configure setpoints for the modes supported by a thermostat.

2.2.117.1. Compatibility Considerations

The Thermostat Setpoint Command Class, version 3 is backwards compatible with Thermostat Setpoint Command Class, version 1-2.

This version introduces:

  • Setpoint capability discovery (allowed value range).

  • New setpoint types.

2.2.117.2. Interoperability Considerations

2.2.117.2.1. Setpoint Type Bitmask Interpretation

It has been found that early implementations of this Command Class specification apply two non-interoperable interpretations of the bit mask advertising the support for specific Setpoint Types.

As a consequence, one may find thermostat products and controller products in the marketplace which implement either of the two bit mask interpretations found in Table 2.539. The notation x.y indicates Bit Mask byte x, bit y.

\requirement{CC:0043.03.05.31.001}{0}

Implementations of Thermostat Setpoint Command Class, version 3 MUST comply with Interpretation A.

Table 2.539 Thermostat Setpoint Types Bit Mask encoding

Support Bit Mask

Interpretation A

Support Bit Mask

Interpretation B

Setpoint Type

Identifier

Description

Version

1.0

1.0

0x00

N/A

-

1.1

1.1

0x01

Heating

1

1.2

1.2

0x02

Cooling

1

1.3

0x03

N/A

-

1.4

0x04

N/A

-

1.5

0x05

N/A

-

1.6

0x06

N/A

-

1.3

1.7

0x07

Furnace

1

1.4

2.0

0x08

Dry Air

1

1.5

2.1

0x09

Moist Air

1

1.6

2.2

0x0A

Auto changeover

1

1.7

2.3

0x0B

Energy Save Heating

2

2.0

2.4

0x0C

Energy Save Cooling

2

2.1

2.5

0x0D

Away Heating

2

2.2

2.6

0x0E

Away Cooling

3

2.3

2.7

0x0F

Full Power

3

\requirement{CC:0043.03.05.31.002}{0}

All other bits are reserved and MUST be set to zero by a sending node. Reserved bits MUST be ignored by a receiving node.

2.2.117.2.2. Float Encoding

Older devices might not support arbitrary combinations of the Precision and Size fields due to memory constraints.

\requirement{CC:0043.03.05.32.001}{0}

In order to allow a controlling node to learn which combinations are supported, a supporting node SHOULD always encode the Thermostat Setpoint Report Command and Thermostat Setpoint Capabilities Report Command using its highest supported Precision and a Size that allows encoding all possible setpoints.

2.2.117.3. Thermostat Setpoint Set Command

This command is used to specify the target value for the specified Setpoint Type at a supporting node.

\requirement{CC:0043.03.01.11.001}{0} \requirement{CC:0043.03.01.13.001}{4}

A supporting node MUST support the same combinations of Precision, Scale and Size field values it sends in the Thermostat Setpoint Report Command or Thermostat Setpoint Capabilities Report Command. It MAY support additional combinations thereof.

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_THERMOSTAT_SETPOINT (0x43)

Command = THERMOSTAT_SETPOINT_SET (0x01)

Reserved

Setpoint Type

Precision

Scale

Size

Value 1

Value N

Reserved

\requirement{CC:0043.03.01.11.002}{0}

This field MUST be set to 0 by a sending node and MUST be ignored by a receiving node.

Setpoint Type (4 bits)

This field is used to specify the setpoint to be set at the receiving node.

\requirement{CC:0043.03.01.11.003}{0}

The value MUST comply with Table 2.540.

Table 2.540 Thermostat Setpoint set::Setpoint Types

Value

Description

CC Version

0x00

N/A

1

0x01

Heating

1

0x02

Cooling

1

0x03

N/A - reserved

-

0x04

N/A - reserved

-

0x05

N/A - reserved

-

0x06

N/A - reserved

-

0x07

Furnace

1

0x08

Dry Air

1

0x09

Moist Air

1

0x0A

Auto Changeover

1

0x0B

Energy Save Heating

2

0x0C

Energy Save Cooling

2

0x0D

Away Heating

2

0x0E

Away Cooling

3

0x0F

Full Power

3

\requirement{CC:0043.03.01.11.004}{0}

Values marked as not applicable (N/A) MUST be ignored by a receiving node. All other values are reserved and MUST NOT be used by a sending node. Reserved values MUST be ignored by a receiving node.

Precision (3 bits)

This field is used to specify how many decimal places are included in the Value field.

\requirement{CC:0043.03.01.11.005}{0}

For example, the decimal value 1025 with precision 2 MUST be interpreted as 10.25.

Scale (2 bits)

This field is used to specify what temperature scale is used for the setpoint value.

\requirement{CC:0043.03.01.11.006}{0}

The field MUST be encoded according to Table 2.541.

Table 2.541 Thermostat Setpoint Set::Scale Encoding

Value

Scale used in Value field

0

Celsius

1

Fahrenheit

\requirement{CC:0043.03.01.11.007}{0}

All other values are reserved and MUST NOT be used by a sending node. Reserved values MUST be ignored by a receiving node.

Size (3 bits)

This field is used to indicate the length in bytes of the Value field.

\requirement{CC:0043.03.01.11.008}{0}

This field MUST be set to 1, 2 or 4.

Value (N bytes)

This field is used to advertise the actual setpoint value to be set at the receiving node.

\requirement{CC:0043.03.01.11.009}{0}

The length of this field MUST be according to the Size field value.

\requirement{CC:0043.03.01.11.00A}{0}

The first byte MUST be the most significant byte.

\requirement{CC:0043.03.01.11.00B}{0}

This field MUST be encoded using signed representation and comply with Table 2.12.

2.2.117.4. Thermostat Setpoint Get Command

This command is used to request the target value for a given setpoint type that is currently configured at a supporting node.

\requirement{CC:0043.03.02.11.001}{0}

The Thermostat Setpoint Report Command MUST be returned in response to this command.

\requirement{CC:0043.03.02.11.002}{0}

This command MUST NOT be issued via multicast addressing.

\requirement{CC:0043.03.02.11.003}{0}

A receiving node MUST NOT return a response if this command is received via multicast addressing. The Z-Wave Multicast frame, the broadcast NodeID and the Multi Channel multi-End Point destination are all considered multicast addressing methods.

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_THERMOSTAT_SETPOINT (0x43)

Command = THERMOSTAT_SETPOINT_GET (0x02)

Reserved

Setpoint Type

Reserved

\requirement{CC:0043.03.02.11.004}{0}

This field MUST be set to 0 by a sending node and MUST be ignored by a receiving node.

Setpoint Type (4 bits)

\requirement{CC:0043.03.02.11.005}{0}

The value MUST comply with Table 2.540.

\requirement{CC:0043.03.02.11.006}{0}

A supporting node receiving a supported Setpoint Type value MUST return the same value in the Thermostat Setpoint Report Command.

\requirement{CC:0043.03.02.11.007}{0}

A supporting node receiving a non-supported Setpoint Type value MUST return the value 0x00 (N/A) in the Thermostat Setpoint Report Command.

2.2.117.5. Thermostat Setpoint Report Command

This command is used to advertise the value of a setpoint type.

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_THERMOSTAT_SETPOINT (0x43)

Command = THERMOSTAT_SETPOINT_REPORT (0x03)

Reserved

Setpoint Type

Precision

Scale

Size

Value 1

Value N

Reserved

\requirement{CC:0043.03.03.11.001}{0}

This field MUST be set to 0 by a sending node and MUST be ignored by a receiving node.

Setpoint Type (4 bits)

This field is used to advertise the setpoint advertised by the sending node.

\requirement{CC:0043.03.03.11.002}{0}

The value MUST comply with Table 2.540.

\requirement{CC:0043.03.03.12.001}{0}

If this field is set to 0x00 (N/A), it is RECOMMENDED to set the Size field to 1 and the Value field to 0.

Precision (3 bits)

This field is used to indicate how many decimal places are included in the Value field.

\requirement{CC:0043.03.03.11.003}{0}

For example, the Value field set to 1025 with the Precision field set to 2 MUST be interpreted as 10.25.

Scale (2 bits)

This field is used to specify what temperature scale is used for the setpoint value.

\requirement{CC:0043.03.03.11.004}{0}

The field MUST be encoded according to Table 2.541.

Size (3 bits)

This field is used to indicate the length in bytes of the Value field.

\requirement{CC:0043.03.03.11.005}{0}

This field MUST be set to 1, 2 or 4.

Value (N bytes)

This field is used to advertise the actual setpoint value set at the sending node.

\requirement{CC:0043.03.03.11.006}{0}

The length of this field MUST be according to the Size field value.

\requirement{CC:0043.03.03.11.007}{0}

The first byte MUST be the most significant byte.

\requirement{CC:0043.03.03.11.008}{0}

This field MUST be encoded using signed representation and comply with Table 2.12.

\requirement{CC:0043.03.03.11.009}{0}

A receiving node MUST ignore values outside the range advertised in the Thermostat Setpoint Capabilities Report Command for the actual Setpoint type.

2.2.117.6. Thermostat Setpoint Supported Get Command

This command is used to query the supported setpoint types.

\requirement{CC:0043.03.04.11.001}{0}

The Thermostat Setpoint Supported Report Command MUST be returned in response to this command.

\requirement{CC:0043.03.04.11.002}{0}

This command MUST NOT be issued via multicast addressing.

\requirement{CC:0043.03.04.11.003}{0}

A receiving node MUST NOT return a response if this command is received via multicast addressing. The Z-Wave Multicast frame, the broadcast NodeID and the Multi Channel multi-End Point destination are all considered multicast addressing methods.

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_THERMOSTAT_SETPOINT (0x43)

Command = THERMOSTAT_SETPOINT_SUPPORTED_GET (0x04)

2.2.117.7. Thermostat Setpoint Supported Report Command

This command is used to advertise the supported setpoint types.

This command is known to cause interoperability issues. Refer to Section 2.2.116.1.

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_THERMOSTAT_SETPOINT (0x43)

Command = THERMOSTAT_SETPOINT_SUPPORTED_REPORT (0x05)

Bit Mask 1

Bit Mask N

Bit Mask (N bytes)

This field advertises the supported Setpoint Types at the sending node.

\requirement{CC:0043.03.05.11.001}{0} \requirement{CC:0043.03.05.11.002}{4}

A supporting node MUST support at least one setpoint type. Setpoint types and their minimum required version are described in Table 2.540. A node MUST NOT support a setpoint type associated to a newer version than the version it supports.

\requirement{CC:0043.03.05.11.003}{0}

This field MUST be encoded according to Table 2.539, interpretation A:

  • Bit 0 in Bit Mask 1 represents Mode = 0x00 (Off).

  • Bit 1 in Bit Mask 1 represents Mode = 0x01 (Heat).

  • Bit 2 in Bit Mask 1 represents Mode = 0x02 (Cooling).

  • Bit 3 in Bit Mask 1 represents Mode = 0x07 (Furnace).

\requirement{CC:0043.03.05.11.004}{0}

If a Setpoint Type is supported, the corresponding bit MUST be set to ‘1’, otherwise to ‘0’.

\requirement{CC:0043.03.05.11.005}{0}

This length of this field MUST be set to the minimum amount of bytes which allows advertising all supported Setpoint Types.

2.2.117.8. Thermostat Setpoint Capabilities Get Command

This command is used request the supported setpoint value range for an actual Setpoint Type.

\requirement{CC:0043.03.09.11.001}{0}

The Thermostat Setpoint Capabilities Report Command MUST be returned in response to this command.

\requirement{CC:0043.03.09.11.002}{0}

This command MUST NOT be issued via multicast addressing.

\requirement{CC:0043.03.09.11.003}{0}

A receiving node MUST NOT return a response if this command is received via multicast addressing. The Z-Wave Multicast frame, the broadcast NodeID and the Multi Channel multi-End Point destination are all considered multicast addressing methods.

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_THERMOSTAT_SETPOINT (0x43)

Command = THERMOSTAT_SETPOINT_CAPABILITIES_GET (0x09)

Reserved

Setpoint Type

Reserved

\requirement{CC:0043.03.09.11.004}{0}

This field MUST be set to 0 by a sending node and MUST be ignored by a receiving node.

Setpoint Type (4 bits)

This field is used to specify which setpoint is requested.

\requirement{CC:0043.03.09.11.005}{0}

The value MUST comply with Table 2.540.

\requirement{CC:0043.03.09.11.006}{0}

A supporting node receiving a supported Setpoint Type value MUST be return the same value in the Thermostat Setpoint Capabilities Report Command.

\requirement{CC:0043.03.09.11.007}{0}

A supporting node receiving a non-supported Setpoint Type value MUST return the value 0x00 (N/A) in the Thermostat Setpoint Capabilities Report Command.

2.2.117.9. Thermostat Setpoint Capabilities Report Command

This command is used advertise the supported setpoint value range for an actual Setpoint Type.

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_THERMOSTAT_SETPOINT (0x43)

Command = THERMOSTAT_SETPOINT_CAPABILITIES_REPORT (0x0A)

Reserved

Setpoint Type

Min Value Precision

Min Value Scale

Min Value Size

Min Value 1

Min Value N

Max Value Precision

Max Value Scale

Max Value Size

Max Value 1

Max Value N

Setpoint Type (4 bits)

This field is used to advertise the setpoint advertised by the sending node.

\requirement{CC:0043.03.0A.11.001}{0}

The value MUST comply with Table 2.540.

\requirement{CC:0043.03.0A.12.001}{0}

If this field is set to 0x00 (N/A), it is RECOMMENDED to set the Min Value Size and Max Value Size fields to 1 and the Min Value and Max Value fields to 0.

Min Value Precision (3 bits)

This field is used to indicate how many decimal places are included in the Min Value field.

\requirement{CC:0043.03.0A.11.002}{0}

For example, the Min Value field set to 1025 with the Min Value Precision field set to 2 MUST be interpreted as 10.25.

Min Value Scale (2 bits)

This field is used to specify what temperature scale is used for the setpoint Min Value field.

\requirement{CC:0043.03.0A.11.003}{0}

The field MUST be encoded according to Table 2.541.

Min Value Size (3 bits)

This field is used to indicate the length in bytes of the Min Value field.

\requirement{CC:0043.03.0A.11.004}{0}

This field MUST be set to 1, 2 or 4.

Min Value (N bytes)

This field is used to advertise the minimum value that is supported for the actual setpoint at the sending node.

\requirement{CC:0043.03.0A.11.005}{0}

The length of this field MUST be according to the Min Value Size field value.

\requirement{CC:0043.03.0A.11.006}{0}

The first byte MUST be the most significant byte.

\requirement{CC:0043.03.0A.11.007}{0}

This field MUST be encoded using signed representation and comply with Table 2.12.

Max Value Precision (3 bits)

This field is used to indicate how many decimal places are included in the Max Value field.

\requirement{CC:0043.03.0A.11.008}{0}

For example, the Max Value field set to 1025 with the Max Value Precision field set to 2 MUST be interpreted as 10.25.

\requirement{CC:0043.03.0A.11.009}{0}

This field MUST be set to the same value as the Min Value Precision field.

Max Value Scale (2 bits)

This field is used to specify what temperature scale is used for the setpoint Max Value field.

\requirement{CC:0043.03.0A.11.00A}{0}

The field MUST be encoded according to Table 2.541 and this field MUST be set to the same value as the Min Value Scale field.

\requirement{CC:0043.03.0A.11.00B}{0}

This field MUST be set to the same value as the Min Value Scale field.

Max Value Size (3 bits)

This field is used to indicate the length in bytes of the Max Value field.

\requirement{CC:0043.03.0A.11.00C}{0}

This field MUST be set to the same value as the Min Value Size field.

Max Value (N bytes)

This field is used to advertise the maximum value that is supported for the actual setpoint at the sending node.

\requirement{CC:0043.03.0A.11.00D}{0}

The length of this field MUST be according to the Max Value Size field value.

\requirement{CC:0043.03.0A.11.00E}{0}

The first byte MUST be the most significant byte.

\requirement{CC:0043.03.0A.11.00F}{0}

This field MUST be encoded using signed representation and comply with Table 2.12.

\requirement{CC:0043.03.0A.11.010}{0}

This field MUST be set to a value greater than the Min Value field.