文章目录
前言
如果同学已经看过我上一章的内容的话,这章就会非常简单。没看过我上一章的同学请先移步到:
物联网开发第一站:使用MQTTX调试软件接入移动OneNet物联网平台
本章主要讲如何使用物联网模块连接移动onenet与平台
用到工具:
1.windows10个人电脑
2.串口调试助手
3.移远EC800Z物联网模块+物联网卡或普通手机卡
4.USB转TTL工具
同学们如果没有EC800Z模块的话可以用其它模块代替,但要注意模块需要带有MQTT协议的固件,购买模块的时候可以咨询技术支持或售货员。以我用过的几款不同的4G模块经验来讲他们的MQTT指令格式大致是一样的,本章主角是EC800Z因为我手头只有这个了。
一、MQTT模块指令介绍
直接看文章抬头指令集,这里大致讲解一下本章使用的指令和注意事项,避免踩坑。
如果同学们对这些AT指令已经有所了解可直接进入本文 第二章 AT联网流程
1.AT+QMTCFG
AT+QMTCFG指令是用来配置MQTT协议的一些基本参数,包括保活时间、遗嘱消息、MQTT协议版本、SSL模式等等
这里我们只用设置保活时间和MQTT协议版本号就可以了。
需要注意AT+QMTCFG指令要在联网之前设置才会有效
模块默认的MQTT版本是3,刚开始测试连接MQTT器时一直报错,后来才发现是协议版本不适配,所以要提前设置协议版本。
2. AT+QMTOPEN
AT+QMTOPEN=<client_idx>,<host_name>,
该指令是用来连接服务器的,一共三个参数分别为 标识符、IP/域名、端口号
3. AT+QMTCONN
AT+QMTCONN=<client_idx>,[,,]
用来连接MQTT服务器,一共三个参数:
标识符:0-5 和前面一样
设备编号:onenet设备的ID名称
登录名:onenet的产品名称
登录密码:用token工具计算出来的字符串详见物联网开发第一站:使用MQTTX调试软件接入移动OneNet物联网平台
上线成功后返回 0,0,0
打开onenet查看设备状态
4. AT+QMTSUB
AT+QMTSUB=<client_idx>,,,[,,…]
参数分别为
标识符:0-5同上
消息标识符:只有当=0 时,该参数值为0
订阅主题 $sys/h5AnXVLTt8/LWJ2024060101/thing/property/post/reply
消息质量:0 最多发送一次、1 最少发送一次、2 只发送一次
5.AT+QMTPUBEX
AT+QMTPUBEX=<client_idx>,,,,,
发布主题消息
一共6个参数:
标识符:0-5同上
消息标识符:只有当=0 时,该参数值为0
消息质量:0 最多发送一次、1 最少发送一次、2 只发送一次
服务器是否保存消息:0 不保存,1 保存
主题名称:$sys/h5AnXVLTt8/LWJ2024060101/thing/property/post
消息长度:字节数:例如{“id”:“2173255418”,“version”:“1.0”,“params”:{“level”:{“value”:40}}}一共67个字节包括转义符
指令发送成功后,模块会回复‘>’接下来就是要发送消息主体了
{“id”:“2173255418”,“version”:“1.0”,“params”:{“level”:{“value”:40}}}
发送成功回复
+QMTPUBEX: 0,0,0
发布成功后打开onenet进入设备详情界面查看参数,记得打开实时刷新按钮,上报数据会定时刷新
二、完整AT联网流程
1.直接上干货
[2024-06-17 15:22:32.409]# SEND ASCII>
AT
[2024-06-17 15:22:32.513]# RECV ASCII>
AT
OK
[2024-06-17 15:22:33.313]# SEND ASCII>
ATE0
[2024-06-17 15:22:33.419]# RECV ASCII>
ATE0
OK
[2024-06-17 15:22:34.961]# SEND ASCII>
AT+QMTCFG="keepalive",0,30
[2024-06-17 15:22:35.073]# RECV ASCII>
OK
[2024-06-17 15:22:38.113]# SEND ASCII>
AT+QMTCFG="version",0,4
[2024-06-17 15:22:38.220]# RECV ASCII>
OK
[2024-06-17 15:23:09.825]# SEND ASCII>
AT+QMTOPEN=0,"mqtts.heclouds.com",1883
[2024-06-17 15:23:10.062]# RECV ASCII>
OK
[2024-06-17 15:23:10.374]# RECV ASCII>
+QMTOPEN: 0,0
[2024-06-17 15:23:14.521]# SEND ASCII>
AT+QMTCONN=0,"LWJ2024060101","h5AnXVLTt8","把生成的token放进来"
[2024-06-17 15:23:14.640]# RECV ASCII>
OK
[2024-06-17 15:23:14.953]# RECV ASCII>
+QMTCONN: 0,0,0
[2024-06-17 15:23:29.600]# SEND ASCII>
AT+QMTSUB=0,1,"$sys/h5AnXVLTt8/LWJ2024060101/thing/property/post/reply",0
[2024-06-17 15:23:29.717]# RECV ASCII>
OK
[2024-06-17 15:23:29.985]# RECV ASCII>
+QMTSUB: 0,1,0,0
[2024-06-17 15:23:36.394]# SEND ASCII>
AT+QMTPUBEX=0,0,0,0,"$sys/h5AnXVLTt8/LWJ2024060101/thing/property/post",67
[2024-06-17 15:23:36.511]# RECV ASCII>
>
[2024-06-17 15:23:40.489]# SEND ASCII>
{"id":"2173255418","version":"1.0","params":{"level":{"value":40}}}
[2024-06-17 15:23:40.607]# RECV ASCII>
OK
[2024-06-17 15:23:40.730]# RECV ASCII>
+QMTPUBEX: 0,0,0
[2024-06-17 15:23:40.919]# RECV ASCII>
+QMTRECV: 0,0,"$sys/h5AnXVLTt8/LWJ2024060101/thing/property/post/reply","{"id":"2173255418","code":200,"msg":"success"}"
2.对比MQTTX
为方便理解附上一张对比图,左边是使用模块AT指令发送与接收,右边是MQTTX调试软件的发送与接收
总结
以上就是今天要讲的内容,欢迎大家指点
下一篇:使用stm32单片机与EC800Z 4G模块实现智能温湿度传感器入网