Skip to content

物模型格式数据业务交互示例

场景描述

本章节指导用户通过 AT命令 接入方案进行物模型数据格式的业务交互。

涉及指令

指令名称功能描述
AT+QIOTCFG配置可选参数
AT+QIOTMODELTD发送物模型数据至平台
AT+QIOTMODELRD读取平台下发的物模型数据

提示:详情请参考数据业务交互 相关命令

操作步骤

平台侧

一、登录开发者中心

登录开发者中心,未注册可单击立即注册完成注册。

二、创建产品

创建产品详情请参考 创建产品

设备侧

物模型数据交互

物模型是开发者中心 针对物理实体设备在开发者中心建立的数据模型,主要用于描述产品的功能,从而方便数据的解析。设备成功接入平台后,通过 AT+QIOTMODELTDAT+QIOTMODELRD 指令来实现与开发者中心的数据交互。

功能ID功能类型功能名称数据类型数值范围引用关系示例
1属性开关BOOLtrue - 开启;
false - 关闭;
{"1":true}
2属性电池电量INT0~100{"2":100}
3属性精油剩余容量FLOAT0~300{"3":25.6}
4属性工作模式ENUM1~HPC
2~CPL
{"4":1}
5属性设备编号TEXT0~20{"5":"ZWS"}
6属性时间DATE--{"6":1659664758817}
7属性结构体STRUCT--功能ID:8,9{"7":{"8":true,"9":100}}
8(父ID:7)参数 {$参数名称}BOOLtrue - 开启;
false - 关闭;
--
9(父ID:7)参数 {$参数名称}INT0~100--
10属性整型数组ARRAY最大数量:10,元素类型:INT{"10":[10,20,30]}
11属性结构体数组ARRAY功能ID:12,13{"11":[{"12":true,"13":100},{"12":false,"13":98}]}
12(父ID:11)参数 {$参数名称}BOOLtrue - 开启;
false - 关闭;
--
13(父ID:11)参数 {$参数名称}INT0~100--

开发建议:上报频率不宜过快,建议采用灵活上报的形式:
若是控制类的数据(如开关、工作模式),则可采用变化上报的方式。例如平台或者APP下发控制或者通过其他方式改状态值,设备再进行上报到平台端。
若是实时变化类的数据(如电流、温度值),则可采用定时上报。例如每隔5分钟设备定时上报一次到平台端。

示例一(主动发送物模型JSON格式数据)

1、将数据格式设置为JSON格式

MCU可通过 AT+QIOTCFG="tsl"[,<tsl_mode>] 指令配置物模型数据格式,若不配置则出厂默认为 0:TTLV格式。

c
[TX]AT+QIOTCFG="tsl",1

[RX]AT+QIOTCFG="tsl",1

OK

2、发送JSON格式物模型数据

发送物模型数据149字节 {"1":true,"2":100,"3":25.6,"4":1,"5":"ZWS","6":1659664758817,"7":{"8":true,"9":100},"10":[10,20,30],"11":[{"12":true,"13":100},{"12":false,"13":98}]},QoS级别为1,则执行 AT+QIOTMODELTD=1,149,待响应 > 后,MCU发送物模型数据。

c
[TX]AT+QIOTMODELTD=1,149
[RX]>
[TX]{"1":true,"2":100,"3":25.6,"4":1,"5":"ZWS","6":1659664758817,"7":{"8":true,"9":100},"10":[10,20,30],"11":[{"12":true,"13":100},{"12":false,"13":98}]}
[RX]OK

[RX]+QIOTEVT: 4,10210

提示:若QoS级别为1或以上,模块成功发送数据后将响应OK并上报+QIOTEVT: 4,10210;若QoS级别为0,模块成功发送数据后将响应OK,不上报事件。

示例二(根据PkgID响应平台读取数据)

1、开发者中心批量读取物模型实时数据

在开发者中心 设备信息 详情页的 设备调试 中,点击 批量读取 按钮可一键批量读取物模型属性数值。

2、模组收到查询指令并向MCU打印回调事件

  • 回调事件解析:+QIOTEVT: 5,10211,1,1,2,3,4,5,6,7,10,11

    5 :收到下行业务事件。

    10211 :收到平台读取物模型属性事件Code。

    1 :请求包 ID,该参数仅在模块接收物模型数据响应时有效。

    1,2,3,4,5,6,7,10,11 :需要读取物模型属性的ID号,分别是ID1、2、3、4、5、6、7、10、11。

3、MCU根据回调事件判断回复的PkgID与物模型ID实时数据

c
[TX]AT+QIOTMODELTD=1,149,7
[RX]>
[TX]{"1":true,"2":100,"3":25.6,"4":1,"5":"ZWS","6":1659664758817,"7":{"8":true,"9":100},"10":[10,20,30],"11":[{"12":true,"13":100},{"12":false,"13":98}]}
[RX]OK

[RX]+QIOTEVT: 4,10210

提示:若QoS级别为1或以上,模块成功发送数据后将响应OK并上报+QIOTEVT: 4,10210;若QoS级别为0,模块成功发送数据后将响应OK,不上报事件。

示例三(主动上报物模型告警事件)

功能ID功能类型功能名称数据类型数值范围引用关系
14事件剩余精油不足BOOL输出功能ID:15,16
15(父ID:14)参数电池电量INT0~100
16(父ID:14)参数精油剩余容量FLOAT0~300

MCU使用 AT+QIOTMODELTD 上报物模型事件,待模块响应“>”后,MCU再发送组成后的物模型数据。

c
[TX]AT+QIOTMODELTD=2,28
[RX]>
[TX]{"14":{"15":100,"16":32.89}}
[RX]OK

+QIOTEVT: 4,10210

提示:若QoS级别为1或以上,模块成功发送数据后将响应OK并上报+QIOTEVT: 4,10210;若QoS级别为0,模块成功发送数据后将响应OK,不上报事件。

示例四(非缓存模式读取平台下发的物模型数据)

功能ID功能类型功能名称数据类型数值范围引用关系
17服务服务BOOL输出功能ID:18
18(父ID:17)输入参数模式ENUM0~2

若不配置则出厂默认为 0:关闭缓存模式。

1、开发者中心下发物模型服务

在开发者中心 设备调试 页面,第一步点击 服务调用,第二步选择要下发的服务物模型,第三步点击左下角的 发送指令 即可下发物模型服务给终端。

2、模组收到服务下发指令并向MCU打印回调事件与数据

模组收到服务指令后,会主动向MCU打印回调事件 +QIOTEVT: 5,10210,15 与下发的服务物模型数据 {"17":{"18":1}}

c
[RX]+QIOTEVT: 5,10210,15
{"17":{"18":1}}

示例五(缓存模式读取平台下发的物模型数据)

1、打开下行数据缓存模式

MCU可通过 AT+QIOTCFG="buffer"[,<buffer_mode>] 指令配置下行数据缓存模式。

c
[TX]AT+QIOTCFG="buffer",1

[RX]AT+QIOTCFG="buffer",1

OK

2、开发者中心下发物模型服务

在开发者中心 设备调试 页面,第一步点击 服务调用,第二步选择要下发的服务物模型,第三步点击左下角的 发送指令 即可下发物模型服务给终端。

3、模组收到服务下发指令并向MCU打印回调事件

  • 回调事件解析:+QIOTEVT: 5,10210

    5 :收到下行业务事件。

    10210 :收到平台读取物模型服务事件Code。

4、MCU根据回调事件查询服务

c
[TX]AT+QIOTMODELRD=512

[RX]AT+QIOTMODELRD=512

+QIOTMODELRD: 15,0,0
{"17":{"18":1}}
OK