????????Onenet官网提供的帮助文档很多,存在好几种MQTT服务接口,但是阅读起来很容易混乱,有点不方便。官方回复是历史遗留问题,后续接入以最新物联网开发平台为推荐,为此本文用一篇讲述最新ONENET的物联网开发平台MQTT基于物理模型的接入方式。如何在平台上创建产品,并且使用客户端MQTT.x上传数据,通过平台下发设置等操作。
一、打开此链接中移坤灵 - 中国移动物联网开放平台,注册/登陆一个OneNET账号,来到OneNET首页;
二、登录后点击页面右上角开发者中心,进入操作页面;
三、进入开发者中心后台,把鼠标移动到页面左上角全部产品服务,在下拉菜单栏里点击物联网开放平台;
四、进入平台后,点击左侧菜单栏产品开发,进入界面后再点击右侧创建产品;
五、选择一个产品品类,列表中的列表时平台对已有对象做了基本的物理模型构建,提供了一个标准模板,这里按需要自己选择,比如我们选择一个温湿度传感器;
六、因为我手上的产品采用的是4G通信,Mqtt协议,JSON自定义格式,所以我们如下这么选择;
七、创建好了,选择产品开发;
八、创建一个物理模型,也可以快递导入已经创建好的模型。物理模型简单理解就是对产品上报的Json格式做的一个解析,通过创建一个物理模型能快速面板化产品数据,以及下发指令。
九、添加一个自定义功能点,功能点类型有3种,属性(解析上报的信息),服务(相当于结构体),事件(特殊数据包,如告警);标识符就是Json关键字,这里我们创建一个温度属性,各一个可读可写的权限,编辑好保存。
十、回到产品开发,点击设备管理,进入到下面这个界面,添加一个设备。
十一、设备名称用于区分设备,建议使用唯一ID。
十二、进入到详情,复制设备密钥与产品ID,这两个参数是用来生成MQTT三要素的。
? ? ? ?下载工具生成Password?https://open.iot.10086.cn/doc/iot_platform/images/tools/token.exe?,根据设备密钥(Key)与产品ID,生成Password,其中method按需求选择,这里选sha1。
到这里我们获取到了的信息有:
MQTT版本:V3.1.1
IP地址:mqtts.heclouds.com:1883? , Clientid:123456? , Username:jgds5kmEYx
Password:version=2018-10-31&res=products%2Fjgds5kmEYx%2Fdevices%2F123456&et=1703999380&method=sha1&sign=1OGdLg%2BhaJda3xLY1LZ%2B7icC9rY%3D
免费下载工具链接:MQTTX 下载,把上述参数填入下面这个界面,点击Connect。此时平台显示在线。
1.获取相应主题,2.获取报文内容格式,3.上报操作设置。
第一步,获取相应主题,我们回到产品开发,点击下一步。
????????在Topic管理里面有个基于物理模型的界面,其中直连上报属性的订阅与发布主题,就是我们上报需要用到的上报主题,其中直连设备获取期望值的订阅与发布主题,就是我们下发设置需要用到的主题。把题主按格式拼接好如下:
直连设备上报属性:? ? ? ? ? $sys/jgds5kmEYx/123456/thing/property/post
直连设备上报属性响应:? ?$sys/jgds5kmEYx/123456/thing/property/post/reply
第二步,获取报文内容格式。
参数 | 类型 | 说明 |
---|---|---|
id | String | 消息id号,用户自定义,String类型的数字,长度限制13位。 |
version | String | 物模型版本号,可选字段,不填默认为1.0 |
params | JsonObject | 请求参数,用户自定义,标准json格式。如以上示例中,设备上报属性TEMP。具体属性信息,包含属性上报时间(time)和上报的属性值(value)。 |
time | Long | 属性值生成时间。该参数为可选字段,到豪秒级。根据您的业务场景决定消息中是否带时间戳。如果消息频繁,需根据时间戳判断消息顺序,建议消息中带有时间戳。 |
value | Object | 上报的属性值 |
{
"id": "1",
"version": "1.0",
"params": {
"TEMP": {
"value": 21.6,
"time": 1703995343000
}
}
}
第三步,上报操作设置。?
填入相应的主题内容,收到属性响应Code:200;表示上报数据成功。
我们去到设备管理,属性就能看到数据了。
一样的,1.获取相应主题,2.获取报文内容格式,3.下发操作设置。
第一步,相同的方法获取到以下几个主题:
直连设备获取期望值:? ? ? ?$sys/jgds5kmEYx/123456/thing/property/desired/get
直连设备获取期望值响应:$sys/jgds5kmEYx/123456/thing/property/desired/get/reply
第二步,获取报文内容格式。?
{
"id" : "2",
"version":"1.0",
"params" : [
"TEMP"
]
}
参数 | 类型 | 说明 |
---|---|---|
id | String | 消息id号,用户自定义,String类型的数字,长度限制13位。 |
version | String | 物模型版本号,可选字段,不填默认为1.0 |
params | JsonObject | 获取属性期望的标识符列表。 |
第三步,下发操作设置。?
按下图操作,填写一个下发值以后,点击下面有个属性期望值设置的按键。那么平台将会在设置发布获取期望值的主题内容时,就会推送这个消息给设备。
回到MQTT.x工具,把发布主题换成$sys/jgds5kmEYx/123456/thing/property/desired/get,就能收到平台发布我们刚设置的值啦。
?
?????????当然平台还有很多实现其他功能的相应主题,我们可以看这个官方链接了解使用,?查看此链接获取OneNET - 中国移动物联网开放平台 (10086.cn),这里就不多讲了。好了,如果我的文章帮助到你,请点个赞吧,感谢(●'?'●)。