IoT开放平台
开发指南

版本号

发布/更新日期

更新人员(部门/职位)

重要变更内容

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设备->天猫精灵)

OpcodeAttr TypeOpcodeAttr Type

设置时间

0xD101A80xF01F0xD301A80xF01F

查询时间

0xD001A80xF01F

设置时区

0xD101A80xF01E0xF01E

查询时区

0xD001A80xF01E

设置对时参数

0xD101A80xF01D0xF01D

查询对时参数

0xD001A80xF01D

 

上行(mesh设备->天猫精灵)

下行(天猫精灵->mesh设备)

OpcodeAttr TypeOpcodeAttr Type

请求更新时间

0xDE01A80xF01F0xDF01A80xF01F

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_delayuint8 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_delayuint8 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设备->天猫精灵)

OpcodeAttr TypeOpcodeAttr Type

查询定时

0xD001A80xF010

0xD301A8

0xF010

设置定时

0xD101A8

设置周期定时

0xD101A80xF0110xF011

删除定时

0xD101A80xF0120xF012

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

周期定时格式错误

0xF0120x85

未找到需要删除的定时索引

2.10 定时冲突覆盖规则

如果存在多个定时的时间点存在冲突,后下发的定时指令生效。

比如本来存在一个每天8点关闭的定时;此时新增一个明天8点打开的定时,则明天8点执行打开操作,之后每天依然执行关闭操作。

反之比如本来存在一个明天8点打开的定时,此时新增一个每天8点关闭的定时,则之后每天执行关闭操作。

在该情况下只需上报具体被执行到到定时事件。