【安信可NB-IoT开发板EC-01F-Kit】四、串口MQTT联网及信息收发测试
<p>物联网的应用中,MQTT传输非常普遍,自己以及的作品也大多采用了MQTT进行传输。</p><p>首先,打开NB-IOT的AT手册,看到3.5 MQTT命令这一部分</p>
<p></p>
<p>命令不多,没有找到参考的实例,只能凭着以前的经验一条条测试了</p>
<p>试了几遍后,成功实现了MQTT的订阅和发布</p>
<p>在测试MQTT的时候,用了以前经常用的MQTT模拟器paho,下面把paho的过程贴上来</p>
<p> paho连接MQTT的流程比较简单,1、联网;2、订阅;3发布。(4、断开)</p>
<p>配合NB-IOT,实现MQTT信息的订阅和发布</p>
<p></p>
<p>整个MQTT的测试都是直接用串口命令实现的。具体步骤如下:</p>
<p>1、NB-IOT模块联通互联网</p>
<p>主要包括 1)、PS附着,AT命令:AT+CGATT=1</p>
<p> 成功后反馈 OK</p>
<p> 2)、PDP激活,AT命令:AT+CGACT=1</p>
<p> 成功后反馈 OK</p>
<p>2、打开MQTT客户端连接,(感觉应该叫MQTT连接)</p>
<p> AT命令为: AT+ECMTOPEN=0,"39.104.x.x",1885</p>
<p> 直接用的IP4连接,不知道IP6下该怎么连接?</p>
<p> 成功后反馈 +ECMTOPEN: 0,0</p>
<p> 第一个0,应该是tcpconnectID,MQTT套接字标识符。 </p>
<p>3、创建客户端连接,(感觉叫客户端登录比较合适)</p>
<p> AT命令为: AT+ECMTCONN=0,"test12345"</p>
<p> 其中的 test12345 是客户端ID,ClientID,客户端标识符,最大48个字节</p>
<p> 成功后反馈 +ECMTCONN: 0,0,0</p>
<p> 第1个0,表示tcpconnectID,MQTT套接字标识符;第2个0,<result> </p>
<p> 第3个0,表示<ret_code> 服务器返回的连接结果</p>
<p> </p>
<p>4、订阅MQTT主题</p>
<p> AT命令为: AT+ECMTSUB=0,1023,"NBIOT54321",0</p>
<p>第1个0为tcpconnectID,MQTT套接字标识符。</p>
<p>1023为<msgID> 整型,报文的报文标识。 范围是1-65535。</p>
<p>😓,用了这么久的MQTT,这个报文标识的作用,还是不明确。感觉是不是跟报文长度有关?哪位E友辛苦普及下哈。</p>
<p>后面的NBIOT54321为订阅的主题,<topic> 字符串类型,客户想要订阅或取消订阅的主题。 最大长度为255个字节。</p>
<p>后面的0为QOS,<qos> 整型,消息QoS,可以为0,1或2</p>
<p> 成功后反馈 +ECMTSUB: 0,1023,0,1</p>
<p> 其中,result,和value</p>
<p> 5、订阅等待接收该主题的信息</p>
<p>成功接收到信息后,</p>
<p>+ECMTRECV: 0,0,"NBIOT54321",test for sub</p>
<p>各个数据的含义都能对应上,只是msgID为0,(是不是msgID为0是该主题的广播信息?)</p>
<p> 6、MQTT发布信息</p>
<p>AT命令为:AT+ECMTPUB=0,0,0,0,"NBIOT123","TEST For NB-IOT MQTT"</p>
<p> 消息发布成功后反馈:</p>
<p>+ECMTPUB: 0,0,0</p>
<p>最后1个0是result</p>
<p> 7、关闭MQTT连接</p>
<p>AT命令:AT+ECMTCLOSE=0</p>
<p>成功后反馈 +ECMTCLOSE: 0,0</p>
<p> MQTT的测试还算顺利,通过模拟器的配合,整个发布订阅的流程比较清晰。</p>
<p> </p>
<p>接收是异步的吗?</p>
freebsder 发表于 2022-1-5 17:20
接收是异步的吗?
<p>是的,异步的</p>
页:
[1]