2.2.89. Schedule Command Class, version 2¶
The Schedule Command Class version 2 allows scheduling the execution of commands for a given duration in a supporting node. It is a generic command class that may be used to schedule commands from any other Command Class.
2.2.89.1. Compatibility Considerations¶
The Schedule Command Class, version 2 is backwards compatible with version 1.
\requirement{CC:0053.02.00.21.001}{0}
A node supporting the Schedule Command Class, version 2 MUST also support version 1.
Schedule Command Class, version 2 introduces the following:
Schedule ID Blocks
Clarification on using Schedule Command Class with Security
All commands or fields not described in this version remain unchanged from version 1.
2.2.89.1.1. Schedule ID Blocks¶
In Schedule Command Class version 1, all Schedule IDs have to support the same Start Time Options, Override Types and supported commands.
The Schedule ID Blocks allows a node to implement several Schedule ID pools sharing the same scheduling functionalities.
\requirement{CC:0053.02.00.21.002}{0}
Each Schedule ID Block MUST have its own range of Schedule ID’s. The ID for each Block MUST be in the range 1..[Number of Supported Schedule IDs].
\requirement{CC:0053.02.00.21.003}{0}
Schedule ID Block = 1 is the default Block. A version 1 node MUST be assumed to be using Schedule ID block 1.
2.2.89.1.2. Schedule Command Class with Security¶
The Schedule Command Class may be implemented by secure devices. Depending on the type of device, a given Command Class may be supported only via secure communication or via secure as well as unsecure communication.
The following command class categories may be considered:
Always unsecure:
Examples of command classes which are always supported via unsecure communication - as well as via secure communication if the device is securely included (e.g Z-Wave Plus Info Command Class).
Migrate to secure:
Examples of command classes which are supported via unsecure communication if the device is not securely included - but only via secure communication if the device is securely included. (e.g. Multilevel Switch or Association Command Class)
Secure only:
Examples of command classes which are supported only via secure communication. (e.g. Door Lock Command Class)
\requirement{CC:0053.02.00.21.004}{0}
To reflect the above mentioned dynamic support scenarios, a device MUST advertise the supported Command Classes for scheduling in a way that matches the current secure/non-secure supported Command Class lists found in the NIF and S0/S2 Commands Supported Report Commands.
Clarification is added to the Schedule Supported Report Command and Schedule Set Command for proper reporting and configuration of unsecure and secure command classes scheduling.
\requirement{CC:0053.02.00.22.001}{0}
It is RECOMMENDED to support the Schedule Command Class only at the highest security level in order to avoid dynamic listing.
2.2.89.2. Schedule Supported Get Command¶
This command is used to query the properties of a node.
\requirement{CC:0053.02.01.11.001}{0}
The Schedule Supported Report Command MUST be returned in response to this command.
\requirement{CC:0053.02.01.11.002}{0}
If the receiving node supports S0 or S2 Command Class and this command is issued via non-secure communication, the receiving node MUST advertise Command Classes that can be scheduled but also supported at the received security level.
\requirement{CC:0053.02.01.11.003}{0}
This command MUST NOT be issued via multicast addressing.
\requirement{CC:0053.02.01.11.004}{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_SCHEDULE (0x53) |
|||||||
Command = SCHEDULE_SUPPORTED_GET (0x01) |
|||||||
Schedule ID Block |
|||||||
Schedule ID Block (1 byte)
This field is used to request a particular Schedule ID Block.
\requirement{CC:0053.02.01.11.005}{0}
If this field is set to 0x00, the receiving node MUST return the default Schedule ID Block (ID = 1).
\requirement{CC:0053.02.01.11.006}{0}
A node receiving a version 1 Schedule Supported Get Command (without the Schedule ID Block field) MUST return a response for the default Schedule ID Block (ID = 1).
\requirement{CC:0053.02.01.12.001}{0}
A node receiving a non-supported Schedule ID Block SHOULD return a report for the default Schedule ID Block.
2.2.89.3. Schedule Supported Report Command¶
This command is used to advertise the scheduling functionalities supported by a node for a given Schedule ID Block.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|---|---|---|---|---|---|---|---|
Command Class = COMMAND_CLASS_SCHEDULE (0x53) |
|||||||
Command = SCHEDULE_SUPPORTED_REPORT (0x02) |
|||||||
Number of Supported Schedule IDs |
|||||||
Support Enable/Disable |
Fallback Support |
Start Time Support |
|||||
Number of Supported CC |
|||||||
Supported CC 1 |
|||||||
Reserved |
Supported Command 1 |
||||||
… |
|||||||
Supported CC N |
|||||||
Reserved |
Supported Command N |
||||||
Override Support |
Supported Override Types |
||||||
Schedule ID Block |
|||||||
Number of Supported Schedule Blocks |
|||||||
Fields not described below remain unchanged from version 1.
All fields contained in this command advertise the scheduling supported functionalities for the actual Schedule ID Block.
Schedule ID Block (8 bits)
This field is used to indicate the actual Schedule ID Block for which the supported scheduling functionalities are advertised.
\requirement{CC:0053.02.02.12.001}{0}
The advertised supported functionalities SHOULD be different for every Schedule ID Block.
Number of Schedule ID Blocks (8 bits)
\requirement{CC:0053.02.02.11.001}{0}
This field MUST advertise the total number of Schedule ID blocks supported by the node.
\requirement{CC:0053.02.02.11.002}{0}
This field MUST be in the range 1..255.
\requirement{CC:0053.02.02.11.003}{0}
The implemented Schedule ID Blocks MUST be in the range 1..[Number of Supported Schedule ID Blocks]. i.e. a node supporting 10 Schedules ID Blocks MUST accept Schedule ID Blocks values in the range 1..10.
2.2.89.4. Schedule Set Command¶
This command is used to create a new schedule or modify an existing schedule.
\requirement{CC:0053.02.03.11.001}{0}
This command MUST enable the schedule if a new schedule is created.
\requirement{CC:0053.02.03.11.002}{0}
This command MUST NOT change the enabled/disabled state of existing schedules
\requirement{CC:0053.02.03.11.003}{0}
If the receiving node supports S0 or S2 Command Class, it MUST NOT process the schedule creation if any of the scheduled command classes is not supported at the security level of the received Schedule Set Command.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|---|---|---|---|---|---|---|---|
Command Class = COMMAND_CLASS_SCHEDULE (0x53) |
|||||||
Command = COMMAND_SCHEDULE_SET (0x03) |
|||||||
Schedule ID |
|||||||
Schedule ID Block |
|||||||
Start Year |
|||||||
Reserved |
Start Month |
||||||
Reserved |
Start Day of Month |
||||||
Reserved |
Start Weekday |
||||||
Duration Type |
Start Hour |
||||||
Reserved |
Start Minute |
||||||
Duration Byte 1 MSB |
|||||||
Duration Byte 2 LSB |
|||||||
Reports to Follow |
|||||||
Number of Cmd to Follow |
|||||||
Cmd Length 1 |
|||||||
Cmd Byte 1 - 1 |
|||||||
… |
|||||||
Cmd Byte 1 - N |
|||||||
… |
|||||||
Cmd Length P |
|||||||
Cmd Byte P - 1 |
|||||||
… |
|||||||
Cmd Byte P - N |
|||||||
Fields not described below remain unchanged from version 1.
Schedule ID Block (8 bits)
This field is used to specify the Schedule ID Block in which the specified Schedule ID is being set.
\requirement{CC:0053.02.03.11.004}{0}
A node receiving a version 1 Schedule Set Command (with the Schedule ID Block field set to 0x00) MUST assume the default Schedule ID Block (ID = 0x01).
2.2.89.5. Schedule Get Command¶
This command is used to request the configuration for a specific schedule ID.
\requirement{CC:0053.02.04.11.001}{0}
The Schedule Report Command MUST be returned in response to this command.
\requirement{CC:0053.02.04.11.002}{0}
This command MUST NOT be issued via multicast addressing.
\requirement{CC:0053.02.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_SCHEDULE (0x53) |
|||||||
Command = COMMAND_SCHEDULE_GET (0x04) |
|||||||
Schedule ID |
|||||||
Schedule ID Block |
|||||||
Fields not described below remain unchanged from version 1.
Schedule ID Block (8 bits)
This field is used to specify the requested Schedule ID Block.
\requirement{CC:0053.02.04.11.004}{0}
A node receiving a version 1 Schedule Get Command (without the Schedule ID Block field) MUST return a response for the default Schedule ID Block (ID = 1).
2.2.89.6. Schedule Report Command¶
This command is used to advertise the configuration for a specific schedule.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|---|---|---|---|---|---|---|---|
Command Class = COMMAND_CLASS_SCHEDULE (0x53) |
|||||||
Command = COMMAND_SCHEDULE_REPORT (0x05) |
|||||||
Schedule ID Block |
|||||||
Reserved |
|||||||
Start Year |
|||||||
Active_ID |
Start Month |
||||||
Reserved |
Start Day of Month |
||||||
Reserved |
Start Weekday |
||||||
Duration Type |
Start Hour |
||||||
Reserved |
Start Minute |
||||||
Duration Byte 1 |
|||||||
Duration Byte 2 |
|||||||
Report to Follow |
|||||||
Number of Cmd to Follow |
|||||||
Cmd Length 1 |
|||||||
Cmd Byte 1 - 1 |
|||||||
… |
|||||||
Cmd Byte 1 - N |
|||||||
… |
|||||||
Cmd Length P |
|||||||
Cmd Byte P - 1 |
|||||||
… |
|||||||
Cmd Byte P - N |
|||||||
Fields not described below remain unchanged from version 1.
Schedule ID Block (8 bits)
This field is used to specify the advertised Schedule ID Block.
2.2.89.7. Schedule Remove Command¶
This command is used to request the removal of one or all Schedules in a device.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|---|---|---|---|---|---|---|---|
Command Class = COMMAND_CLASS_SCHEDULE (0x53) |
|||||||
Command = SCHEDULE_REMOVE (0x06) |
|||||||
Schedule ID |
|||||||
Schedule ID Block |
|||||||
Schedule ID (8 bits)
This field is used to indicate the schedule that is to be removed.
\requirement{CC:0053.02.06.11.001}{0}
If this field is set to 0x00, all schedules within the Schedule ID Block MUST be removed.
\requirement{CC:0053.02.06.11.002}{0}
If this field is set to 0xFE, the Fall Back Schedule MUST be removed (if defined for the Schedule ID Block).
\requirement{CC:0053.02.06.11.003}{0}
If this field is set to 0xFF, the Override Schedule MUST be removed (if defined for the Schedule ID Block).
\requirement{CC:0053.02.06.11.004}{0}
If this field is in the range 0x01..[Number of supported Schedules], the receiving node MUST remove the corresponding schedule in the Schedule ID Block.
Schedule ID Block (8 bits)
This field is used to indicate the Schedule ID Block in which a schedule is being removed.
\requirement{CC:0053.02.06.11.005}{0}
A node receiving a version 1 Schedule Set Command (without the Schedule ID Block field) MUST assume the default Schedule ID Block (ID = 0x01).
\requirement{CC:0053.02.06.11.006}{0}
A node receiving this command with Schedule ID = 0x00 and Schedule ID Block = 0x00 MUST remove all Schedule IDs in all Schedule ID Blocks
\requirement{CC:0053.02.06.11.007}{0}
A node receiving this command with Schedule ID = 0x00 and Schedule ID Block ≠ 0x00 MUST remove all Schedule IDs from the specified Schedule ID Block.
\requirement{CC:0053.02.06.11.008}{0}
A node receiving this command with Schedule ID ≠ 0x00 and Schedule ID Block = 0x00 MUST ignore the command
2.2.89.8. Schedule State Set Command¶
This command is used to enable or disable one or more schedules.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|---|---|---|---|---|---|---|---|
Command Class = COMMAND_CLASS_SCHEDULE (0x53) |
|||||||
Command = SCHEDULE_STATE_SET (0x07) |
|||||||
Schedule ID |
|||||||
Schedule State |
|||||||
Schedule ID Block |
|||||||
Fields not described below remain unchanged from version 1.
Schedule ID Block (8 bits)
This field is used to specify the Schedule ID Block in which one or more schedule are being enabled or disabled.
\requirement{CC:0053.02.07.11.001}{0}
This command MUST be ignored by a node advertising no support for Enabling/Disabling schedules in the Schedule Supported Report Command for the given Schedule ID Block.
\requirement{CC:0053.02.07.11.002}{0}
A node receiving a version 1 Schedule Set Command (without the Schedule ID Block field) MUST assume the default Schedule ID Block (ID = 0x01).
\requirement{CC:0053.02.07.11.003}{0}
A node receiving this command with Schedule ID = 0x00 and Schedule ID Block = 0x00 MUST enable/disable all Schedule IDs from all Schedule ID Blocks.
\requirement{CC:0053.02.07.11.004}{0}
A node receiving this command with Schedule ID = 0x00 and Schedule ID Block ≠ 0x00 MUST enable/disable all Schedule IDs from the specified Schedule ID Block.
\requirement{CC:0053.02.07.11.005}{0}
A node receiving this command with Schedule ID ≠ 0x00 and Schedule ID Block = 0x00 MUST ignore the command.
2.2.89.9. Schedule State Get Command¶
This command is used to request the status of all schedules within a Schedule ID Block supported by a node.
\requirement{CC:0053.02.08.11.001}{0}
The Schedule State Report Command MUST be returned in response to this command.
\requirement{CC:0053.02.08.11.002}{0}
This command MUST NOT be issued via multicast addressing.
\requirement{CC:0053.02.08.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_SCHEDULE (0x53) |
|||||||
Command = SCHEDULE_STATE_GET (0x08) |
|||||||
Schedule ID Block |
|||||||
Schedule ID Block (8 bits)
This field is used to request a particular Schedule ID Block.
\requirement{CC:0053.02.08.11.004}{0}
A node receiving a version 1 Schedule Supported Get Command (without the Schedule ID Block field) MUST return a response for the default Schedule ID Block (ID = 1).
2.2.89.10. Schedule State Report Command¶
This command is used to advertise the status of all schedules supported by a device in a given Schedule ID block.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|---|---|---|---|---|---|---|---|
Command Class = COMMAND_CLASS_SCHEDULE (0x53) |
|||||||
Command = SCHEDULE_STATE_REPORT (0x09) |
|||||||
Number of Supported Schedule ID |
|||||||
Reports to Follow |
Override |
||||||
Active_ID 2 |
Active_ID 1 |
||||||
… |
|||||||
Active_ID N |
Active_ID N-1 |
||||||
Schedule ID Block |
|||||||
Fields not described below remain unchanged from version 1.
Number of Supported Schedule ID (8 bits)
\requirement{CC:0053.02.09.11.001}{0}
This field is used to advertise the number of supported regular schedule IDs for the actual Schedule ID Block. This field’s value MUST be the same as the value advertised in the Schedule Supported Report Command.
Schedule ID Block (8 bits)
This field is used to specify the Schedule ID Block in which all schedule states are advertised.
\requirement{CC:0053.02.09.11.002}{0}
If several Reports are returned (using the Reports to Follow field), this field MUST be present in every Report.