kit7828 发表于 2022-1-3 21:57

【安信可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>&nbsp;paho连接MQTT的流程比较简单,1、联网;2、订阅;3发布。(4、断开)</p>

<p>配合NB-IOT,实现MQTT信息的订阅和发布</p>

<p></p>

<p>整个MQTT的测试都是直接用串口命令实现的。具体步骤如下:</p>

<p>1、NB-IOT模块联通互联网</p>

<p>主要包括&nbsp;1)、PS附着,AT命令:AT+CGATT=1</p>

<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 成功后反馈&nbsp; OK</p>

<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2)、PDP激活,AT命令:AT+CGACT=1</p>

<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 成功后反馈&nbsp; OK</p>

<p>2、打开MQTT客户端连接,(感觉应该叫MQTT连接)</p>

<p>&nbsp; &nbsp; AT命令为:&nbsp;&nbsp;AT+ECMTOPEN=0,&quot;39.104.x.x&quot;,1885</p>

<p>&nbsp; &nbsp; &nbsp;直接用的IP4连接,不知道IP6下该怎么连接?</p>

<p>&nbsp; &nbsp; 成功后反馈&nbsp;&nbsp;+ECMTOPEN: 0,0</p>

<p>&nbsp; &nbsp; 第一个0,应该是tcpconnectID,MQTT套接字标识符。&nbsp;</p>

<p>3、创建客户端连接,(感觉叫客户端登录比较合适)</p>

<p>&nbsp; AT命令为:&nbsp;&nbsp;AT+ECMTCONN=0,&quot;test12345&quot;</p>

<p>&nbsp; 其中的 test12345 是客户端ID,ClientID,客户端标识符,最大48个字节</p>

<p>&nbsp; 成功后反馈&nbsp;&nbsp;+ECMTCONN: 0,0,0</p>

<p>&nbsp; 第1个0,表示tcpconnectID,MQTT套接字标识符;第2个0,&lt;result&gt;&nbsp;</p>

<p>&nbsp;第3个0,表示&lt;ret_code&gt;&nbsp; &nbsp;服务器返回的连接结果</p>

<p> &nbsp;</p>

<p>4、订阅MQTT主题</p>

<p>&nbsp;AT命令为:&nbsp;AT+ECMTSUB=0,1023,&quot;NBIOT54321&quot;,0</p>

<p>第1个0为tcpconnectID,MQTT套接字标识符。</p>

<p>1023为&lt;msgID&gt; 整型,报文的报文标识。 范围是1-65535。</p>

<p>&#128531;,用了这么久的MQTT,这个报文标识的作用,还是不明确。感觉是不是跟报文长度有关?哪位E友辛苦普及下哈。</p>

<p>后面的NBIOT54321为订阅的主题,&lt;topic&gt; 字符串类型,客户想要订阅或取消订阅的主题。 最大长度为255个字节。</p>

<p>后面的0为QOS,&lt;qos&gt; 整型,消息QoS,可以为0,1或2</p>

<p>&nbsp;成功后反馈&nbsp;&nbsp;+ECMTSUB: 0,1023,0,1</p>

<p>&nbsp;其中,result,和value</p>

<p>&nbsp;5、订阅等待接收该主题的信息</p>

<p>成功接收到信息后,</p>

<p>+ECMTRECV: 0,0,&quot;NBIOT54321&quot;,test for sub</p>

<p>各个数据的含义都能对应上,只是msgID为0,(是不是msgID为0是该主题的广播信息?)</p>

<p>&nbsp;6、MQTT发布信息</p>

<p>AT命令为:AT+ECMTPUB=0,0,0,0,&quot;NBIOT123&quot;,&quot;TEST For NB-IOT MQTT&quot;</p>

<p> &nbsp;&nbsp;消息发布成功后反馈:</p>

<p>+ECMTPUB: 0,0,0</p>

<p>最后1个0是result</p>

<p>&nbsp;7、关闭MQTT连接</p>

<p>AT命令:AT+ECMTCLOSE=0</p>

<p>成功后反馈&nbsp;+ECMTCLOSE: 0,0</p>

<p>&nbsp;MQTT的测试还算顺利,通过模拟器的配合,整个发布订阅的流程比较清晰。</p>

<p>&nbsp;</p>

freebsder 发表于 2022-1-5 17:20

<p>接收是异步的吗?</p>

kit7828 发表于 2022-1-7 22:02

freebsder 发表于 2022-1-5 17:20
接收是异步的吗?

<p>是的,异步的</p>
页: [1]
查看完整版本: 【安信可NB-IoT开发板EC-01F-Kit】四、串口MQTT联网及信息收发测试