Cat.1连接OneNet平台测试
说明:本文档参考OneNet开发文档
https://open.iot.10086.cn/doc/mqtt/book/get-start/login.html
1、OneNet平台的操作流程
账户注册
登录OneNet平台https://open.iot.10086.cn/
,点击首页右上角的“注册”按钮,注册账号,填写用户名、用户密码、有效手机号码,点击获取验证码,查看短信验证码,并完成注册;完成后登录,登录后,点击右上角“开发者中心”,进入OneNET服务控制台。
账户认证
个人用户可以不用认证,直接用于测试就好,因此跳过该步骤
创建产品
在OneNET服务控制台,通过左边栏产品导航进入 MQTT物联网套件,点击右上角的 添加产品,在弹出页面中按照提示填写产品的基本信息,进行产品创建
需要记录产品ID,后续会使用
添加设备
点击产品列表中产品信息,进入产品详情,点击左侧 设备列表,进入设备列表,点击右侧 添加设备,编辑设备名称 与 设备描述,点击 添加,完成添加设备
1、需要记录设备名称和设备key
2、设备名称为用户自定义设备唯一识别码,该产品下唯一
3、批量创建设备时可以使用IMEI作为设备名称
2、MQTT.fx连接测试
MQTT客户端下载链接:http://www.jensd.de/apps/mqttfx/1.7.1/
客户端配置
打开MQTT.fx客户端,进入客户端配置页面,
配置内容说明
图片标注解析:
1、新建一个配置文件
2、配置文件名称自定义
3、OneNET平台MQTT接入服务地址,参考https://open.iot.10086.cn/doc/mqtt/book/device-develop/manual.html?h=183.230.40.96
4、必须为设备名称
5、username必须为产品ID,password必须是token,token算法参考:https://open.iot.10086.cn/doc/mqtt/book/manual/auth/token.html
注意问题点:
1、OneNet-token计算工具V1.0.0版本软件中的et为时间戳
2、token算法示例-python中没有设备名称,因此得到的token不能使用,需要简单修改下python代码,如下图
连接OneNet并收发数据
连接
注意事项:
1、点击连接后马上结束连接,可能原因是token失效,解决方法:重新生成Token,并重新配置
连接成功效果如下两张图:
订阅和发布
相关知识参考MQTT协议
向OneNet平台发布消息
参考OneNet开发文档:https://open.iot.10086.cn/doc/mqtt/book/device-develop/topics/dp-topics.html
系统topic | 用途 | QoS | 可订阅 | 可发布 |
---|---|---|---|---|
$sys/{pid}/{device-name}/dp/post/json | 设备上传数据点 | 0/1 | √ | |
$sys/{pid}/{device-name}/dp/post/json/accepted | 系统通知"设备上传数据点成功" | 0 | √ | |
$sys/{pid}/{device-name}/dp/post/json/rejected | 系统通知"设备上传数据点失败" | 0 | √ |
1、订阅接收通知主题,如下图:
2、发布主题,如下图:
3、发布后OneNet平台回复确认内容,如下图,测试完成
注意问题:
必须先订阅接收通知主题,否则发布后就不会收到响应结果
接收OneNet平台命令
参考OneNet开发文档:https://open.iot.10086.cn/doc/mqtt/book/device-develop/topics/cmd-topics.html
1、MQTT模拟工具订阅主题
通过通配符的方式进行订阅$sys/{pid}/{device-name}/cmd/request/+
,或者$sys/{pid}/{device-name}/cmd/#
2、OneNet平台发送命令
3、MQTT模拟工具回复
注意:
回复时CMDID必须与下发的CMDID保持一致
4、命令回复结果通知
3、Cat.1的连接测试
注意,本例使用AT指令测试
确认Cat.1驻网成功
使用AT+CEREG?
和AT+CGACT=1,1
指令确认驻网情况,如下图:
测试MQTT连接
参考模块资料:ML305_OneMO_MQTT用户手册
设置 MQTT 连接参数并建立连接:AT+MMQTTCON
发→◇AT+MMQTTCON=0,“test.mosquitto.org”,1883,“MyClient1”
收←◆AT+MMQTTCON=0,“test.mosquitto.org”,1883,“MyClient1”
OK
收←◆
+MMQTTURC: 0,“connack”,0,0
+MMQTTURC: 0,“state”,0
+MMQTTCON: 0,0
订阅 MQTT 主题
发→◇AT+MMQTTSUB=0,"/TestTopic"
收←◆AT+MMQTTSUB=0,"/TestTopic"
OK
收←◆
+MMQTTURC: 0,“suback”,2,0
+MMQTTSUB: 0,0
发布 MQTT 消息
发→◇AT+MMQTTPUB=0,"/TestTopic “,10
收←◆AT+MMQTTPUB=0,”/TestTopic ",10
收←◆+MMQTTPUB: 0,0,10
心跳包
[14:37:25.453]收←◆+MMQTTURC: 0,“pingresp”
[14:38:25.583]收←◆+MMQTTURC: 0,“pingresp”
断开 MQTT 连接
[14:38:55.615]发→◇AT+MMQTTDISCON=0
[14:38:55.620]收←◆AT+MMQTTDISCON=0
OK
[14:38:56.774]收←◆
+MMQTTDISCON: 0,0
连接OneNet
连接
发→◇AT+MMQTTCON=0,“183.230.40.96”,1883,“hr_test”,“391834”,“version=2018-10-31&res=products%2F391834%2Fdevices%2Fhr_test&et=1608019025&method=sha1&sign=WInDmvEUzvDHIFz1LCNFgTJ0y0E%3D”
OK
收←◆
+MMQTTURC: 0,“connack”,0,0
+MMQTTURC: 0,“state”,0
+MMQTTCON: 0,0
注意事项:
1、“hr_test”:设备名
2、“391834”:产品ID
3、“vers……3D”:password,根据token算法计算,有有效期
订阅
发→◇AT+MMQTTSUB=0,"$sys/391834/hr_test/dp/post/json/accepted"
OK
收←◆
+MMQTTURC: 0,“suback”,2,0
+MMQTTSUB: 0,0
发布
方式1:使用 <CTRL+Z>发送数据
AT+MMQTTPUB=0,"$sys/391834/hr_test/dp/post/json",0
>{“id”: 123,“dp”: {“temperatrue”: [{“v”: 50,}],“power”: [{“v”: 5.6,}]}}
<CTRL+Z>发送数据
OK
收←◆
+MMQTTPUB: 0,0,72
收←◆+MMQTTURC: 0,“publish”,0,0,0,0,41,10
$sys/391834/hr_test/dp/post/json/accepted
{“id”:123}
方式2:用户输入发送长度
断开 MQTT 连接
发→◇AT+MMQTTDISCON=0
OK
收←◆+MMQTTDISCON: 0,0