2.2.44. Generic Schedule Command Class, version 1 [OBSOLETED] [NEVER CERTIFIED]

Warning

THIS COMMAND CLASS HAS NEVER BEEN CERTIFIED

Warning

THIS COMMAND CLASS HAS BEEN OBSOLETED New implementations MUST NOT support this Command Class. Instead, the Active Schedule Command Class, version 1 [NEVER CERTIFIED] SHOULD be used.

The Generic Schedule Command Class is used to define schedules.

Schedules defined in this command class are essentially time ranges or intervals. Each schedule is associated to a Schedule ID.

The Schedules defined in this Command Class can be used in other Command Classes, e.g. to schedule when user credentials are valid or when to apply a particular configuration.

2.2.44.1. Terminology

Schedules are composed by one or more Time Range(s). A time range is a composed of one or several scheduling parameters, such as weekdays, day of the month, hour of the day, etc.

Time ranges are defined individually with scheduling parameters. For example, it could be Time Range 1 representing weekdays during work hours and Time Range 2 representing public holidays at fixed dates. (e.g. 25th of December and 31st of October)

A schedule can then be set including or excluding each of its composing time ranges. Schedule ID 1 could include weekdays work hours (Time Range 1) and exclude public holidays (Time Range 2). It means that Schedule 1 must be active only on weekdays work hours when it is not a public holiday.

At least one of the included Time Ranges conditions must be fulfilled and none of the excluded Time Ranges must be fulfilled for a Schedule to be active.

2.2.44.2. Interoperability considerations

This Command Class relies on time and date synchronization between controlling and supporting nodes.

Nodes supporting this command class should also have correct time or date settings depending on their capabilities. Supporting nodes may support the Clock Command Class for this purpose. The Time Command Class may also be used for reading the current date and time at the supporting node.

2.2.44.3. Generic Schedule Capabilities Get Command

This command is used to request the scheduling capabilities of a supporting node.

The Generic Schedule Capabilities Report Command MUST be returned in response to this command.

This command MUST NOT be issued via multicast addressing.

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 2.240 Generic Schedule Capabilities Get Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_GENERIC_SCHEDULE (0xA3)

Command = GENERIC_SCHEDULE_CAPABILITIES_GET (0x01)

2.2.44.4. Generic Schedule Capabilities Report Command

This command is used to advertise the number of supported Schedule Slot IDs for each Schedule Type/User Identifier by the sending node.

Table 2.241 Generic Schedule Capabilities Report Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_GENERIC_SCHEDULE (0xA3)

Command = GENERIC_SCHEDULE_CAPABILITIES_REPORT (0x02)

Number of supported Schedule IDs (MSB)

Number of supported Schedule IDs (LSB)

Res

Number of supported Time Range IDs (MSB)

Number of supported Time Range IDs (LSB)

Number of supported Time Ranges per Schedule

Reserved

Week- days

Date

Hour & Minute

Number of supported Schedule IDs (16 bits)

This field is used to indicate how many Schedule IDs are supported by a supporting node.

This field MUST be in the range 1..65535.

Number of supported Time Range IDs (15 bits)

This field is used to indicate how many Time Ranges IDs are supported by a supporting node.

This field MUST be in the range 1.. 32767.

The number of supported Time Ranges IDs should be equal or greater than the (Number of supported Schedule IDs) x (Number of supported Time Ranges per Schedule)

Number of supported Time Ranges per Schedule (8 bits)

This field is used to indicate how many time ranges can be used as part of 1 schedule.

This field MUST be in the range 1..255.

Weekdays (1 bit)

This field is used to indicate if the supporting node can accept weekdays in the time ranges.

The value 0 MUST indicate that weekdays are not supported in time ranges and will be ignored.

The value 1 MUST indicate that weekdays are supported in time ranges.

Date (1 bit)

This field is used to indicate if the supporting node can accept years, month and day parameters in the time ranges.

The value 0 MUST indicate that start/stop dates are not supported in time ranges and will be ignored.

The value 1 MUST indicate that start/stop dates are supported in time ranges.

Hour & Minute (1 bit)

This field is used to indicate if the supporting node can accept start and stop hours/minutes in the time ranges.

The value 0 MUST indicate that start/stop hours/minutes are not supported in time ranges and will be ignored.

The value 1 MUST indicate that start/stop hours/minutes are supported in time ranges.

A supporting node MUST advertise support for at least 1 scheduling parameter (Weekdays, Date, Hour & Minute).

2.2.44.5. Generic Schedule Time Range Set Command

This command is used to configure a Time Range for a supporting node.

A Time Range MUST be active when all the conditions indicated in its configuration are fulfilled. Some examples are provided in Section 2.2.44.5.1.

Table 2.242 Generic Schedule Time Range Set Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_GENERIC_SCHEDULE (0xA3)

Command = GENERIC_SCHEDULE_TIME_RANGE_SET (0x03)

Res

Time Range ID 1 (MSB)

Time Range ID 2 (LSB)

In use

Weekday bitmask

In use

Start Year (MSB)

Start Year (LSB)

In use

Stop Year (MSB)

Stop Year (LSB)

In use

Reserved

Start Month

In use

Reserved

Stop Month

In use

Reserved

Start Day

In use

Reserved

Stop Day

In use

Reserved

Start Hour

In use

Reserved

Stop Hour

In use

Res

Start Minute

In use

Res

Stop Minute

In use

Reserved

Daily Start Hour

In use

Reserved

Daily Stop Hour

In use

Res

Daily Start Minute

In use

Res

Daily Stop Minute

Res / Reserved

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

Time Range ID (15 bits)

This field is used to indicate which Time Range ID to use for the Time Range being set.

This field MUST be in the range 0..[Number of supported Time Range IDs].

The value 0 MUST indicate that the supporting node MUST erase all configured Time Ranges. In this case, all other fields MUST be set to 0 and ignored by a receiving node.

Values in the range 1..[Number of supported Time Range IDs] MUST indicate the actual Time Range ID to configure.

If a non-supported Time Range ID is specified in this command, a receiving node MUST ignore the command.

In use (15 x 1 bit)

This field is used to indicate if the corresponding scheduling parameter must be used in the Time Range being set.

This field MUST apply to the scheduling parameter being part of the same byte. E.g. the “in use” field part of the byte comprising the Weekday bitmask field MUST indicate if the Weekday bitmask parameter MUST be used and applied to the current Time Range.

The value 0 MUST indicate that the corresponding field is set to 0 and MUST be ignored.

The value 1 MUST indicate that the corresponding field is set to a valid value and MUST be applied for the actual Time Range ID.

All “in use” fields set to 0 MUST indicate to erase a Time Range configuration.

Weekday bitmask (7 bits)

This field is used to indicate on which days the actual Time Range ID MUST be active.

This field MUST be treated as a bitmask and encoded according to Table 2.243.

Table 2.243 Generic Schedule Set::Weekday bitmask encoding

Bit #

Weekday

Bit 0

Sunday

Bit 1

Monday

Bit 2

Tuesday

Bit 3

Wednesday

Bit 4

Thursday

Bit 5

Friday

Bit 6

Saturday

If the corresponding In use field is set to 1:

  • The value 0 MUST indicate that the Time Range MUST NOT be active during the corresponding weekday.

  • The value 1 MUST indicate that the Time Range MUST be active during the corresponding weekday.

If the corresponding In use field is set to 0, the Time Range MUST be active regardless of the current weekday.

A supporting node MUST ignore this field if it advertises no support for the weekday scheduling parameter in the Generic Schedule Capabilities Report Command

Start Year (15 bits)

This field is used to indicate the start year for the actual Time Range ID.

If the corresponding In use field is set to 1, the fields MUST indicate that the Time Range ID MUST be use this field as parameter. Refer to Section 2.2.44.5.1 for details. This field MUST be encoded using unsigned representation.

If the corresponding In use field is set to 0, the Time Range MUST ignore this parameter.

A supporting node MUST ignore this field if it advertises no support for the Date scheduling parameters in the Generic Schedule Capabilities Report Command

Stop Year (15 bits)

This field is used to indicate the stop year for the actual Time Range ID.

If the corresponding In use field is set to 1, the fields MUST indicate that the Time Range ID MUST be use this field as parameter. Refer to Section 2.2.44.5.1 for details. This field MUST be encoded using unsigned representation.

If the corresponding In use field is set to 0, the Time Range MUST ignore this parameter.

A supporting node MUST ignore this field if it advertises no support for the Date scheduling parameters in the Generic Schedule Capabilities Report Command

Start Month (4 bits)

This field is used to indicate the start month for the actual Time Range ID.

If the corresponding In use field is set to 1, the fields MUST indicate that the Time Range ID MUST be use this field as parameter. Refer to Section 2.2.44.5.1 for details. The values 1..12 MUST represent respectively January..December.

If the corresponding In use field is set to 0, the Time Range MUST ignore this parameter.

A supporting node MUST ignore this field if it advertises no support for the Date scheduling parameters in the Generic Schedule Capabilities Report Command

Stop Month (4 bits)

This field is used to indicate the stop month for the actual Time Range ID.

If the corresponding In use field is set to 1, the fields MUST indicate that the Time Range ID MUST be use this field as parameter. Refer to Section 2.2.44.5.1 for details. The values 1..12 MUST represent respectively January..December.

If the corresponding In use field is set to 0, the Time Range MUST ignore this parameter.

A supporting node MUST ignore this field if it advertises no support for the Date scheduling parameters in the Generic Schedule Capabilities Report Command

Start Day (5 bits)

This field is used to indicate the start day of the month for the actual Time Range ID.

If the corresponding In use field is set to 1, the fields MUST indicate that the Time Range ID MUST be use this field as parameter. Refer to Section 2.2.44.5.1 for details. The field MUST be in the range 1..31.

If the corresponding In use field is set to 0, the Time Range MUST ignore this parameter.

A supporting node MUST ignore this field if it advertises no support for the Date scheduling parameters in the Generic Schedule Capabilities Report Command

Stop Day (5 bits)

This field is used to indicate the stop day of the month for the actual Time Range ID.

If the corresponding In use field is set to 1, the fields MUST indicate that the Time Range ID MUST be use this field as parameter. Refer to Section 2.2.44.5.1 for details. The field MUST be in the range 1..31.

If the corresponding In use field is set to 0, the Time Range MUST ignore this parameter.

A supporting node MUST ignore this field if it advertises no support for the Date scheduling parameters in the Generic Schedule Capabilities Report Command

Start Hour /Stop Hour (5 bits) & Start Minute / Stop Minute (6 bits)

These fields are used to indicate from and until which times the actual Time Range ID MUST be active.

If the corresponding In use field is set to 1:

  • The Start Hour / Stop Hour fields MUST be in the range 0..23.

  • The Start Minute / Stop Minute fields MUST be in the range 0..59.

If the corresponding In use field is set to 0, the corresponding field MUST be ignored by the Time Range.

A supporting node MUST ignore this field if it advertises no support for the Hour & Minute scheduling parameter in the Generic Schedule Capabilities Report Command

Daily Start Hour /Stop Hour (5 bits) & Daily Start Minute / Stop Minute (6 bits)

These fields are used to indicate in which time range the actual Time Range ID MUST be active.

If the corresponding In use field is set to 1:

  • The fields MUST indicate that the Time Range ID MUST be active daily between the 2 specified hour and minutes times. (e.g. from the 08:00 to 16:30)

  • The Start Hour / Stop Hour fields MUST be in the range 0..23.

  • The Start Minute / Stop Minute fields MUST be in the range 0..59.

If the corresponding In use field is set to 0, the corresponding field MUST be ignored by the Time Range.

A supporting node MUST ignore this field if it advertises no support for the Hour & Minute scheduling parameter in the Generic Schedule Capabilities Report Command

2.2.44.5.1. Time Range parameters and rules

Time Ranges MUST be active when all their scheduling parameters are matching the conditions. We define the parameter groups shown in Table 2.244.

Table 2.244 Generic Schedule Set Command::Parameter groups

Parameter Group

Fields

Daily Start time

Daily Start Hour

Daily Start Minute

Daily Stop time

Daily Stop Hour

Daily Stop Minute

Start Datetime

Start Year

Start Month

Start Day

Start Hour

Start Minute

Stop Datetime

Stop Year

Stop Month

Stop Day

Stop Hour

Stop Minute

Weekday

Weekday bitmask

2.2.44.5.1.1. All parameters specified

If all Scheduling parameters are specified in a TimeRange, the Time Range MUST be active when the following condition is fulfilled:

  • Daily Start Time <= Current time < Daily Stop Time

  • Start Datetime <= Current datetime <= Stop Datetime

  • Current weekday in (weekday bitmask)

For example, if Daily Start Time is set to 08:30, Daily Stop Time is set to 17:00, Start Datetime is set to 10th of January 2019 at 12:00, Stop Datetime is set to 5th of February 2019 at 12:00, Weekday bitmask is set to Monday to Friday, then the Time Range will be active:

  • On the 10th of January 2019 from 12:00 to 17:00

  • On subsequent weekdays until the 4th of February 2019, between 08:30 and 17:00

  • On the 5th of February 2019 from 08:30 to 12:00

2.2.44.5.1.2. Some parameters undefined in parameter groups

If some of the parameters within a group are undefined, they are to be interpreted as wildcard and excluded from the comparison for the parameter group. For example, if Start Datetime has no Start Year and Start Month defined, but only Start Day set to 15, the time range MUST start on the 15th of every month also regardless of the year.

If Start Day is set to 15 and Stop Minute is set to 30, then the Time Range MUST be active every hour during 30 minutes from the 15th until the end of each month.

2.2.44.5.1.3. All parameters missing from a parameter group

If all fields are undefined (not in use) for a parameter group, the corresponding parameter group MUST NOT be used for the Time Range activation. For example, if none of the Stop Datetime parameters are defined, then the Time Range MUST be active when:

  • Daily Start Time <= Current time < Daily Stop Time

  • Start Datetime <= Current datetime

  • Current weekday in (weekday bitmask)

2.2.44.6. Generic Schedule Time Range Get Command

This command is used to request the configuration of a Time Range ID for a supporting node.

The Generic Schedule Time Range Report Command MUST be returned in response to this command.

This command MUST NOT be issued via multicast addressing.

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 2.245 Generic Schedule Time Range Get Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_GENERIC_SCHEDULE (0xA3)

Command = GENERIC_SCHEDULE_TIME_RANGE_GET (0x04)

Res

Time Range ID 1 (MSB)

Time Range ID 2 (LSB)

Time Range ID (16 bits)

This field is used to specify the requested Time Range ID.

The first byte MUST carry the most significant byte of the 15 bits.

A supporting node MUST return this value in the Time Range ID field in the returned Generic Schedule Report Command.

2.2.44.7. Generic Schedule Time Range Report Command

This command is used to advertise the configuration of a Time Range ID for a supporting node.

Table 2.246 Generic Schedule Time Range Report Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_GENERIC_SCHEDULE (0xA3)

Command = GENERIC_SCHEDULE_TIME_RANGE_REPORT (0x05)

Res

Time Range ID 1 (MSB)

Time Range ID 2 (LSB)

In use

Weekday bitmask

In use

Start Year (MSB)

Start Year (LSB)

In use

Stop Year (MSB)

Stop Year (LSB)

In use

Reserved

Start Month

In use

Reserved

Stop Month

In use

Reserved

Start Day

In use

Reserved

Stop Day

In use

Reserved

Start Hour

In use

Reserved

Stop Hour

In use

Res

Start Minute

In use

Res

Stop Minute

In use

Reserved

Daily Start Hour

In use

Reserved

Daily Stop Hour

In use

Res

Daily Start Minute

In use

Res

Daily Stop Minute

Res

Next Time Range ID

Next Time Range ID

Fields not described below MUST remain identical to the description in Section 2.2.44.5 Generic Schedule Time Range Set Command.

Res / Reserved

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

Time Range ID (15 bits)

This field is used to indicate which Time Range ID configuration is being advertised.

If this field is set to a non-supported or non-configured Time Range ID, all scheduling parameters fields MUST be set to 0.

Next Time Range ID (15 bits)

This field is used to indicate the next non-empty Time Range ID.

This field MUST indicate the next non-empty Time Range ID. The value 0 MUST indicate that there is no following Time Range ID configured at the receiving node.

Non-empty Time Range slot ID means that at least 1 In use flag is set to 1.

2.2.44.8. Generic Schedule Set Command

This command is used to configure a Schedule for a supporting node.

A schedule MUST be active when:

  • At least one of the included Time Ranges is active

  • None of the excluded Time Ranges are active.

Refer to Section 2.2.44.8.1 for details.

Table 2.247 Generic Schedule Set Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_GENERIC_SCHEDULE (0xA3)

Command = GENERIC_SCHEDULE_SET (0x06)

Schedule ID 1 (MSB)

Schedule ID 2 (LSB)

Number of Time Range IDs

Include/ exclude

Time Range ID 1 (MSB)

Time Range ID 1 (LSB)

Include/ exclude

Time Range ID N (MSB)

Time Range ID N (LSB)

Res / Reserved

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

Schedule ID (16 bits)

This field is used to indicate which Schedule slot ID to use for the schedule being set.

This field MUST be in the range 0..[Number of supported Schedule IDs].

The value 0 MUST indicate that the supporting node MUST erase all configured schedules. In this case, the Number of Time Range IDs field MUST be set to 0 by a sending node.

Values in the range 1..[Number of supported Schedule IDs] MUST indicate the actual Schedule ID to configure.

If a non-supported Schedule ID is specified in this command, a receiving node MUST ignore the command.

Number of Time Range IDs (8 bits)

This field is used to indicate the number of Time Range IDs included as part of the Schedule.

This field MUST be in the range 0..[Number of supported Time Range IDs per Schedule].

A supporting node MUST ignore this command if it is set to a value higher than the reported Number of supported Time Ranges per Schedule field in the Generic Schedule Capabilities Report Command

The number of Include/exclude and Time Range ID field blocks in this command MUST be according to this field.

Include/exclude (N x 1 bit)

This field is used to indicate if the Schedule ID must include or exclude the corresponding Time Range ID.

The value 0 MUST indicate that the corresponding Time Range is excluded and the schedule MUST be active outside of the Time Range.

The value 1 MUST indicate that the corresponding Time Range is included and the schedule MUST be active during the defined Time Range.

Time Range ID (N x 15 bits)

This field is used to indicate which Time Range ID MUST be part of the Schedule ID.

Undefined Time Range IDs (all zeroed out) may be part of Schedules.

2.2.44.8.1. Schedules and Time Ranges examples

2.2.44.8.1.1. Example 1

  • Time Range 1 is from 24th to 26th of December

  • Time Range 2 is from 17:00 to 08:00 every day

  • Time Range 3 is weekend days.

If a schedule is set to:

  • Include Time Range 1

  • Exclude Time Range 2

  • Include Time Range 3

Then it MUST be active:

  • every week-end from 08:00 to 17:00

  • on the 24th,25th and 26th of December from 08:00 to 17:00 regardless of the current weekday.

2.2.44.8.1.2. Example 2

  • Time Range 3 is undefined (all unused value).

If a schedule is set to:

  • Include Time Range 1

  • Include Time Range 2

  • Include Time Range 3

Then the schedule MUST be active at all times.

2.2.44.8.1.3. Example 3

  • Time Range 3 is undefined (all unused value).

If a schedule is set to:

  • Include Time Range 1

  • Exclude Time Range 2

  • Exclude Time Range 3

Then the schedule MUST never be active.

2.2.44.8.1.4. Example 4

  • Time Range 1 has no start time and finishes on the 30th of June

  • Time Range 2 is from 08:00 to 17:00 on week days

  • Time Range 3 is 10:00 to 15:00 on weekend days

If a schedule is set to:

  • Include Time Range 1

  • Include Time Range 2

  • Include Time Range 3

Then the schedule MUST be active:

  • All the time from the 1st of January until the 30th of June

  • From 08:00 to 17:00 on weekdays between the 1st of July and the 31st of December every year

  • From 10:00 to 15:00 on weekends between the 1st of July and the 31st of December every year

2.2.44.9. Generic Schedule Get Command

This command is used to request the configuration of a Schedule ID for a supporting node.

The Generic Schedule Report Command MUST be returned in response to this command.

This command MUST NOT be issued via multicast addressing.

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 2.248 Generic Schedule Get Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_GENERIC_SCHEDULE (0xA3)

Command = GENERIC_SCHEDULE_GET (0x07)

Schedule ID 1 (MSB)

Schedule ID 2 (LSB)

Schedule ID (16 bits)

This field is used to specify the requested Schedule ID.

The first byte MUST carry the most significant byte of the 16 bits.

A supporting node MUST return this value in the Schedule ID field in the returned Generic Schedule Report Command.

2.2.44.10. Generic Schedule Report Command

This command is used to advertise the contents of a Schedule for a supporting node.

Table 2.249 Generic Schedule Report Command

7

6

5

4

3

2

1

0

Command Class = COMMAND_CLASS_GENERIC_SCHEDULE (0xA3)

Command = GENERIC_SCHEDULE_REPORT (0x08)

Schedule ID 1 (MSB)

Schedule ID 2 (LSB)

Number of Time Range IDs

Include/ exclude

Time Range ID 1 (MSB)

Time Range ID 1 (LSB)

Include/ exclude

Time Range ID N (MSB)

Time Range ID N (LSB)

Next Schedule ID 1 (MSB)

Next Schedule ID 2 (LSB)

Fields not described below MUST remain identical to the description in Section 2.2.44.10.

Res / Reserved

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

Schedule ID (16 bits)

This field is used to indicate which Schedule ID configuration is being advertised.

If this field is set to a non-supported or non-configured Schedule ID, all the Number of Time Range IDs field MUST be set to 0.

Number of Time Range IDs (8 bits)

This field is used to indicate the number of Time Range IDs included as part of the Schedule.

This field MUST be in the range 0..[Number of supported Time Range IDs per Schedule].

The number of Include/exclude and Time Range ID field blocks in this command MUST be according to this field.

Include/exclude (N x 1 bit)

This field is used to indicate if the Schedule ID must include or exclude the corresponding Time Range ID.

The value 0 MUST indicate that the corresponding Time Range is excluded and the schedule MUST be active outside of the Time Range.

The value 1 MUST indicate that the corresponding Time Range is included and the schedule MUST be active during the defined Time Range.

Time Range ID (N x 15 bits)

This field is used to indicate which Time Range ID MUST be part of the Schedule ID.

Undefined Time Range IDs (all zeroed out) may be part of Schedules.

Next Schedule ID (16 bits)

This field is used to indicate the next non-empty Schedule ID.

This field MUST indicate the next non-empty Schedule slot ID. The value 0 MUST indicate that there is no following Schedule Slot ID configured at the supporting node.