2.2.116. Thermostat Setpoint Command Class, version 1-2

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

2.2.116.1. Interoperability Considerations

2.2.116.1.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.01.05.31.001}{0}

Implementations of Thermostat Setpoint Command Class, version 1-2 MUST comply with Interpretation A.

2.2.116.1.2. Float Encoding

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

\requirement{CC:0043.01.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 using its highest supported Precision and a Size that allows encoding all possible setpoints.

2.2.116.2. 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.01.01.11.001}{0} \requirement{CC:0043.01.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 Commands. 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.01.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.01.01.11.003}{0}

The value MUST comply with Table 2.540.

\requirement{CC:0043.01.01.11.004}{0}

If a non-supported setpoint type is specified, a receiving node MUST ignore the command.

Precision (3 bits)

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

\requirement{CC:0043.01.01.11.005}{0}

This MUST be interpreted as the power of ten to be used as a divisor of the Value field.

For example, the Value field set to 1025 with the Precision field set to 2 will 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.01.01.11.006}{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.01.01.11.007}{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.01.01.11.008}{0}

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

\requirement{CC:0043.01.01.11.009}{0}

The first byte MUST be the most significant byte.

\requirement{CC:0043.01.01.11.00A}{0}

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

2.2.116.3. 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.01.02.11.001}{0}

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

\requirement{CC:0043.01.02.11.002}{0}

This command MUST NOT be issued via multicast addressing.

\requirement{CC:0043.01.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.01.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)

This field is used to specify which setpoint is requested.

\requirement{CC:0043.01.02.11.005}{0}

The value MUST comply with Table 2.540.

\requirement{CC:0043.01.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.01.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.116.4. Thermostat Setpoint Report Command

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

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.01.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.01.03.11.002}{0}

The value MUST comply with Table 2.540.

\requirement{CC:0043.01.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.01.03.11.003}{0}

This MUST be interpreted as the power of ten to be used as a divisor of the Value field.

For example, the Value field set to 1025 with the Precision field set to 2 will 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.01.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.01.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.01.03.11.006}{0}

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

\requirement{CC:0043.01.03.11.007}{0}

The first byte MUST be the most significant byte.

\requirement{CC:0043.01.03.11.008}{0}

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

2.2.116.5. Thermostat Setpoint Supported Get Command

This command is used to query the supported setpoint types.

\requirement{CC:0043.01.04.11.001}{0}

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

\requirement{CC:0043.01.04.11.002}{0}

This command MUST NOT be issued via multicast addressing.

\requirement{CC:0043.01.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.116.6. 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.01.05.11.001}{0} \requirement{CC:0043.01.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.01.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.01.05.11.004}{0}

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

\requirement{CC:0043.01.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.