5.2.7. Node Provisioning Command Class, version 1

The Node Provisioning Command Class is used to manage a list of unique nodes (Node Provisioning List) in a Smart Start enabled controller or gateway.

5.2.7.1. Terminology

Smart start allows a controller to include new nodes in a network (or keep them out) without user interaction.

A Smart Start enabled controller or gateway maintains a Node Provisioning List or Provisioning List (PL). The Provisioning List is a list of unique nodes and their additional associated meta data necessary for performing their network inclusion and security bootstrapping.

A Provisioning List entry represents a node and its associated data. Provisioning List entries may also be used for ignoring nodes.

A Z/IP Client or controller can read and edit the Provisioning List entries of a Z/IP Gateway or controller using this Command Class.

5.2.7.2. Compatibility considerations

\requirement{CC:0078.01.00.22.001}{0}

This Command Class MAY be carried in Z/IP Packets or in Z-Wave frames. However, this Command Class SHOULD only be used in Z/IP Packets.

\requirement{CC:0078.01.00.21.001}{0}

A node supporting this Command Class MUST support at least 232 entries in its Node Provisioning List.

5.2.7.3. Security considerations

This Command Class allows a controlling node to include new nodes in the Z-Wave network and grant them all the security keys.

\requirement{CC:0078.01.00.41.001}{0}

A node supporting this Command Class MUST NOT support it in a Z-Wave network if its highest Security Class is lower than S2 Access Control.

5.2.7.4. Node Provisioning Set Command

This command is used to create or update an entry in the node provisioning list of a supporting node.

Table 5.134 Node Provisioning Set Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_NODE_PROVISIONING (0x78)

Command = NODE_PROVISIONING_SET (0x01)

Seq No

Reserved

DSK Length

DSK 1

DSK N

Meta Data Extension 1 (Optional)

Meta Data Extension M (Optional)

Seq No (8 bits) Refer to Sequence number management.

Reserved

\requirement{CC:0078.01.01.11.001}{0}

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

DSK Length (5 bits)

\requirement{CC:0078.01.01.11.002}{0}

This field MUST indicate the length of the DSK field in bytes.

\requirement{CC:0078.01.01.11.003}{0}

This field MUST be set to 16.

DSK (N bytes)

This field is used to advertise the DSK for the entry being added or updated.

\requirement{CC:0078.01.01.11.004}{0}

A receiving node MUST add a new entry in the provisioning list if it does not have any entry with the advertised DSK value.

\requirement{CC:0078.01.01.11.00D}{0}

A receiving node MUST ignore a command attempting to create a new entry if the Provisioning List is full.

\requirement{CC:0078.01.01.11.005}{0}

A receiving node MUST update the corresponding entry in the provisioning list if it already has an entry with the advertised DSK value.

\requirement{CC:0078.01.01.11.006}{0}

The length of this field (in bytes) MUST be according to the DSK Length field value.

Meta Data Extension (M bytes)

This field is used to carry additional metadata associated to the node.

\requirement{CC:0078.01.01.13.001}{0}

This field MAY contain zero, one or several extensions.

\requirement{CC:0078.01.01.11.007}{0}

Each extension MUST comply with Meta Data Extension Format and [29].

\requirement{CC:0078.01.01.11.009}{0}

If the Bootstrapping mode Type (0x36) is omitted from this command, the Bootstrapping mode value 1 (Smart Start Mode) MUST be assumed by the receiving node when creating a new entry.

\requirement{CC:0078.01.01.11.00B}{0}

If the SmartStart Inclusion Setting Type (0x34) is omitted from this command, the Inclusion setting value 0 (Pending) MUST be assumed by the receiving node when creating a new entry that has a SmartStart Bootstrapping mode.

\requirement{CC:0078.01.01.11.00A}{0}

The Network Status Type (0x37) MUST NOT be carried in this command. The Network Status Type (0x37) MUST be ignored if received in this command.

5.2.7.5. Node Provisioning Delete Command

This command is used to delete one or all entries in the node provisioning list of a supporting node. Already included nodes will stay in the Z-Wave network even if no more corresponding node provisioning list entry is kept by the controller.

Table 5.135 Node Provisioning Delete Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_NODE_PROVISIONING (0x78)

Command = NODE_PROVISIONING_DELETE (0x02)

Seq No

Reserved

DSK Length

DSK 1

DSK N

Seq No (8 bits)

Refer to Sequence number management.

DSK Length (5 bits)

\requirement{CC:0078.01.02.11.001}{0}

This field MUST indicate the length of the DSK field in bytes.

\requirement{CC:0078.01.02.11.002}{0}

This field MUST be set to 0 or 16.

\requirement{CC:0078.01.02.11.003}{0}

The value 0 MUST indicate that the receiving node MUST delete all entries in its Node Provisioning List.

\requirement{CC:0078.01.02.11.004}{0}

The value 16 MUST indicate that the receiving node MUST delete the entry in its Node Provisioning List that match the advertised value in the DSK field.

DSK (N bytes)

This field is used to advertise the DSK for the entry being deleted.

\requirement{CC:0078.01.02.11.005}{0}

A receiving node MUST delete the corresponding entry from the Node Provisioning List if it has an entry with the advertised DSK value.

\requirement{CC:0078.01.02.11.006}{0}

A receiving node MUST ignore this command if it has no entry with the advertised DSK value.

\requirement{CC:0078.01.02.11.007}{0}

The length of this field (in bytes) MUST be according to the DSK Length field value.

This field MUST be omitted if the DSK Length field is set to 0.

5.2.7.6. Node Provisioning Get Command

This command is used to request the metadata information associated to an entry in the node Provisioning List of the receiving node.

\requirement{CC:0078.01.05.11.001}{0}

The Node Provisioning Report Command MUST be returned in response to this command.

\requirement{CC:0078.01.05.11.002}{0}

This command MUST NOT be issued via multicast addressing.

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

Table 5.136 Node Provisioning Get Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_NODE_PROVISIONING (0x78)

Command = NODE_PROVISIONING_GET (0x05)

Seq No

Reserved

DSK Length

DSK 1

DSK N

Seq No. (8 bits)

Refer to Sequence number management.

DSK Length (5 bits)

\requirement{CC:0078.01.05.11.004}{0}

This field MUST indicate the length of the DSK field in bytes.

\requirement{CC:0078.01.05.11.005}{0}

This field MUST be set to 16.

DSK (N bytes)

This field is used to advertise the DSK for the entry being requested.

\requirement{CC:0078.01.05.11.006}{0}

A receiving node MUST return the corresponding DSK entry if it has an entry matching the requested DSK in its Provisioning List.

\requirement{CC:0078.01.05.11.007}{0}

A receiving node MUST return a report containing no DSK (DSK Length set to 0) if the requested DSK value is not in its Provisioning List.

\requirement{CC:0078.01.05.11.008}{0}

The length of this field (in bytes) MUST be according to the DSK Length field value.

5.2.7.7. Node Provisioning Report Command

This command is used to advertise the contents of an entry in the node Provisioning List of the sending node.

Table 5.137 Node Provisioning Report Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_NODE_PROVISIONING (0x78)

Command = NODE_PROVISIONING_REPORT (0x06)

Seq No

Reserved

DSK Length

DSK 1 (Optional)

DSK N (Optional)

Meta Data Extension 1 (Optional)

Meta Data Extension M (Optional)

Seq No (8 bits) Refer to Sequence number management.

DSK Length (5 bits)

\requirement{CC:0078.01.06.11.001}{0}

This field MUST indicate the length of the DSK field in bytes.

\requirement{CC:0078.01.06.11.002}{0}

This field MUST be set to 0 or 16

\requirement{CC:0078.01.06.11.003}{0}

The value 0 MUST indicate that the requested DSK is not present in the Provisioning List.

DSK (N bytes)

\requirement{CC:0078.01.06.11.004}{0}

This field is used to advertise the DSK for the Provisioning List entry being advertised.

\requirement{CC:0078.01.06.11.005}{0}

The length of this field (in bytes) MUST be according to the DSK Length field value. This field MUST be omitted if the DSK Length field is set to 0.

Meta Data Extension (M bytes)

This field is used to carry additional metadata associated to the Provisioning List entry.

\requirement{CC:0078.01.06.13.001}{0}

This field MAY contain several extensions.

\requirement{CC:0078.01.06.11.006}{0}

Each extension Type, Length and Value MUST comply with Meta Data Extension Format and [29].

\requirement{CC:0078.01.06.13.002}{0}

A supporting node MAY set the critical flag to 0 even when advertising critical extensions.

\requirement{CC:0078.01.06.11.007}{0}

If the DSK Length field is set to 0, this field MUST be omitted.

If the DSK Length field is not set to 0:

\requirement{CC:0078.01.06.11.008}{0}

  • A sending node MUST advertise the SmartStart Inclusion Setting extension (type 0x34)

\requirement{CC:0078.01.06.11.009}{0}

  • A sending node MUST advertise the Bootstrapping mode extension (type 0x36)

\requirement{CC:0078.01.06.11.00B}{0}

  • A sending node MUST advertise the Network Status extension (type 0x37)

\requirement{CC:0078.01.06.11.00A}{0}

  • A sending node MUST advertise all other extension data kept in the Provisioning List

5.2.7.8. Node Provisioning List Iteration Get Command

This command is used to read the entire the provisioning list of a supporting node.

\requirement{CC:0078.01.03.11.001}{0}

The Node Provisioning List Iteration Report Command MUST be returned in response to this command unless it is to be ignored.

\requirement{CC:0078.01.03.11.002}{0}

This command MUST NOT be issued via multicast addressing.

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

\requirement{CC:0078.01.03.11.004}{0}

A sending node MUST follow the frame flow in Section 5.2.7.11.1.

Table 5.138 Node Provisioning List Iteration Get Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_NODE_PROVISIONING (0x78)

Command = NODE_PROVISIONING_LIST_ITERATION_GET (0x03)

Seq No

Remaining Counter

Seq No (8 bits) Refer to Sequence number management.

Remaining Counter (8 bits)

\requirement{CC:0078.01.03.11.005}{4}

This field is used to iterate over the Provisioning List. The field indicates the remaining amount of entries in the Provisioning List. This field MUST be in the range 0x01..0xFF.

\requirement{CC:0078.01.03.11.006}{0}

This field MUST be set to 0xFF to start a new iteration. A supporting node MUST return the first entry and the actual amount of remaining entries in the returned report, i.e. If the Provisioning list has 3 elements the first response Remaining Count field MUST be set to 2.

\requirement{CC:0078.01.03.11.007}{0}

A sending node MUST subsequently set this field to the returned value ”Remaining Count” value received in the returned Report if the ”Remaining Count” value is higher than 0x00. A supporting node MUST ignore this field if it is not set to the expected next iteration value.

\requirement{CC:0078.01.03.11.008}{0}

This command MUST be ignored by a supporting node if this field is set to a value lower than 0xFF and no iteration has been started.

Refer to Section 5.2.7.11.1.

5.2.7.9. Node Provisioning List Iteration Report Command

This command is used to advertise the contents of an entry in the Provisioning List of the sending node.

Table 5.139 Node Provisioning List Iteration Report Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_NODE_PROVISIONING (0x78)

Command = NODE_PROVISIONING_LIST_ITERATION_REPORT (0x04)

Seq No

Remaining Count

Reserved

DSK Length N

DSK 1 (Optional)

DSK N (Optional)

Meta Data Extension 1 (Optional)

Meta Data Extension M (Optional)

Seq No (8 bits) Refer to Sequence number management.

Remaining Count (8 bits)

\requirement{CC:0078.01.04.11.001}{4}

The field MUST indicate the remaining amount of entries in the Provisioning List iteration. This field MUST be in the range 0x00..0xFE.

DSK Length (5 bits)

\requirement{CC:0078.01.04.11.002}{0}

This field MUST indicate the length of the DSK field in bytes.

\requirement{CC:0078.01.04.11.003}{0}

This field MUST be set to 0 or 16.

\requirement{CC:0078.01.04.11.004}{0}

The value 0 MUST indicate that the Provisioning List of the sending node is empty or the Provisioning List Entry has been deleted after the start of the iteration.

\requirement{CC:0078.01.04.11.005}{0}

The value 16 MUST indicate that the sending node advertises the DSK of a Provisioning List entry.

DSK (N bytes)

This field is used to advertise the DSK for the Provisioning List entry being advertised.

\requirement{CC:0078.01.04.11.006}{0}

The length of this field (in bytes) MUST be according to the DSK Length field value. This field MUST be omitted if the DSK Length field is set to 0.

Meta Data Extension (M bytes)

This field is used to carry additional metadata associated to the Provisioning List entry.

\requirement{CC:0078.01.04.13.001}{0}

This field MAY contain several extensions.

\requirement{CC:0078.01.04.11.007}{0}

Each extension Type, Length and Value MUST comply with Meta Data Extension Format and [29].

\requirement{CC:0078.01.04.13.002}{0}

A supporting node MAY set the critical flag to 0 even when advertising critical extensions.

\requirement{CC:0078.01.04.11.008}{0}

If the DSK Length field is set to 0, this field MUST be omitted.

If the DSK Length field is not set to 0:

\requirement{CC:0078.01.04.11.009}{0}

  • A sending node MUST advertise the SmartStart Inclusion Setting extension (type 0x34)

\requirement{CC:0078.01.04.11.00A}{0}

  • A sending node MUST advertise the Bootstrapping mode extension (type 0x36)

\requirement{CC:0078.01.04.11.00C}{0}

  • A sending node MUST advertise the Network Status extension (type 0x37)

\requirement{CC:0078.01.04.11.00B}{0}

  • A sending node MUST advertise all other extension data kept in the Provisioning List

5.2.7.10. Meta Data Extension Format

\requirement{CC:0078.01.00.11.001}{0}

Each Meta Data extension MUST be parsed according to the following format:

Table 5.140 Meta Data Extension Format

7

6

5

4

3

2

1

0

Meta Data Type

critical

Length

Value 1 (Optional)

Value L (Optional)

Meta Data Type (7 bits)

This field is used to advertise the type of the data contained in the corresponding extension.

\requirement{CC:0078.01.00.11.002}{0}

For the list of defined valid extensions, refer to [29]. Values not defined in [29] are reserved and MUST NOT be used by a sending node.

Critical (1 bit)

This field is used to advertise the criticality of the extension.

\requirement{CC:0078.01.00.11.003}{0}

A supporting node MUST discard and ignore the entire command if this flag is set to ‘1’ and the Meta Data Type field advertises a value that the node does not support.

\requirement{CC:0078.01.00.12.001}{0}

A controlling node which controls only (i.e. does not support this Command Class) SHOULD keep the Provisioning List entry in its record even if this flag is set to ‘1’ and the node does not know what the extension means.

\requirement{CC:0078.01.00.11.004}{4}

If this flag is set to ‘0’ and the Meta Data Type field advertises a value that the receiving node does not support, the actual extension MUST be ignored and left out the provisioning list entry.

\requirement{CC:0078.01.00.11.005}{0}

In this case, a receiving node MUST continue processing of the encapsulation command after the discarded extension.

Length (8 bits)

\requirement{CC:0078.01.00.11.006}{0}

This field MUST indicate the length of the corresponding Value field in bytes.

Value (L bytes)

\requirement{CC:0078.01.00.11.007}{0}

This field MUST indicate the value of the Meta Data type being advertised in the extension.

\requirement{CC:0078.01.00.11.008}{4}

The length of this field (in bytes) MUST be according to the corresponding Length field value .This field MUST be omitted if the corresponding Length field is set to 0.

\requirement{CC:0078.01.00.11.009}{0}

The encoding of this field MUST be interpreted with the Meta Data Type field as defined in [29].

5.2.7.11. Usage and Frame Flows

5.2.7.11.1. Z/IP Client requesting the entire Node Provisioning list.

The frame flow for Z/IP client requesting the entire Provisioning List of a supporting node is shown in Figure 5.28.

Reading the entire Node Provisioning List

Figure 5.28 Reading the entire Node Provisioning List