跳转至

ONENET

一、ONENET 简介

ONENET 是中国移动提供的物联网开放平台,支持设备接入、数据管理、应用开发、增值服务等能力,为城市、行业、生活等场景提供智能化解决方案。

二、本教程实现的功能概述

本文为大家介绍 Air700EMQ 如何接入 ONENET,并且会介绍如何进行一次完整的 ONENET 的上下行交互处理。

三、准备硬件环境

"工欲善其事,必先利其器"。在正式介绍本功能示例之前,需要先准备好以下硬件环境。

本文章使用 Air700EMQ 核心板做演示;

参考:硬件环境清单,准备以及组装好硬件环境。

四、准备软件环境

工欲善其事,必先利其器。在正式介绍本功能示例之前,需要先准备好以下软件环境。

在量产的项目硬件设计中,一般都是由主控 MCU 通过 UART 给 4G 模组发送命令实现具体的业务逻辑;

在本教程中,为了测试方便,没有使用主控 MCU;

而是使用了 PC 电脑上的一个串口工具 llcom给 4G 模组发送命令来实现演示功能;

1. Luatools工具

2. LLCOM 串口通信工具

3. 本教程使用的AT固件版本号是:AirM2M_700EMQ_V2019_LTE_AT,如果版本号不正确,参考:固件版本确认和烧录检查确认。

llcom 使用说明参考下图。

五、使用方法举例

5.1 确认开发板正常开机并联网正常

本次教程所用固件版本是 V2019,通过 luatools 烧录过固件后可以通过打印来判断设备情况,具体参考下图:

5.2 连接 ONENET 所需相关指令

点击链接查看合宙 4G 模组 MQTT 指令

六、云平台配置与效果展示

6.1 登录与创建产品

注意:ONENET 物联网平台经过很多次更新,老版 ONENET(多协议接入)-> 新版 ONENET->ONENET Studio->ONENET 物联网开放平台,本次示例为最新的 ONENET 物联网开放平台最为演示平台

需要登录官网平台概览 - ONENET 物联网平台 (10086.cn)注册 ONENET 账号并创建一个产品,后面我们会在此项目中进行演示

在完成一系列安全认证(绑定身份证并进行人脸验证)以后,将鼠标移动到左上角的"全部产品服务"即可看到物联网开放平台在哪,点击进入即可

在物联网管理平台,按下图三步,选择适合自己的产品定义,这里以智慧生活-> 家居安防-> 温湿度传感器为例,

选择智能化方式为"设备接入"

点击设备接入以后,创建产品,带* 的为必选项,接入协议必须选择"MQTT",数据协议可以选择"OneJson"也可以选择"自定义/透传",区别只是上传和下发数据的时候的格式,如果你选择了 OneJson,则上传数据和接受平台下发数据必须要按照 ONENET 定义的 josn 格式来上传/解析。

开发方案选“自定义方案”,回到“产品开发”页面,点击“设置物模型”,设置三个我们需要的属性

6.2 添加设备

产品创建好以后就该添加设备进对应的产品了。在产品列表中找到"设备管理",单击进去,设备名称选择所用模块的 IMEI,可以在模块屏蔽盖上查看·

6.3 设备注册

ONENET 平台对设备接入有严格的安全策略,需通过身份认证,目前平台提供 IMEI 和设备秘钥两种鉴权方式,我们这里介绍设备秘钥方式,即方案 2。

6.3.1 生成设备秘钥鉴权 Token

设备秘钥鉴权 Token 需要三个参数,产品 ID、设备名、设备秘钥。

Token 生成工具

点击下载 Token 生成工具

6.3.2 MQTT 工具测试 ONENET 连接

点击下载 llcom 串口测试工具

在 ONENET 平台查看推送结果

如下图,点击设备管理,点击“属性页”,选中“实时刷新”,可以看到最新数值更新

订阅主题示例

$sys/Sr8K21BjHb/868327075408114/thing/#

发布主题示例

$sys/Sr8K21BjHb/868327075408114/thing/property/post

JSON 报文示例

{
"id": "123",
 "version": "1.0",
   "params": {
    "voltage": {
      "value": 2392
    },
    "temp": {
    "value": 24.2
    },
    "Light": {
    "value": true
    }
  }

6.4 使用 MQTT 协议 用 AT 命令与 ONENET 建立连接

AT+CGREG?               //查询当前GPRS注册状态
+CGREG: 0,1             //<stat>=1,标识已经注册GPRS网络,而且是本地网
OK

AT+CGATT?               //查看当前GPRS附着状态
+CGATT: 1               //<state>=1,标明当前GPRS已经附着
OK

AT+MCONFIG=868327075408114,Sr8K21BjHb,version=2018-10-31&res=products%2FSr8K21BjHb%2Fdevices%2F868327075408114&et=98102959372322222&method=md5&sign=tbU%2FAsjnRkQw88SW6qKNmw%3D%3D              
                        //填写clientid、用户名、密码;可以带引号可以不带
OK

AT+MIPSTART="mqtts.heclouds.com","1883"               
                        //填写mqtt服务器的域名和端口号
OK
CONNECT OK

AT+MCONNECT=1,60        //建立mqtt会话;注意需要返回CONNECT OK后才能发此条指令,并且要立即发,否则就会被服务器踢掉
OK
CONNACK OK              //连接成功,成功后才能发布消息或者订阅消息

AT+MSUB="$sys/Sr8K21BjHb/868327075408114/thing/#",0        //订阅主题
OK
SUBACK

AT+MPUB="$sys/Sr8K21BjHb/868327075408114/thing/property/post",0,0,"{\\22id\\22:\\22123\\22,\\22version\\22:\\221.0\\22,\\22params\\22:{\\22voltage\\22:{\\22value\\22:2792},\\22temp\\22:{\\22value\\22:28.1},\\22Light\\22:{\\22value\\22:true}}}"                                                                                        //发布主题
OK
+MSUB: "$sys/Sr8K21BjHb/868327075408114/thing/property/post/reply",39 byte,{"id":"123","code":200,"msg":"success"}                      //收到服务器下发的消息,+MSUB的URC上报

_//最大4100个字节。字符串类型,须用双引号括住。_
_注:消息中内嵌的_
_双引号请用\22表达;_
_控制字符回车\r(0x0D)请用\0D表达;_
_控制字符换行\n(0x0A)请用\0A表达;_
_控制字符反斜杠(0x5C)请用\5C表达_
_如果是MCU发消息,可能需要用\\22,\\0D,\\0A,\\5C来表达,即\需要转义成\\_
_"{\\22temp\\22\\22:\\2225.00\\22}"_

AT+MDISCONNECT              //模块需要先关闭mqtt连接
OK

AT+MIPCLOSE                 //关闭tcp连接
OK

七、常见问题

7.1 发布主题转义字符格式错误

{\"id\":\"123\",\"version\":\"1.0\"\"params\":{\"voltage\":{\"value\":2292},\"temp\":{\"value\":23.2},\"Light\":{\"value\":false}}}

改正办法:双引号请用\22 表达