本文介绍蓝牙Mesh设备基于Vendor Model实现的时间设置和定时相关的规范。
版本更新记录
版本迭代记录 | 更新日期 | 更新内容 |
---|---|---|
V1.0.0 | 2022-06-09 | 基于2019年版v1定时协议修改,增加组播对时,时区,循环定时方式,多属性操作,定时索引全量ACK。 |
V1.0.1 | 2022-08-11 | 增加对于重复周期(schedule)为0时的相关描述。 |
V1.0.2 | 2022-12-02 | Mesh设备定时统一协议(V2),自有品牌项目的云智能App和天猫精灵项目的天猫精灵App(精灵音箱)均已支持。 |
支持Mesh本地定时统一协议设备区分
通过设备Device UUID FeatureFlag2标识位bit5位置1,来表示设备支持Mesh本地定时统一协议,完整的Mesh设备UUID格式定义说明请参见Mesh设备UUID格式定义说明。
Mesh设备对时协议
AttrType & Opcode
Mesh设备需要同时兼容支持以下两种方式的对时指令。
精灵音箱对时指令
目前精灵音箱对时,沿用原有指令,采用单播方式对时,如下表所示:
下行(精灵音箱->Mesh设备) | 上行(Mesh设备->精灵音箱) | ||||
---|---|---|---|---|---|
Opcode | Dst Addr | Attr Type | Opcode | Attr Type | |
设置时间 | 0xD101A8 | 设备单播地址 | 0xF01F | 0xD301A8 | 0xF01F |
查询时间 | 0xD001A8 | 设备单播地址 | 0xD301A8 | 0xF01F | |
设置时区 | 0xD101A8 | 设备单播地址 | 0xF01E | 0xD301A8 | 0xF01E |
查询时区 | 0xD001A8 | 设备单播地址 | 0xD301A8 | 0xF01E | |
设置对时参数 | 0xD101A8 | 设备单播地址 | 0xF01D | 0xD301A8 | 0xF01D |
查询对时参数 | 0xD001A8 | 设备单播地址 | 0xD301A8 | 0xF01D |
上行(Mesh设备->精灵音箱) | 下行(精灵音箱->Mesh设备) | ||||
---|---|---|---|---|---|
Opcode | Attr Type | Opcode | Dst Addr | Attr Type | |
请求更新时间 | 0xDE01A8 | 0xF01F | 0xDF01A8 | 设备单播地址 | 0xF01F |
网关及APP对时指令
网关及APP对时指令,使用新的对时指令,采用组播方式,组播地址为全品类0xCFFF,如下表所示:
下行(网关/APP->Mesh设备) | 上行(Mesh设备->网关/APP) | ||||
---|---|---|---|---|---|
Opcode | Dst Addr | Attr Type | Opcode | Attr Type | |
设置时间 | 0xD201A8 | 组播地址:0xCFFF | 0xF01F | - | - |
查询时间 | 0xD001A8 | 设备单播地址 | 0xD301A8 | 0xF01F | |
设置时区 | 0xD201A8 | 组播地址:0xCFFF | 0xF01E | - | - |
查询时区 | 0xD001A8 | 设备单播地址 | 0xD301A8 | 0xF01E | |
设置对时参数 | 0xD201A8 | 组播地址:0xCFFF | 0xF01D | - | - |
查询对时参数 | 0xD001A8 | 设备单播地址 | 0xD301A8 | 0xF01D |
上行(Mesh设备->网关/APP) | 下行(网关/APP->Mesh设备) | ||||
---|---|---|---|---|---|
Opcode | Attr Type | Opcode | Dst Addr | Attr Type | |
请求更新时间 | 0xDE01A8 | 0xF01F | 0xDF01A8 | 组播地址:0xCFFF | 0xF01F |
对时默认参数
设备端默认对时参数如下,如果需要修改,可以通过设置对时参数指令下发给设备作调整。
- 设备对时请求间隔:180分钟。
- 设备对时请求失败后重试最大间隔:5分钟,采用了时间离散方式,第一次对时请求失败间隔1分钟,第二次对时请求失败间隔3分钟,第三次对时请求失败间隔5分钟。
- 设备对时请求失败重试次数:3次。
注意事项
- 在无精灵音箱/网关在线的情况下,APP连接了Mesh网络,给设备作了对时和定时后,断开了连接,由于设备周期对时请求会失败,设备本地时间会存在偏差,导致定时操作会出现偏差。
- 在无精灵音箱/网关在线的情况下,在设备重启后,APP没有重连Mesh网络,在此情况下,设备没有得到对时,设备定时会出现异常。
数据示例
以下数据示例以网关及APP的对时指令做为示范。
设置时间(下行)
0xD2 | 0xA8 | 0x01 | 0x01 | 0x1F | 0xF0 | 0x00 | 0x3D | 0x2A | 0x5C | 0x08 |
---|---|---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | u32_time | s8_timezone | ||||||
0xD201A8 | 0x01 | UNIX时间:0xF01F | UNIX时间:0x5C2A3D00 2019/1/1 00:00:00 | 时区:-12~14 |
s8_timezone:1个字节,表示时区值,参数范围:-12~14。
查询时间(下行)
0xD0 | 0xA8 | 0x01 | 0x02 | 0x1F | 0xF0 |
---|---|---|---|---|---|
Opcode | TID | Attr Type | |||
0xD001A8 | 02 | UNIX时间:0xF01F |
时间信息(上行)
0xD3 | 0xA8 | 0x01 | 0x03 | 0x1F | 0xF0 | 0x00 | 0x3D | 0x2A | 0x5C |
---|---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | u32_time | ||||||
0xD301A8 | 03 | UNIX时间:0xF01F | UNIX时间:0x5C2A3D00 2019/1/1 00:00:00 |
设置对时参数(下行)
0xD2 | 0xA8 | 0x01 | 0x01 | 0x1D | 0xF0 | 0xB4 | 0x00 | 0x05 | 0x03 |
---|---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | uint16 period_time | uint8 retry_delay | uint8 retry_times | ||||
0xD201A8 | 0x01 | 对时参数:0xF01D | 对时请求间隔:180分钟 | 对时请求失败后重试最大间隔:5分钟 | 对时请求失败重试次数:3次 |
查询对时参数(下行)
0xD0 | 0xA8 | 0x01 | 0x02 | 0x1D | 0xF0 |
---|---|---|---|---|---|
Opcode | TID | Attr Type | |||
0xD001A8 | 0x02 | 对时参数:0xF01D |
对时参数(上行)
0xD3 | 0xA8 | 0x01 | 0x03 | 0x1D | 0xF0 | 0xB4 | 0x00 | 0x05 | 0x03 |
---|---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | uint16 period_time | uint8 retry_delay | uint8 retry_times | ||||
0xD301A8 | 0x03 | 对时参数:0xF01D | 对时请求间隔:180分钟 | 对时请求失败后重试最大间隔:5分钟 | 对时请求失败重试次数:3次 |
设置时区(下行)
0xD2 | 0xA8 | 0x01 | 0x01 | 0x1E | 0xF0 | 0x08 |
---|---|---|---|---|---|---|
Opcode | TID | Attr Type | s8_timezone | |||
0xD201A8 | 0x01 | 时区:0xF01E | 时区:-12~14 |
查询时区(下行)
0xD0 | 0xA8 | 0x01 | 0x02 | 0x1E | 0xF0 |
---|---|---|---|---|---|
Opcode | TID | Attr Type | |||
0xD001A8 | 02 | 时区:0xF01E |
时区信息(上行)
0xD3 | 0xA8 | 0x01 | 0x03 | 0x1E | 0xF0 | 0x08 |
---|---|---|---|---|---|---|
Opcode | TID | Attr Type | s8_timezone | |||
0xD301A8 | 03 | 时区:0xF01E | 时区:-12~14 |
请求更新时间(上行)
0xDE | 0xA8 | 0x01 | 0x04 | 0x1F | 0xF0 |
---|---|---|---|---|---|
Opcode | TID | Attr Type | |||
0xDE01A8 | 04 | UNIX时间:0xF01F |
更新时间(下行)
0xDF | 0xA8 | 0x01 | 0x05 | 0x1F | 0xF0 | 0x00 | 0x3D | 0x2A | 0x5C | 0x08 |
---|---|---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | u32_time | s8_timezone | ||||||
0xDF01A8 | 05 | UNIX时间:0xF01F | UNIX时间:0x5C2A3D00 2019/1/1 00:00:00 | 时区:-12~14 |
s8_timezone:1个字节,表示时区值,参数范围:-12~14。
Mesh设备定时协议
AttrType & Opcode
下行(精灵音箱/网关/APP->mesh设备) | 上行(mesh设备->精灵音箱/网关/APP) | |||
---|---|---|---|---|
Opcode | Attr Type | Opcode | Attr Type | |
设置单次定时 | 0xD101A8 | 0xF013 | 0xD301A8 | 0xF013 |
设置重复定时 | 0xD101A8 | 0xF014 | 0xD301A8 | 0xF014 |
设置循环定时 | 0xD101A8 | 0xF015 | 0xD301A8 | 0xF015 |
启用/禁用定时 | 0xD101A8 | 0xF016 | 0xD301A8 | 0xF016 |
删除定时 | 0xD101A8 | 0xF017 | 0xD301A8 | 0xF017 |
查询定时 | 0xD001A8 | 0xF018 | 0xD301A8 | 0xF018 |
查询定时记录 | 0xD001A8 | 0xF019 | 0xD301A8 | 0xF019 |
定时全量索引上报 | - | - | 0xD301A8 | 0xF020 |
定时完成事件上报 | - | - | 0xD301A8 | 0xF009 |
注意事项
- 设备端限定所支持的定时器个数最大为13条(多element协议设备,所有element共享上限),超过报定时数量已满错误码。
- 设备端限定所缓冲的定时器执行记录最大为4条(执行记录超出4条时,按时间顺序覆盖旧的)。
- 每条定时设置指令只允许包含1个定时器索引。
- 每条定时设置指令所包含的操作码数量最大允许的个数限定为4个。
- 设备端接收到定时设置指令后存储到Flash中,重启上电需要重新加载,且主动全量上报当前所有有效的定时器索引。
- 对于单次定时,定时完成后,设备端本地所存在的此定时器需要自动删除,且主动全量上报当前所有有效的定时器索引。
数据示例
设置单次定时(下行)
0xD1 | 0xA8 | 0x01 | 0x80 | 0x13 | 0xF0 | 0x81 | 0x01 | 0x3D | 0x2A | 0x5C | 0x00 | 0x01 | 0x01 | 0x00 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | u8_index | u32_time | u16_attr_type | u8_attr_para_len | attr_para | |||||||
0xD101A8 | 80 | 单次定时:0xF013 | 索引 | UNIX时间:0x5C2A3D00 2019/1/1 00:00:00 操作码数量:1组 | 开关:0x0100 | attr_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(上行)
0xD3 | 0xA8 | 0x01 | 0x80 | 0x13 | 0xF0 | 0x00 | 0x81 | 0x82 |
---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_index | u8_index | |||
0xD301A8 | 80 | 单次定时:0xF013 | 0x00:表示成功 | 索引1 | 索引2 |
0xD3 | 0xA8 | 0x01 | 0x80 | 0x13 | 0xF0 | 0x80 | 0x81 |
---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_index | |||
0xD301A8 | 80 | 单次定时: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个定时设置。
设置重复定时(下行)
重复定时(只支持按每周重复):
0xD1 | 0xA8 | 0x01 | 0x80 | 0x14 | 0xF0 | 0x81 | 0xE0 | 0x11 | 0xE0 | 0x01 | 0x06 | 0x00 | 0x01 | 0x01 | 0x00 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | u8_index | u16_time | s16_timezone | u8_schedule | attr_type | u8_attr_para_len | attr_para | ||||||
0xD101A8 | 80 | 重复定时:0xF014 | 索引 | 24H时间:0x01E0 早上8:00 操作码数量:1组 | 时区偏差:与UTC时间的差值为480分 | bit 0-6:对应周一-周日每周二、周三 | 开关:0x0100 | attr_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。
- u8_schedule:
bit 0-6:对应周一-周日。
对于schedule为0,表示为单次定时,如果定时时间小于当前时间,则为明天执行,否则为当天执行;
单次定时执行完成后,设备端本地所保存的此定时器需要删除,且主动全量上报当前所有有效的定时器索引。
- u8_attr_para_len:
1个字节,attr_para长度,表示后面attr_para数据的长度,最大长度为8个字节。
说明 每条设置定时指令,只可包含1个定时设置。
设置重复定时ACK(上行)
0xD3 | 0xA8 | 0x01 | 0x80 | 0x14 | 0xF0 | 0x00 | 0x81 | 0x82 |
---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_index | u8_index | |||
0xD301A8 | 80 | 重复定时:0xF014 | 0x00:表示成功 | 索引1 | 索引2 |
0xD3 | 0xA8 | 0x01 | 0x80 | 0x14 | 0xF0 | 0x80 | 0x81 |
---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_index | |||
0xD301A8 | 80 | 重复定时: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。
设置循环定时(下行)
0xD1 | 0xA8 | 0x01 | 0x80 | 0x15 | 0xF0 | 0x81 | 0xE0 | 0x01 | 0xD0 | 0x02 | 0xE0 | 0x01 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | u8_index | u16_time | u16_time | s16_timezone | ||||||
0xD101A8 | 80 | 循环定时:0xF015 | 索引 | 开始时间 24H时间:0x01E0 早上8:00 | 结束时间 24H时间:0x02D0 中午12:00 | 时区偏差:与UTC时间的差值为480分 | ||||||
定时器 |
0x06 | 0x1E | 0x10 | 0x00 | 0x01 | 0x01 | 0x01 | 0x1E | 0x10 | 0x00 | 0x01 | 0x01 | 0x00 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
u8_schedule | u16_duration | attr_type | u8_attr_para_len | attr_para | u16_duration | attr_type | u8_attr_para_len | attr_para | ||||
bit 0-6:对应周一-周日每周二、周三 | 运行时间:0x101e 30分钟 操作码数量:1组 | 开关:0x0100 | attr_para数据长度:0x01 | 打开:0x01 | 睡眠时间:0x101e 30分钟 操作码数量:1组 | 开关:0x0100 | attr_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(上行)
0xD3 | 0xA8 | 0x01 | 0x80 | 0x15 | 0xF0 | 0x00 | 0x81 | 0x02 |
---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_index | u8_index | |||
0xD301A8 | 80 | 循环定时:0xF015 | 0x00:表示成功 | 索引2 | 索引2 |
0xD3 | 0xA8 | 0x01 | 0x80 | 0x15 | 0xF0 | 0x80 | 0x81 |
---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_index | |||
0xD301A8 | 80 | 循环定时: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个定时设置。
启用/禁用定时(下行)
0xD1 | 0xA8 | 0x01 | 0x80 | 0x16 | 0xF0 | 0x81 | 0x02 |
---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | u8_index | u8_index | |||
0xD101A8 | 80 | 启用/禁用定时:0xF016 | 索引1,启用 | 索引2,禁用 |
- u8_index:
bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。
bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。
说明 每条启用/禁用定时信息可包含1个或多个定时索引,每个定时索引可以单独设置启用/禁用定时状态。
启用/禁用定时ACK(上行)
0xD3 | 0xA8 | 0x01 | 0x80 | 0x16 | 0xF0 | 0x00 | 0x81 | 0x02 |
---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_index | u8_index | |||
0xD301A8 | 80 | 启用/禁用定时:0xF016 | 0x00:表示成功 | 索引2 | 索引2 |
0xD3 | 0xA8 | 0x01 | 0x80 | 0x16 | 0xF0 | 0x85 | 0x81 |
---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_index | |||
0xD301A8 | 80 | 启用/禁用定时: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。
删除定时(下行)
0xD1 | 0xA8 | 0x01 | 0x80 | 0x17 | 0xF0 | 0x01 | 0x02 |
---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | u8_index | u8_index | |||
0xD101A8 | 80 | 删除定时:0xF017 | 索引1 | 索引2 |
- u8_index:
bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。
bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。
0xFF:表示删除所有定时器,其它值表示所需删除的定时索引。
说明 每条删除定时信息可包含1个或多个定时索引,索引index:0xFF表示删除所有定时器。
删除定时ACK(上行)
0xD3 | 0xA8 | 0x01 | 0x80 | 0x17 | 0xF0 | 0x00 | 0x81 | 0x02 |
---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_index | u8_index | |||
0xD301A8 | 80 | 定时记录:0xF017 | 0x00:表示成功 | 索引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。
查询定时(下行)
0xD0 | 0xA8 | 0x01 | 0x80 | 0x18 | 0xF0 | 0xFF | ||
---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | u8_type | |||||
0xD001A8 | 80 | 查询定时:0xF018 | 0xFF:表示查询所有定时器的索引; 其它值:表示查询相应定时器index的具体参数。 |
- u8_index:
bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。
bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。
0xFF:表示查询所有定时器的索引,回复查询所有定时索引ACK。
其它值,表示查询相应定时器index的具体定时信息,回复查询单个定时ACK,只支持单个index定时器查询。
查询定时ACK(上行)
查询所有定时索引ACK(上行)
0xD3 | 0xA8 | 0x01 | 0x80 | 0x18 | 0xF0 | 0x00 | 0xFF | 0x81 | 0x02 |
---|---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_type | u8_index | u8_index | |||
0xD301A8 | 80 | 定时记录:0xF018 | 0x00:表示成功 | 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(上行)
0xD3 | 0xA8 | 0x01 | 0x80 | 0x18 | 0xF0 | 0x00 | 0x01 | 0x81 | 0x01 | 0x3D | 0x2A | 0x5C | 0x00 | 0x01 | 0x01 | 0x00 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_type | u8_index | u32_time | attr_type | u8_attr_para_len | attr_para | |||||||
0xD301A8 | 80 | 查询定时:0xF018 | 0x00:表示成功 | 0x01:表示单次定时类型 | 索引 | UNIX时间:0x5C2A3D00 2019/1/1 00:00:00 操作码数量:1组 | 开关:0x0100 | attr_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状态码表。
查询定时记录(下行)
0xD0 | 0xA8 | 0x01 | 0x80 | 0x19 | 0xF0 | 0xFF |
---|---|---|---|---|---|---|
Opcode | TID | Attr Type | u8_index | |||
0xD301A8 | 80 | 定时信息:0xF019 | 0xFF:表示查询所有定时记录的索引。 其它值:表示查询相应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(上行)
0xD3 | 0xA8 | 0x01 | 0x80 | 0x19 | 0xF0 | 0x00 | 0xFF | 0x01 | 0x02 | 0x03 | 0x04 |
---|---|---|---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_type | u8_index | u8_index | u8_index | u8_index | |||
0xD301A8 | 80 | 定时记录:0xF019 | 0x00:表示成功 | 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(上行)
0xD4 | 0xA8 | 0x01 | 0x80 | 0x19 | 0xF0 | 0x00 | 0x01 | 0x01 | 0x00 | 0x3D | 0x2A | 0x5C |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Status | u8_type | u8_index | u32_time | ||||||
0xD301A8 | 80 | 定时记录:0xF019 | 0x00:表示成功 | 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状态码表。
全量定时索引上报(上行)
0xD3 | 0xA8 | 0x01 | 0x80 | 0x20 | 0xF0 | 0x81 | 0x82 |
---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | u8_index | u8_index | |||
0xD301A8 | 80 | 定时信息:0xF020 | 索引1 | 索引2 |
- u8_index:
bit 0-6:表示定时器索引号,取值范围为从0x01~0x7F,如上表数据0x81,低7位为0x01,表示定时器索引号为1。
bit7:表示定时器状态,0表示禁用,1表示启用,如上表数据0x81,最高位为1,表示定时器启用。
说明- 设备端所有定时器index都需要带上,如果index字段为NULL,表示本地没有定时。
- 在设备端配网成功,重启上电或定时完成时(如果涉及到本地定时器的删除),则需要主动上报此全量定时信息。
定时完成上报(上行)
0xD4 | 0xA8 | 0x01 | 0x80 | 0x09 | 0xF0 | 0x11 | 0x81 | 0x82 |
---|---|---|---|---|---|---|---|---|
Opcode | TID | Attr Type | Event | u8_index | u8_index | |||
0xD301A8 | 80 | 事件上报:(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分钟没有重新对时) |
0x80 | UNIX时间未设置(设备本地没有定时器) |
0x81 | UNIX时间未设置(设备本地存在定时器,定时异常) |
0x82 | 不支持的属性操作 |
0x83 | 属性操作参数错误 |
0x84 | 定时时间小于当前时间 |
0x85 | 未找到所指定的定时器索引 |
0x86 | 定时数量已满(定时数量超出13个) |
0x87 | 定时格式错误 |
- Status Code为0x00和0x01,都表示操作成功,但为0x01时,需要推送提示用户:由于设备已超出180分钟没有重新对时,设备定时会出现偏差。
- Status Code为0x80,表示设备UNIX时间未设置(设备本地没有定时器),一直未对时成功。
- Status Code为0x81,表示设备UNIX时间未设置(设备本地存在定时器,但定时异常)。