版本号 发布/更新日期 更新人员(部门/职位) 重要变更内容
V1.0 2018年11月21日 人工智能实验室-W实验室-IOT技术研发 编辑并发布初版
V2.0 2019年3月14日 人工智能实验室-W实验室-IOT技术研发 更新定时协议至V2
V2.01 2019年3月26日 人工智能实验室-W实验室-IOT技术研发 新增时区属性
V2.02 2019年7月4日 人工智能实验室-W实验室-IOT技术研发 新增对时设置

一.定时功能

定时功能需要包含以下模块:

  • UNIX时间模块
  • 定时&周期计划模块

模块都基于Vendor Model Server(0x01A80000)实现,设备需能存储40条定时信息。

二.UNIX时间

1 model & opcode

下行(天猫精灵->mesh设备) 上行(mesh设备->天猫精灵)
Opcode Attr Type Opcode Attr Type
设置时间 0xD101A8 0xF01F 0xD301A8 0xF01F
查询时间 0xD001A8 0xF01F
设置时区 0xD101A8 0xF01E 0xF01E
查询时区 0xD001A8 0xF01E
设置对时参数 0xD101A8 0xF01D 0xF01D
查询对时参数 0xD001A8 0xF01D
上行(mesh设备->天猫精灵) 下行(天猫精灵->mesh设备)
Opcode Attr Type Opcode Attr Type
请求更新时间 0xDE01A8 0xF01F 0xDF01A8 0xF01F

2 数据示例

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

2.1 设置时间(下行)

0xD1 0xA8 0x01 0x01 0x1F 0xF0 0x00 0x3D 0x2A 0x5C
Opcode TID Attr Type u32_time
0xD101A8 0x01 UNIX时间:0xF01F UNIX时间:0x5C2A3D00
2019/1/1 00:00:00

2.2 查询时间(下行)

0xD0 0xA8 0x01 0x02 0x1F 0xF0
Opcode TID Attr Type
0xD001A8 02 UNIX时间:0xF01F

2.3 时间信息(上行)

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

2.4 设置对时参数(下行)

0xD1 0xA8 0x01 0x01 0x1D 0xF0 0xB4 0x00 0x0A 0x0A
Opcode TID Attr Type uint16 period_time uint8 retry_delay uint8 retry_times
0xD101A8 0x01 对时参数:0xF01D 每隔180分钟进行一次对时请求 对时请求失败后10分钟后重试 对时请求重试次数不超过10次(包含第一次)

2.5 查询对时参数(下行)

0xD0 0xA8 0x01 0x02 0x1D 0xF0
Opcode TID Attr Type
0xD001A8 0x02 对时参数:0xF01D

2.6 对时参数(上行)

0xD3 0xA8 0x01 0x03 0x1D 0xF0 0xB4 0x00 0x0A 0x0A
Opcode TID Attr Type uint16 period_time uint8 retry_delay uint8 retry_times
0xD301A8 0x03 对时参数:0xF01D 每隔180分钟进行一次对时请求 对时请求失败后10分钟后重试 对时请求重试次数不超过10次(包含第一次)

2.7 设置时区(下行)

0xD1 0xA8 0x01 0x01 0x1E 0xF0 0x08
Opcode TID Attr Type s8_timezone
0xD101A8 0x01 时区:0xF01E 时区:-12~12

2.8 查询时区(下行)

0xD0 0xA8 0x01 0x02 0x1E 0xF0
Opcode TID Attr Type
0xD001A8 02 时区:0xF01E

2.9 时区信息(上行)

0xD3 0xA8 0x01 0x03 0x1E 0xF0 0x08
Opcode TID Attr Type s8_timezone
0xD301A8 03 时区:0xF01E 时区:-12~12

2.10 请求更新时间(上行)

0xDE 0xA8 0x01 0x04 0x1F 0xF0
Opcode TID Attr Type
0xDE01A8 04 UNIX时间:0xF01F

设备在设置时间后,每隔12~36小时主动发起一次时间更新请求。

2.11 更新时间(下行)

0xDF 0xA8 0x01 0x05 0x1F 0xF0 0x00 0x3D 0x2A 0x5C
Opcode TID Attr Type u32_time
0xDF01A8 05 UNIX时间:0xF01F UNIX时间:0x5C2A3D00
2019/1/1 00:00:00

三.定时&周期定时

1. model & opcode

下行(天猫精灵->mesh设备) 上行(mesh设备->天猫精灵)
Opcode Attr Type Opcode Attr Type
查询定时 0xD001A8 0xF010 0xD301A8 0xF010
设置定时 0xD101A8
设置周期定时 0xD101A8 0xF011 0xF011
删除定时 0xD101A8 0xF012 0xF012

2. 数据示例

2.1 查询定时(下行)

0xD0 0xA8 0x01 0x01 0x10 0xF0 0x01 0x02
Opcode TID Attr Type index1 index2
0xD001A8 01 定时:0xF010 索引1 索引2

注1:每条定时查询指令可包含1个或多个需查询定时索引
注2:index = 0xFF表示查询所有定时

2.2 设置定时(下行)

0xD1 0xA8 0x01 0x02 0x10 0xF0 0x01 0x01 0x3D 0x2A 0x5C 0x00 0x01 0x00 0x02 0x00 0x3D 0x2A 0x5C 0x00 0x01 0x00
Opcode TID Attr Type index u32 time attr_type attr_para index u32_time attr_type attr_para
0xD101A8 02 定时:0xF010 索引1 UNIX时间:0x5C2A3D01
2019/1/1 00:00:00
开关:0x0100 关闭:0x00 索引2 UNIX时间:0x5C2A3D00
2019/1/1 00:00:00
开关:0x0100 关闭:0x00
定时1 定时2

u32 time:
定时为精度到分钟到时间,故该数据到秒数部分(<60秒)表示该定时执行的操作码数量。
如上表数据0x5C2A3D01,对应十进制1546272001,计算1546272001/60取整25771200,25771200*60 = 154627200,对应时间为2019/1/1 00:00:00。
1546272001 mod 60 = 1,表示只有1组操作(开关)。
注:每条定时设置指令可包含1个或多个定时设置

2.3 定时信息(上行)

0xD3 0xA8 0x01 0x03 0x10 0xF0 0x01 0x00 0x3D 0x2A 0x5C 0x00 0x01 0x00 0x02 0x00 0x3D 0x2A 0x5C 0x00 0x01 0x00
Opcode TID Attr Type index u32_time attr_type attr_para index u32_time attr_type attr_para
0xD301A8 03 定时:0xF010 索引 UNIX时间:0x5C2A3D00
2019/1/1 00:00:00
开关:0x0100 关闭:0x00 索引2 UNIX时间:0x5C2A3D00
2019/1/1 00:00:00
开关:0x0100 关闭:0x00
定时1 定时2

注:每条定时信息可包含1个或多个定时信息

2.4 设置周期定时(下行)

0xD1 0xA8 0x01 0x04 0x11 0xF0 0x01 0xE0 0x11 0x06 0x00 0x01 0x00 0x02 0xE0 0x01 0x06 0x00 0x01 0x00
Opcode TID Attr Type index u16_time schedule attr_type attr_para index u16_time schedule attr_type attr_para
0xD101A8 04 周期定时:0xF011 索引1 24H时间:0x01E0
每天早上8:00
操作码数量:1组
bit 0-6对应周一-周日
每周二、周三
开关:0x0100 关闭:0x00 索引2 24H时间:0x01E0
每天早上8:00
bit 0-6对应周一-周日
每周二、周三
开关:0x0100 关闭:0x00
定时1 定时2

u16_time:
bit 0-11:表示24小时的分钟数,如上表数据0x11E0,低12位为0x01E0,对应十进制480,表示时间为早上8:00。
bit 12-15:表示该定时执行的操作码数量,如上表数据0x11E0,高4位为0x01,表示只有1组操作(开关)。
注:每条周期定时设置指令可包含1个或多个周期定时设置

2.5 周期定时信息(上行)

0xD3 0xA8 0x01 0x05 0x11 0xF0 0x01 0xE0 0x11 0x06 0x00 0x01 0x00 0x02 0xE0 0x01 0x06 0x00 0x01 0x00
Opcode TID Attr Type index u16_time schedule attr_type attr_para index u16_time schedule attr_type attr_para
0xD301A8 05 周期定时:0xF011 索引1 24H时间:0x01E0
每天早上8:00
操作码数量:1组
bit 0-6对应周一-周日
每周二、周三
开关:0x0100 关闭:0x00 索引2 24H时间:0x01E0
每天早上8:00
bit 0-6对应周一-周日
每周二、周三
开关:0x0100 关闭:0x00
定时1 定时2

注:每条周期定时信息可包含1个或多个定时信息,其他属性参照3.2.4

2.6 删除定时(下行)

0xD3 0xA8 0x01 0x07 0x12 0xF0 0x01 0x02
Opcode TID Attr Type index1 index2
0xD301A8 07 删除定时:0xF012 索引1 索引2

注1:每条定时取消信息可包含1个或多个定时取消索引

2.8 定时完成消息(上行)

0xD4 0xA8 0x01 0x08 0x09 0xF0 0x11 0x01
Opcode TID Attr Type Event index
0xD401A8 08 事件上报:(0xF009) 定时完成 定时索引

2.9 错误消息(上行)

0xD3 0xA8 0x01 0x09 0x00 0x00 0x10 0xF0 0x80 0x01
Opcode TID Attr Type Attr Type Error Code index
0xD301A8 09 错误码:(0x0000) 定时:0xF010 错误类型 定时索引

Error Code表:

Attr Type Error Code 错误说明
0xF01F 0x80 UNIX时间未设置
0xF010 0x80 UNIX时间未设置
0x82 不支持的属性操作
0x83 属性操作参数错误
0x84 定时时间小于当前时间
0x85 未找到需要查询的定时索引
0x86 定时数量已满
0xF011 0x80 UNIX时间未设置
0x82 不支持的属性操作
0x83 属性操作参数错误
0x85 未找到需要查询的定时索引
0x86 定时数量已满
0x87 周期定时格式错误
0xF012 0x85 未找到需要删除的定时索引

2.10 定时冲突覆盖规则

如果存在多个定时的时间点存在冲突,后下发的定时指令生效。
比如本来存在一个每天8点关闭的定时;此时新增一个明天8点打开的定时,则明天8点执行打开操作,之后每天依然执行关闭操作。
反之比如本来存在一个明天8点打开的定时,此时新增一个每天8点关闭的定时,则之后每天执行关闭操作。
在该情况下只需上报具体被执行到到定时事件。