本文介绍蓝牙Mesh设备基于Vendor Model实现的时间设置和定时相关的规范。

版本更新记录

版本迭代记录更新日期更新内容
V1.0.02022-06-09基于2019年版v1定时协议修改,增加组播对时,时区,循环定时方式,多属性操作,定时索引全量ACK。
V1.0.12022-08-11增加对于重复周期(schedule)为0时的相关描述。
V1.0.22022-12-02Mesh设备定时统一协议(V2),自有品牌项目的云智能App和天猫精灵项目的天猫精灵App(精灵音箱)均已支持。

支持Mesh本地定时统一协议设备区分

通过设备Device UUID FeatureFlag2标识位bit5位置1,来表示设备支持Mesh本地定时统一协议,完整的Mesh设备UUID格式定义说明请参见Mesh设备UUID格式定义说明

Mesh设备对时协议

AttrType & Opcode

Mesh设备需要同时兼容支持以下两种方式的对时指令。

精灵音箱对时指令

目前精灵音箱对时,沿用原有指令,采用单播方式对时,如下表所示:

下行(精灵音箱->Mesh设备)上行(Mesh设备->精灵音箱)
OpcodeDst AddrAttr TypeOpcodeAttr Type
设置时间0xD101A8设备单播地址0xF01F0xD301A80xF01F
查询时间0xD001A8设备单播地址0xD301A80xF01F
设置时区0xD101A8设备单播地址0xF01E0xD301A80xF01E
查询时区0xD001A8设备单播地址0xD301A80xF01E
设置对时参数0xD101A8设备单播地址0xF01D0xD301A80xF01D
查询对时参数0xD001A8设备单播地址0xD301A80xF01D
上行(Mesh设备->精灵音箱)下行(精灵音箱->Mesh设备)
OpcodeAttr TypeOpcodeDst AddrAttr Type
请求更新时间0xDE01A80xF01F0xDF01A8设备单播地址0xF01F

网关及APP对时指令

网关及APP对时指令,使用新的对时指令,采用组播方式,组播地址为全品类0xCFFF,如下表所示:

下行(网关/APP->Mesh设备)上行(Mesh设备->网关/APP)
OpcodeDst AddrAttr TypeOpcodeAttr Type
设置时间0xD201A8组播地址:0xCFFF0xF01F--
查询时间0xD001A8设备单播地址0xD301A80xF01F
设置时区0xD201A8组播地址:0xCFFF0xF01E--
查询时区0xD001A8设备单播地址0xD301A80xF01E
设置对时参数0xD201A8组播地址:0xCFFF0xF01D--
查询对时参数0xD001A8设备单播地址0xD301A80xF01D
上行(Mesh设备->网关/APP)下行(网关/APP->Mesh设备)
OpcodeAttr TypeOpcodeDst AddrAttr Type
请求更新时间0xDE01A80xF01F0xDF01A8组播地址:0xCFFF0xF01F

对时默认参数

设备端默认对时参数如下,如果需要修改,可以通过设置对时参数指令下发给设备作调整。

  • 设备对时请求间隔:180分钟。
  • 设备对时请求失败后重试最大间隔:5分钟,采用了时间离散方式,第一次对时请求失败间隔1分钟,第二次对时请求失败间隔3分钟,第三次对时请求失败间隔5分钟。
  • 设备对时请求失败重试次数:3次。

注意事项

  • 在无精灵音箱/网关在线的情况下,APP连接了Mesh网络,给设备作了对时和定时后,断开了连接,由于设备周期对时请求会失败,设备本地时间会存在偏差,导致定时操作会出现偏差。
  • 在无精灵音箱/网关在线的情况下,在设备重启后,APP没有重连Mesh网络,在此情况下,设备没有得到对时,设备定时会出现异常。

数据示例

说明 所有数据示例中的TID仅做为参考,下行发送的每条消息的TID均与上一条不同,设备回复的TID为下行设置或查询指令中的TID相同;如果是设备主动发送的消息,则TID由设备自行生成管理。

以下数据示例以网关及APP的对时指令做为示范。

设置时间(下行)

0xD20xA80x010x010x1F0xF00x000x3D0x2A0x5C0x08
OpcodeTIDAttr Typeu32_times8_timezone
0xD201A80x01UNIX时间:0xF01FUNIX时间:0x5C2A3D00

2019/1/1 00:00:00

时区:-12~14

s8_timezone:1个字节,表示时区值,参数范围:-12~14。

说明 s8_timezone时区字段为可选字段,如果Attr Param数据长度为4个字节,则只包含UNIX时间,如果Attr Param数据长度为5个字节,则前4个字节为UNIX时间,第5个字节为时区。

查询时间(下行)

0xD00xA80x010x020x1F0xF0
OpcodeTIDAttr Type
0xD001A802UNIX时间:0xF01F

时间信息(上行)

0xD30xA80x010x030x1F0xF00x000x3D0x2A0x5C
OpcodeTIDAttr Typeu32_time
0xD301A803UNIX时间:0xF01FUNIX时间:0x5C2A3D00

2019/1/1 00:00:00

设置对时参数(下行)

0xD20xA80x010x010x1D0xF00xB40x000x050x03
OpcodeTIDAttr Typeuint16 period_timeuint8 retry_delayuint8 retry_times
0xD201A80x01对时参数:0xF01D对时请求间隔:180分钟对时请求失败后重试最大间隔:5分钟对时请求失败重试次数:3次

查询对时参数(下行)

0xD00xA80x010x020x1D0xF0
OpcodeTIDAttr Type
0xD001A80x02对时参数:0xF01D

对时参数(上行)

0xD30xA80x010x030x1D0xF00xB40x000x050x03
OpcodeTIDAttr Typeuint16 period_timeuint8 retry_delayuint8 retry_times
0xD301A80x03对时参数:0xF01D对时请求间隔:180分钟对时请求失败后重试最大间隔:5分钟对时请求失败重试次数:3次

设置时区(下行)

0xD20xA80x010x010x1E0xF00x08
OpcodeTIDAttr Types8_timezone
0xD201A80x01时区:0xF01E时区:-12~14

查询时区(下行)

0xD00xA80x010x020x1E0xF0
OpcodeTIDAttr Type
0xD001A802时区:0xF01E

时区信息(上行)

0xD30xA80x010x030x1E0xF00x08
OpcodeTIDAttr Types8_timezone
0xD301A803时区:0xF01E时区:-12~14

请求更新时间(上行)

0xDE0xA80x010x040x1F0xF0
OpcodeTIDAttr Type
0xDE01A804UNIX时间:0xF01F
说明 设备发现如果已超时对时间隔还没有收到下行对时指令,则主动发起对时请求进行对时。

更新时间(下行)

0xDF0xA80x010x050x1F0xF00x000x3D0x2A0x5C0x08
OpcodeTIDAttr Typeu32_times8_timezone
0xDF01A805UNIX时间:0xF01FUNIX时间:0x5C2A3D00

2019/1/1 00:00:00

时区:-12~14

s8_timezone:1个字节,表示时区值,参数范围:-12~14。

说明 s8_timezone时区字段为可选字段,如果Attr Param数据长度为4个字节,则只包含UNIX时间,如果Attr Param数据长度为5个字节,则前4个字节为UNIX时间,第5个字节为时区。

Mesh设备定时协议

AttrType & Opcode

下行(精灵音箱/网关/APP->mesh设备)上行(mesh设备->精灵音箱/网关/APP)
OpcodeAttr TypeOpcodeAttr Type
设置单次定时0xD101A80xF0130xD301A80xF013
设置重复定时0xD101A80xF0140xD301A80xF014
设置循环定时0xD101A80xF0150xD301A80xF015
启用/禁用定时0xD101A80xF0160xD301A80xF016
删除定时0xD101A80xF0170xD301A80xF017
查询定时0xD001A80xF0180xD301A80xF018
查询定时记录0xD001A80xF0190xD301A80xF019
定时全量索引上报--0xD301A80xF020
定时完成事件上报--0xD301A80xF009

注意事项

  • 设备端限定所支持的定时器个数最大为13条(多element协议设备,所有element共享上限),超过报定时数量已满错误码。
  • 设备端限定所缓冲的定时器执行记录最大为4条(执行记录超出4条时,按时间顺序覆盖旧的)。
  • 每条定时设置指令只允许包含1个定时器索引。
  • 每条定时设置指令所包含的操作码数量最大允许的个数限定为4个。
  • 设备端接收到定时设置指令后存储到Flash中,重启上电需要重新加载,且主动全量上报当前所有有效的定时器索引。
  • 对于单次定时,定时完成后,设备端本地所存在的此定时器需要自动删除,且主动全量上报当前所有有效的定时器索引。

数据示例

说明 所有数据示例中的TID仅做为参考,下行发送的每条消息的TID均与上一条不同,设备回复的TID为下行设置或查询指令中的TID相同;如果是设备主动发送的消息,则TID由设备自行生成管理。

设置单次定时(下行)

0xD10xA80x010x800x130xF00x810x010x3D0x2A0x5C0x000x010x010x00
OpcodeTIDAttr Typeu8_indexu32_timeu16_attr_typeu8_attr_para_lenattr_para
0xD101A880单次定时:0xF013索引UNIX时间:0x5C2A3D00

2019/1/1 00:00:00

操作码数量:1组

开关:0x0100attr_para数据长度:0x01关闭:0x00
定时器
  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

  • u32_time

    定时为精度到分钟的时间,故该数据到秒数部分(<60秒)表示该定时执行的操作码数量。

    如上表数据0x5C2A3D01,对应十进制1546272001,计算1546272001/60取整25771200,25771200*60 = 1546272000,对应时间为2019/1/1 00:00:00。

    1546272001 mod 60 = 1,表示只有1组操作(开关),操作码数量最大允许的个数为4个。

  • u8_attr_para_len

    1个字节,attr_para长度,表示后面attr_para数据的长度,最大长度为8个字节。

    说明 对于单次定时,定时执行完成后,设备端本地所存在的此定时器需要自动删除,且主动全量上报当前所有有效的定时器索引。

设置单次定时ACK(上行)

0xD30xA80x010x800x130xF00x000x810x82
OpcodeTIDAttr TypeStatusu8_indexu8_index
0xD301A880单次定时:0xF013 0x00:表示成功索引1索引2
0xD30xA80x010x800x130xF00x800x81
OpcodeTIDAttr TypeStatusu8_index
0xD301A880单次定时:0xF013 0x80:表示出错出错的定时索引
  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

  • Status

    操作状态码表,详见Status状态码表

    Status为0x00或0x01时,设备回复ACK包,会把设备端当前所有定时器index都带上。

    Status为其它错误码时,设备回复ACK包,只带上当前操作出错的定时器index。

    说明 每条设置定时指令,只可包含1个定时设置。

设置重复定时(下行)

重复定时(只支持按每周重复):

0xD10xA80x010x800x140xF00x810xE00x110xE00x010x060x000x010x010x00
OpcodeTIDAttr Typeu8_indexu16_times16_timezoneu8_scheduleattr_typeu8_attr_para_lenattr_para
0xD101A880重复定时:0xF014索引24H时间:0x01E0

早上8:00

操作码数量:1组
时区偏差:与UTC时间的差值为480分bit 0-6:对应周一-周日每周二、周三开关:0x0100attr_para数据长度:0x01关闭:0x00
定时器
  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

  • u16_time

    bit 0-11:表示24小时的分钟数,如上表数据0x11E0,低12位为0x01E0,对应十进制480,表示时间为早上8:00。

    bit 12-15:表示该定时执行的操作码数量,如上表数据0x11E0,高4位为0x01,表示只有1组操作(开关),操作码数量最大允许的个数为4个。

  • s16_timezone

    2个字节,表示与UTC时间的差值,单位:分,取值范围:-720~840。

    需要考虑不到一个时区的国家地区,如:Australia: UTC+08:45。

    时区List:https://en.wikipedia.org/wiki/Time_zone

  • u8_schedule

    bit 0-6:对应周一-周日。

    对于schedule为0,表示为单次定时,如果定时时间小于当前时间,则为明天执行,否则为当天执行;

    单次定时执行完成后,设备端本地所保存的此定时器需要删除,且主动全量上报当前所有有效的定时器索引。

  • u8_attr_para_len

    1个字节,attr_para长度,表示后面attr_para数据的长度,最大长度为8个字节。

    说明 每条设置定时指令,只可包含1个定时设置。

设置重复定时ACK(上行)

0xD30xA80x010x800x140xF00x000x810x82
OpcodeTIDAttr TypeStatusu8_indexu8_index
0xD301A880重复定时:0xF014 0x00:表示成功索引1索引2
0xD30xA80x010x800x140xF00x800x81
OpcodeTIDAttr TypeStatusu8_index
0xD301A880重复定时:0xF014 0x80:表示出错出错的定时索引
  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

  • Status

    操作状态码表,详见Status状态码表

    Status为0x00或0x01时,设备回复ACK包,会把设备端当前所有定时器index都带上。

    Status为其它错误码时,设备回复ACK包,只带上当前操作出错的定时器index。

设置循环定时(下行)

0xD10xA80x010x800x150xF00x810xE00x010xD00x020xE00x01
OpcodeTIDAttr Typeu8_indexu16_timeu16_times16_timezone
0xD101A880循环定时:0xF015索引开始时间

24H时间:0x01E0

早上8:00
结束时间

24H时间:0x02D0

中午12:00
时区偏差:与UTC时间的差值为480分
定时器
表 1. 接上表
0x060x1E0x100x000x010x010x010x1E0x100x000x010x010x00
u8_scheduleu16_durationattr_typeu8_attr_para_lenattr_parau16_durationattr_typeu8_attr_para_lenattr_para
bit 0-6:对应周一-周日每周二、周三运行时间:0x101e

30分钟

操作码数量:1组
开关:0x0100attr_para数据长度:0x01打开:0x01睡眠时间:0x101e

30分钟

操作码数量:1组
开关:0x0100attr_para数据长度:0x01关闭:0x00
定时器
  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

  • u16_time

    bit 0-11:表示24小时的分钟数,如上表数据0x11E0,低12位为0x01E0,对应十进制480,表示时间为早上8:00。

    bit 12-15:表示该定时执行的操作码数量,如上表数据0x11E0,高4位为0x01,表示只有1组操作(开关),操作码数量最大允许的个数为4个。

  • s16_timezone

    2个字节,表示与UTC时间的差值,单位:分,取值范围:-720~840。

  • u8_schedule

    bit 0-6:对应周一-周日。

    对于schedule为0,表示为单次的循环定时:

    • 如果定时开始时间小于当前时间,但结束时间大于当前时间时,则从当前时间~结束时间这段时间,循环定时也会执行;
    • 如果开始时间小于当前时间,且结束时间也小于当前时间时,则会从明天开始时间,循环定时才执行。

      对于单次的循环定时执行完成后,设备端本地所保存的此定时器需要删除,且主动全量上报当前所有有效的定时器索引。

  • u16_duration

    bit 0-11:表示持续时间,单位为分钟,如上表数据0x101e,低12位为0x01e,对应十进制30,表示持续时间为30分钟。

    bit 12-15:表示该持续时间执行的操作码数量,如上表数据0x101e,高4位为0x01,表示只有1组操作(开关),操作码数量最大限定为2个。

  • u8_attr_para_len

    1个字节,attr_para长度,表示后面attr_para数据的长度,最大长度为8个字节。

    说明 每条设置定时指令,只可包含1个定时设置。

设置循环定时ACK(上行)

0xD30xA80x010x800x150xF00x000x810x02
OpcodeTIDAttr TypeStatusu8_indexu8_index
0xD301A880循环定时:0xF015 0x00:表示成功索引2索引2
0xD30xA80x010x800x150xF00x800x81
OpcodeTIDAttr TypeStatusu8_index
0xD301A880循环定时:0xF015 0x80:表示出错索引2
  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

  • Status

    操作状态码表,详见Status状态码表

    Status为0x00或0x01时,设备回复ACK包,会把设备端当前所有定时器index都带上。

    Status为其它错误码时,设备回复ACK包,只带上当前操作出错的定时器index。

    说明 每条设置定时指令,只可包含1个定时设置。

启用/禁用定时(下行)

0xD10xA80x010x800x160xF00x810x02
OpcodeTIDAttr Typeu8_indexu8_index
0xD101A880启用/禁用定时:0xF016索引1,启用索引2,禁用
  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

    说明 每条启用/禁用定时信息可包含1个或多个定时索引,每个定时索引可以单独设置启用/禁用定时状态。

启用/禁用定时ACK(上行)

0xD30xA80x010x800x160xF00x000x810x02
OpcodeTIDAttr TypeStatusu8_indexu8_index
0xD301A880启用/禁用定时:0xF016 0x00:表示成功索引2索引2
0xD30xA80x010x800x160xF00x850x81
OpcodeTIDAttr TypeStatusu8_index
0xD301A880启用/禁用定时:0xF016 0x85:表示出错索引1
  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

  • Status

    操作状态码表,详见Status状态码表

    Status为0x00或0x01时,设备回复ACK包,会把设备端当前所有定时器index都带上。

    Status为其它错误码时,设备回复ACK包,只带上当前操作出错的定时器index。

删除定时(下行)

0xD10xA80x010x800x170xF00x010x02
OpcodeTIDAttr Typeu8_indexu8_index
0xD101A880删除定时:0xF017索引1索引2
  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

    0xFF:表示删除所有定时器,其它值表示所需删除的定时索引。

    说明 每条删除定时信息可包含1个或多个定时索引,索引index:0xFF表示删除所有定时器。

删除定时ACK(上行)

0xD30xA80x010x800x170xF00x000x810x02
OpcodeTIDAttr TypeStatusu8_indexu8_index
0xD301A880定时记录:0xF0170x00:表示成功索引1索引2
  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

  • Status

    操作状态码表,如果定时索引设备本地存在则删除此定时,如果定时索引设备本地不存在,此不作处理,Status还是返回成功0x00,具体见Status状态码表

    Status为0x00或0x01时,设备回复ACK包,会把设备端当前所有定时器index都带上,如果index字段为NULL,表示本地没有定时。

    Status为其它错误码时,设备回复ACK包,只带上当前操作出错的定时器index。

查询定时(下行)

0xD00xA80x010x800x180xF00xFF
OpcodeTIDAttr Typeu8_type
0xD001A880查询定时:0xF0180xFF:表示查询所有定时器的索引;

其它值:表示查询相应定时器index的具体参数。

  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

    0xFF:表示查询所有定时器的索引,回复查询所有定时索引ACK。

    其它值,表示查询相应定时器index的具体定时信息,回复查询单个定时ACK,只支持单个index定时器查询。

查询定时ACK(上行)

查询所有定时索引ACK(上行)

0xD30xA80x010x800x180xF00x000xFF0x810x02
OpcodeTIDAttr TypeStatusu8_typeu8_indexu8_index
0xD301A880定时记录:0xF0180x00:表示成功 0xFF:表示返回所有定时索引索引1索引2
  • u8_type

    0xFF:表示返回所有定时索引。

    0x01:表示单次定时类型。

    0x02:表示重复定时类型。

    0x03:表示循环定时类型。

  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

  • Status

    操作状态码表,详见Status状态码表

    Status为0x00或0x01时,设备回复ACK包,会把设备端当前所有定时器index都带上。

    Status为其它错误码时,设备回复ACK包,只带上当前操作出错的定时器index。

查询单个定时ACK(上行)

0xD30xA80x010x800x180xF00x000x010x810x010x3D0x2A0x5C0x000x010x010x00
OpcodeTIDAttr TypeStatusu8_typeu8_indexu32_timeattr_typeu8_attr_para_lenattr_para
0xD301A880查询定时:0xF018 0x00:表示成功 0x01:表示单次定时类型索引UNIX时间:0x5C2A3D00

2019/1/1 00:00:00

操作码数量:1组
开关:0x0100attr_para数据长度:0x01关闭:0x00
  • u8_type

    0xFF:表示返回所有定时索引。

    0x01:表示单次定时类型。

    0x02:表示重复定时类型。

    0x03:表示循环定时类型。

  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

  • Status

    操作状态码表,详见Status状态码表

查询定时记录(下行)

说明 以下定时记录指令云端现暂不使用(APP页面没有展示定时记录),设备端可以先预埋以下定时记录指令的实现。
0xD00xA80x010x800x190xF00xFF
OpcodeTIDAttr Typeu8_index
0xD301A880定时信息:0xF0190xFF:表示查询所有定时记录的索引。

其它值:表示查询相应index定时记录完成时间及类型。

  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

    0xFF:表示查询所有定时器的索引,回复查询所有定时索引ACK。

    其它值,表示查询相应定时器index的具体定时信息,回复查询单个定时ACK,只支持单个index定时器查询。

    说明 设备端只保存最近4条定时记录,超出4条时,按定时完成时间覆盖最旧的定时记录。

设备定时记录ACK(上行)

查询所有定时记录索引ACK(上行)

0xD30xA80x010x800x190xF00x000xFF0x010x020x030x04
OpcodeTIDAttr TypeStatusu8_typeu8_indexu8_indexu8_indexu8_index
0xD301A880定时记录:0xF0190x00:表示成功 0xFF:表示返回所有定时记录索引已完成定时索引1已完成定时索引2已完成定时索引3已完成定时索引4
  • u8_type

    0xFF:表示返回所有定时索引。

    0x01:表示单次定时类型。

    0x02:表示重复定时类型。

    0x03:表示循环定时类型。

  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

  • Status

    操作状态码表,详见Status状态码表

    说明 设备端只保存最近4条定时记录,超出4条时,按定时完成时间覆盖最旧的定时记录。

查询单个定时记录ACK(上行)

0xD40xA80x010x800x190xF00x000x010x010x000x3D0x2A0x5C
OpcodeTIDAttr TypeStatusu8_typeu8_indexu32_time
0xD301A880定时记录:0xF0190x00:表示成功0x01:表示单次定时类型已完成定时索引1定时完成的UNIX时间:0x5C2A3D01

2019/1/1 00:00:00

  • u8_type

    0xFF:表示返回所有定时索引。

    0x01:表示单次定时类型。

    0x02:表示重复定时类型。

    0x03:表示循环定时类型。

  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

  • u32_time

    定时完成的UNIX时间,单位为秒的时间。

  • Status

    操作状态码表,详见Status状态码表

全量定时索引上报(上行)

0xD30xA80x010x800x200xF00x810x82
OpcodeTIDAttr Typeu8_indexu8_index
0xD301A880定时信息:0xF020索引1索引2
  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

    说明
    • 设备端所有定时器index都需要带上,如果index字段为NULL,表示本地没有定时。
    • 在设备端配网成功,重启上电或定时完成时(如果涉及到本地定时器的删除),则需要主动上报此全量定时信息。

定时完成上报(上行)

0xD40xA80x010x800x090xF00x110x810x82
OpcodeTIDAttr TypeEventu8_indexu8_index
0xD301A880事件上报:(0xF009)0x11 事件ID表示定时完成本次完成定时索引1本次完成定时索引2
  • u8_index

    bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。

    bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。

    说明
    • 设备端定时触发时,需要上报此定时完成消息,包括本次所完成定时器的索引,如果有多个定时器本次同一时间完成,则一起上报。
    • 如果是单次定时,定时完成后,设备端本地定时器的自动删除,且需要主动上报当前全量定时信息。

Status状态码表

Status Code说明
0x00操作成功
0x01操作成功,但设备时间有偏差(已超出180分钟没有重新对时)
0x80UNIX时间未设置(设备本地没有定时器)
0x81UNIX时间未设置(设备本地存在定时器,定时异常)
0x82不支持的属性操作
0x83属性操作参数错误
0x84定时时间小于当前时间
0x85未找到所指定的定时器索引
0x86定时数量已满(定时数量超出13个)
0x87定时格式错误
  • Status Code为0x00和0x01,都表示操作成功,但为0x01时,需要推送提示用户:由于设备已超出180分钟没有重新对时,设备定时会出现偏差。
  • Status Code为0x80,表示设备UNIX时间未设置(设备本地没有定时器),一直未对时成功。
  • Status Code为0x81,表示设备UNIX时间未设置(设备本地存在定时器,但定时异常)。