今天我講解的是關(guān)于4G模組AT指令之MQTT應(yīng)用,有興趣的朋友可以閱讀本文深度學(xué)習(xí)。
一、MQTT 協(xié)議簡(jiǎn)介
1.1 MQTT 概述
MQTT 是一種輕量級(jí)的消息傳輸協(xié)議,旨在在物聯(lián)網(wǎng)(IoT)應(yīng)用中實(shí)現(xiàn)設(shè)備間的可靠通信。它使用發(fā)布-訂閱模式,其中包括一個(gè) MQTT 服務(wù)端(代理或服務(wù)器)和多個(gè) MQTT 客戶(hù)端之間的通信。
MQTT 協(xié)議具有以下特點(diǎn):
輕量級(jí):MQTT 協(xié)議設(shè)計(jì)簡(jiǎn)單,協(xié)議頭部開(kāi)銷(xiāo)小,適用于資源受限的設(shè)備和網(wǎng)絡(luò)。
低帶寬消耗:MQTT 采用二進(jìn)制編碼,有效地利用網(wǎng)絡(luò)帶寬。
異步通信:客戶(hù)端可以隨時(shí)發(fā)布和訂閱消息,無(wú)需等待對(duì)方的響應(yīng)。
發(fā)布-訂閱模式:消息發(fā)布者將消息發(fā)布到特定的主題,而訂閱者則訂閱感興趣的主題。這種模式支持松耦合的通信和靈活的消息傳遞。
1.2 MQTT 協(xié)議中重要名詞
username用戶(hù)名,password 密碼,clientid 用戶(hù)標(biāo)識(shí),mqtt 可以通過(guò)前兩個(gè)參數(shù)保證連接的安全,通過(guò) clientid 確保設(shè)備唯一性。
qos 消息質(zhì)量,分為 0,1,2 三個(gè)等級(jí),分別表示只發(fā)一次,至少收到一次和只收到一次,通過(guò) qos 可以根據(jù)數(shù)據(jù)的重要性靈活選擇發(fā)送方式以節(jié)省帶寬和保證數(shù)據(jù)可靠。例如不重要的數(shù)據(jù)采集可使用 qos0 只發(fā)一次不關(guān)心服務(wù)器是否收到,重要的消息通過(guò) qos1 確保能收到,付款信息危險(xiǎn)設(shè)備開(kāi)關(guān)等場(chǎng)景使用 qos2 保證數(shù)據(jù)到達(dá)的同時(shí)且不重復(fù)。
host 主機(jī),port 端口,mqtt 需要連接的服務(wù)器參數(shù)。host 可以說(shuō) ip 或者域名。
topic 主題,根據(jù)主題區(qū)別消息類(lèi)型和來(lái)源,主要用來(lái)分類(lèi)數(shù)據(jù)。同時(shí) mqtt 是發(fā)布訂閱模型,topic 是發(fā)布和訂閱者通信的重要通道。
payload 消息內(nèi)容,發(fā)布和訂閱的具體數(shù)據(jù)。
retain 保留消息,保留消息是一條將保留標(biāo)志(retained flag)置為 true 的普通 MQTT 消息。broker 會(huì)針對(duì)主題依照 QoS 級(jí)別保留最后一條保留消息,當(dāng)訂閱者訂閱主題時(shí)會(huì)立即收到保留消息。broker 僅為每個(gè)主題保留一條保留消息。
二、本教程實(shí)現(xiàn)的功能概述
本文教你4G 模組使用 AT 命令連接 MQTT 服務(wù)器,實(shí)現(xiàn)模組和服務(wù)器之間數(shù)據(jù)的雙向傳輸!
本教程實(shí)現(xiàn)的功能定義是:
1、準(zhǔn)備一個(gè) MQTT 服務(wù)器;
2、4G 模組插卡開(kāi)機(jī)后,連接上 MQTT 服務(wù)器,訂閱一個(gè)消息/mqtt/pub;
3、使用 MQTT 協(xié)議的 PC 工具(本篇演示時(shí)使用的是 mqttx),用工具連接 mqtt 服務(wù)器,同時(shí)訂閱消息/mqtt/sub;
4、4G 模組向工具訂閱的消息/mqtt/sub 發(fā)布消息 data from 4G module,工具可以接收到并顯示出來(lái);
5、工具向 4G 模組訂閱的消息/mqtt/pub發(fā)布消息data from tcp server,模組可以接收到數(shù)據(jù)并通過(guò)串口輸出顯示
6、演示加密 mqtt 通信流程7、演示專(zhuān)網(wǎng)卡和設(shè)置 apn 等特殊情況連接 mqtt 服務(wù)器
三、準(zhǔn)備硬件環(huán)境
在正式介紹本功能示例之前,需要先準(zhǔn)備好以下硬件環(huán)境。
3.1 Air780E開(kāi)發(fā)板
使用的開(kāi)發(fā)板是 Air780E 核心板,
此核心板的詳細(xì)使用說(shuō)明參考:
https://docs.openluat.com/air780e/product/
此核心板的詳細(xì)使用說(shuō)明參考:Air780E 產(chǎn)品手冊(cè)公用產(chǎn)品資料 - 模組資料中心 (openluat.com)中的 << 開(kāi)發(fā)板 Core_Air780E 使用說(shuō)明 VX.X.X.pdf>>,寫(xiě)這篇文章時(shí)最新版本的使用說(shuō)明為:20240419155721583_開(kāi)發(fā)板Core_Air780E使用說(shuō)明V1.0.5.pdf (vue2.cn);核心板使用過(guò)程中遇到任何問(wèn)題,可以直接參考這份使用說(shuō)明 pdf 文檔。
3.2 SIM卡
準(zhǔn)備一張可以上網(wǎng)的 SIM 卡,可以是物聯(lián)網(wǎng)卡,也可以是自己的手機(jī)卡;注意:SIM 卡不能欠費(fèi),可以正常上網(wǎng)?。?!
3.3 PC電腦
準(zhǔn)備一臺(tái)電腦;注意:電腦有 USB 口,并且可以正常上網(wǎng)!??!
3.4 數(shù)據(jù)通信線(xiàn)
準(zhǔn)備一根數(shù)據(jù)線(xiàn),此數(shù)據(jù)線(xiàn)的作用是,連接 Air780E 開(kāi)發(fā)板和 PC 電腦,通過(guò) AT 命令完成業(yè)務(wù)邏輯的控制和交互;有兩種數(shù)據(jù)線(xiàn)可以使用,二選一即可;第一種數(shù)據(jù)線(xiàn)是 USB 數(shù)據(jù)線(xiàn)(連接 Air780E 開(kāi)板的一段是 Type-C 接口),一般來(lái)說(shuō)這種數(shù)據(jù)線(xiàn)如下圖所示:
普通的手機(jī) USB 數(shù)據(jù)線(xiàn)一般都可以直接使用;第二種數(shù)據(jù)線(xiàn)是 USB 轉(zhuǎn) TTL 串口線(xiàn),一般來(lái)說(shuō)這種數(shù)據(jù)線(xiàn)如下圖所示:
在本教程中,使用的是第一種 USB 數(shù)據(jù)線(xiàn)。
3.5 組裝硬件環(huán)境
按照 SIM 卡槽上的插入方向,插入 SIM 卡,注意不要插反!如下圖所示,將 SIM 卡用力推入卡槽,聽(tīng)到咔嚓聲音后即可。
USB 數(shù)據(jù)線(xiàn),連接電腦和 Air780E 開(kāi)發(fā)板,如下圖所示
:
四、準(zhǔn)備軟件環(huán)境
在正式使用之前,需要安裝裝備好以下軟件。
4.1 Luatools 工具
要想燒錄 AT 固件到4G模組中,需要用到的調(diào)試工具:Luatools詳細(xì)使用說(shuō)明參考:
Luatools 工具使用說(shuō)明:
https://docs.openluat.com/Luatools/
4.2 AT 固件
4G 模組中必須燒錄正確的 AT 固件才能支持 AT 命令功能;通過(guò) Luatools 可以燒錄 AT 固件;有兩種方式可以獲取到 Air780E 模組的最新 AT 固件,二選一即可。
第一種方式是通過(guò) Luatools 獲取:
如下圖所示,可以直接選中最新版本的 AT 固件:
第二種方式是訪(fǎng)問(wèn):
Air780E 固件版本,找到最新版本的固件即可。
4.3 MQTT 測(cè)試服務(wù)器
為了方便測(cè)試,提供了免費(fèi)的不可商用的 MQTT 測(cè)試服務(wù)器;
ssl 加密鏈接所需要的證書(shū)文件:mqttcerts.zip
4.4 PC 端串口工具
在量產(chǎn)的項(xiàng)目硬件設(shè)計(jì)中,一般都是由主控 MCU 通過(guò) UART 給 4G 模組發(fā)送命令實(shí)現(xiàn)具體的業(yè)務(wù)邏輯;在本教程中,為了測(cè)試方便,沒(méi)有使用主控 MCU;而是使用了 PC 電腦上的一個(gè)串口工具 SSCOM 給 4G 模組發(fā)送命令來(lái)實(shí)現(xiàn)演示功能。
4.5 mqttx 工具下載
MQTTX 是一款功能強(qiáng)大的 MQTT 客戶(hù)端應(yīng)用,專(zhuān)為物聯(lián)網(wǎng) (IoT) 和消息傳遞設(shè)計(jì)。它提供了直觀(guān)的用戶(hù)界面,支持多種連接配置,方便用戶(hù)進(jìn)行設(shè)備的快速連接、消息發(fā)布與訂閱,以及數(shù)據(jù)監(jiān)控與管理。安裝教程可參考這篇文章:MQTTX 下載使用詳解
五、MQTT 相關(guān)指令
復(fù)制鏈接查看4G模組MQTT指令:https://docs.openluat.com/air780e/at/app/at_command/#mqtt
六、使用方法舉例
6.1 確認(rèn)開(kāi)發(fā)板正常開(kāi)機(jī)并聯(lián)網(wǎng)正常
本次教程所用固件版本是 v1169,通過(guò) luatools 燒錄過(guò)固件后可以通過(guò)打印來(lái)判斷設(shè)備情況,具體參考下圖:
6.2 普通不帶證書(shū)使用流程舉例
下面演示及普通連接流程,并進(jìn)行收發(fā)測(cè)試。查看流程時(shí)需要注意指令后面注釋的內(nèi)容,有助于理解指令具體作用
可以通過(guò)工具看到模組正常上報(bào)了數(shù)據(jù),服務(wù)器下發(fā)模組也能正常收到并通過(guò)串口打印出來(lái):
6.3 SSL 帶證書(shū)單向認(rèn)證流程舉例
MQTT 單向認(rèn)證加密是指,在 MQTT 通信中僅服務(wù)端驗(yàn)證客戶(hù)端身份,以此確保通信數(shù)據(jù)的安全傳輸。下面演示單向認(rèn)證加密連接的流程,并進(jìn)行收發(fā)測(cè)試本次測(cè)試需要準(zhǔn)備好單向認(rèn)證的加密證書(shū),如果使用的是合宙測(cè)試服務(wù)器的話(huà)需要下載上面服務(wù)器信息除的加密證書(shū)文件。如圖所示:
工具選擇加密端口,同時(shí)配置 ca 證書(shū)文件,具體如圖所示:
單向認(rèn)證測(cè)試流程如下:
模組與服務(wù)器交互過(guò)程通過(guò)工具監(jiān)控如圖:
6.4 SSL 帶證書(shū)雙向認(rèn)證流程舉例
MQTT 協(xié)議雙向認(rèn)證加密是指客戶(hù)端和服務(wù)器在通信時(shí)都使用數(shù)字證書(shū)進(jìn)行身份驗(yàn)證,并使用 TLS 協(xié)議對(duì)通信數(shù)據(jù)進(jìn)行加密,確保數(shù)據(jù)的機(jī)密性和完整性。下面演示雙向認(rèn)證加密連接的流程,并進(jìn)行收發(fā)測(cè)試所需證書(shū)文件如圖所示:
工具配置加密證書(shū)如圖:
雙向認(rèn)證測(cè)試流程:
交互日志如下:
七、APN 設(shè)置與專(zhuān)網(wǎng)卡
用戶(hù)根據(jù)自己使用的網(wǎng)絡(luò)類(lèi)型來(lái)區(qū)分,sim 卡可以分為公網(wǎng)卡和專(zhuān)網(wǎng)卡兩種;對(duì)于如何判斷自己手里的 sim 卡是公網(wǎng)卡還是專(zhuān)網(wǎng)卡可以通過(guò)下面兩種辦法區(qū)分:
咨詢(xún)sim卡供應(yīng)商;
如果有apn賬號(hào)、或者有密碼、或者有加密類(lèi)型,則可以認(rèn)為是專(zhuān)網(wǎng)卡。
對(duì)于公網(wǎng)卡和專(zhuān)網(wǎng)卡設(shè)置和查詢(xún)有不同的指令,合宙 780E 4G 模組設(shè)置和查詢(xún) APN 相關(guān)指令可以參考下圖:
APN 及專(zhuān)網(wǎng)卡常見(jiàn)問(wèn)題1、模塊如何設(shè)置 APN
1)如果是公網(wǎng)SIM卡,不需要用戶(hù)主動(dòng)設(shè)置APN,軟件自動(dòng)去網(wǎng)絡(luò)端查詢(xún)APN進(jìn)行設(shè)置。
2)如果是專(zhuān)網(wǎng)SIM卡,首先咨詢(xún)SIM卡提供商APN參數(shù),然后通過(guò)AT+CPNETAPN=mode,“apnname”,“user”,“pwd”,authmoded進(jìn)行專(zhuān)網(wǎng)卡的參數(shù)設(shè)置。
2、專(zhuān)網(wǎng)卡連接服務(wù)器失敗
1)有的專(zhuān)網(wǎng)卡沒(méi)設(shè)置APN的情況下也能激活PDP,但是不能連專(zhuān)網(wǎng)卡指定的服務(wù)器,或者開(kāi)機(jī)后模塊沒(méi)自動(dòng)激活PDP,這個(gè)時(shí)候參考1,檢查APN參數(shù)是否設(shè)置正確。
2)如果有其他廠(chǎng)家的模塊,對(duì)比測(cè)試下是否連接正常。
3)如果無(wú)法百分百保證服務(wù)器配置沒(méi)問(wèn)題,最好在服務(wù)器端用wireshark抓包,或者在服務(wù)器上安裝一個(gè)第三方工具,開(kāi)啟一個(gè)服務(wù)器端口來(lái)對(duì)比測(cè)試。
4)用定向Ip的物聯(lián)網(wǎng)卡,需要把域名或IP加入白名單才能使用。
3、專(zhuān)網(wǎng)卡訪(fǎng)問(wèn)白名單 用定向 IP 的物聯(lián)網(wǎng)卡,需要把域名或 IP 加入白名單才能使用,下面列出模塊會(huì)訪(fǎng)問(wèn)的域名或 IP 服務(wù)器。
八、常見(jiàn)問(wèn)題和注意事項(xiàng)
8.1 注意事項(xiàng)
1、發(fā)送 MIPSTART 命令后,收到 OK 僅僅表示 4G 模塊開(kāi)始處理這條命令,并不表示 TCP 已經(jīng)連接成功;只有收到 CONNECT OK 才是成功的應(yīng)答;2、發(fā)送 MCONNECT 命令后,收到 OK 僅僅表示 4G 模塊開(kāi)始處理這條命令,并不表示 MQTT 已經(jīng)連接成功;只有收到 CONNACK OK 才是成功的應(yīng)答;3、發(fā)送 MSUB 命令后,收到 OK 僅僅表示 4G 模塊開(kāi)始處理這條命令,并不表示 MQTT 已經(jīng)訂閱成功;只有收到 SUBACK 才是成功的應(yīng)答;4、發(fā)送 MPUB 命令后,如果 QOS 不是 0,則收到 OK 僅僅表示 4G 模塊開(kāi)始處理這條命令,并不表示 MQTT 已經(jīng)發(fā)布成功;只有收到 PUBACK(QOS 為 1 時(shí))或者 PUBCOMP(QOS 為 2 時(shí))才是成功的應(yīng)答;
8.2 常見(jiàn)問(wèn)題
1、780E 支持的 MQTT 版本
MQTT3.1.1
2、連接服務(wù)器失敗
1、檢查下模塊信號(hào)、網(wǎng)絡(luò)注冊(cè)、網(wǎng)絡(luò)附著、PDP激活狀態(tài)。
2、檢查下SIM卡是否欠費(fèi)【4G模塊有一種欠費(fèi)表現(xiàn):無(wú)法注冊(cè)4G網(wǎng)絡(luò),可以注冊(cè)2G網(wǎng)絡(luò)】。
3、使用mqtt.fx,連接服務(wù)器確認(rèn)一下是否可以連接成功,排除服務(wù)器故障。
4、部分國(guó)外的開(kāi)源項(xiàng)目提供免費(fèi)的MQTT代理服務(wù)器,因?yàn)榫W(wǎng)絡(luò)的原因,國(guó)內(nèi)存在嚴(yán)重的延遲或者丟包現(xiàn)象,導(dǎo)致程序運(yùn)行出現(xiàn)問(wèn)題。
5、確認(rèn)是不是域名解析失敗導(dǎo)致,可以通過(guò)AT+CDNSGIP=確認(rèn)一下域名是否能正常解析(注意:該命令只有在執(zhí)行完at+cstt、at+ciicr、at+cifsr后才能正常工作),不能正常解析,可以通過(guò)AT+CDNSCFG=ip1,ip2設(shè)置域名解析服務(wù)器。
6、在 MIPSTART /SSLMIPSTART返 回 CONNECT OK后 才 能 發(fā) MCONNECT命令,而且要立即發(fā),否則會(huì)被服務(wù)器踢掉。
3、頻繁掉線(xiàn)是什么原因
1、檢查下是否存在代碼邏輯錯(cuò)誤,導(dǎo)致異常。
2、檢查下是否不斷重啟,導(dǎo)致異常。
3、檢查下服務(wù)器網(wǎng)絡(luò)是否穩(wěn)定,不要用內(nèi)網(wǎng)穿透方式搭建服務(wù)器。
4、檢查下使用環(huán)境是否網(wǎng)絡(luò)覆蓋不好,例如車(chē)庫(kù)、地下、電梯、山區(qū)等。
5、檢查下模塊信號(hào)、網(wǎng)絡(luò)注冊(cè)、網(wǎng)絡(luò)附著、PDP激活狀態(tài)。
6、排查是否為設(shè)備天線(xiàn)問(wèn)題:發(fā)出來(lái)設(shè)備的天線(xiàn)調(diào)試指標(biāo)參數(shù)給合宙技術(shù)支持人員;曾經(jīng)有一個(gè)客戶(hù)天線(xiàn)指標(biāo)明顯有問(wèn)題,導(dǎo)致10幾個(gè)小時(shí)出現(xiàn)30次左右掉線(xiàn);后來(lái)重新調(diào)試天線(xiàn)之后,40個(gè)小時(shí)出現(xiàn)幾次掉線(xiàn)。7、如果經(jīng)常出現(xiàn)連接被動(dòng)斷開(kāi):
1) 檢查下mqtt keep alive的時(shí)間,一般建議使用2分鐘【如果每2分鐘內(nèi)都有應(yīng)用數(shù)據(jù)收發(fā),則可以把mqtt keep alive的時(shí)間設(shè)置的長(zhǎng)一點(diǎn)兒】,除非有強(qiáng)制要求,否則不能太長(zhǎng),也不能太短。不建議超過(guò)4分鐘,基站策略會(huì)關(guān)閉長(zhǎng)時(shí)間沒(méi)有數(shù)據(jù)傳輸?shù)倪B接,太長(zhǎng)時(shí)間可能會(huì)導(dǎo)致連接被基站關(guān)閉;不建議少于1分鐘,太短時(shí)間可能會(huì)因?yàn)榫W(wǎng)絡(luò)環(huán)境波動(dòng)導(dǎo)致上行數(shù)據(jù)發(fā)送超時(shí),可能超過(guò)1.5倍的心跳時(shí)間,從而被服務(wù)器主動(dòng)斷開(kāi)連接。
2) 檢查下是否在1.5倍的mqtt keep alive的時(shí)間,沒(méi)有成功發(fā)送數(shù)據(jù)到服務(wù)器,就會(huì)被被服務(wù)器主動(dòng)斷開(kāi),這種情況一般都是發(fā)送數(shù)據(jù)超時(shí)引起的。
8、如果要降低掉線(xiàn)率,可通過(guò)如下方式設(shè)置【注意:在網(wǎng)絡(luò)環(huán)境不變的情況下,降低掉線(xiàn)率意味著會(huì)增加響應(yīng)延時(shí)】A. mqtt keep alive的時(shí)間,一般建議使用2分鐘【如果每2分鐘內(nèi)都有應(yīng)用數(shù)據(jù)收發(fā),則可以把mqtt keep alive的時(shí)間設(shè)置的長(zhǎng)一點(diǎn)兒】,除非有強(qiáng)制要求,否則不能太長(zhǎng),也不能太短。不建議超過(guò)4分鐘,基站策略會(huì)關(guān)閉長(zhǎng)時(shí)間沒(méi)有數(shù)據(jù)傳輸?shù)倪B接,太長(zhǎng)時(shí)間可能會(huì)導(dǎo)致連接被基站關(guān)閉;不建議少于1分鐘,太短時(shí)間可能會(huì)因?yàn)榫W(wǎng)絡(luò)環(huán)境波動(dòng)導(dǎo)致上行數(shù)據(jù)發(fā)送超時(shí),可能超過(guò)1.5倍的心跳時(shí)間,從而被服務(wù)器主動(dòng)斷開(kāi)連接。
B. 減少Q(mào)os1和Qos2的publish使用,允許的話(huà)建議都使用Qos0。
4、有沒(méi)有認(rèn)證機(jī)制
有,每個(gè)設(shè)備有clientid、username、password。
5、client id 是否允許重復(fù)
不允許重復(fù),重復(fù)的話(huà),服務(wù)器會(huì)踢掉上一個(gè)相同id的設(shè)備。
6、Qos0、1、2 如何選擇
應(yīng)用允許的情況下,建議使用Qos0,Qos1和Qos2會(huì)加重網(wǎng)絡(luò)負(fù)擔(dān),在網(wǎng)絡(luò)擁堵和較差的情況下,數(shù)據(jù)傳輸?shù)拇螖?shù)越多,掉線(xiàn)的概率就會(huì)越高。
7、是否支持 ssl
支持證書(shū)配置,支持單向認(rèn)證和雙向認(rèn)證
支持如下六種加密套件:
0X0035 TLS_RSA_WITH_AES_256_CBC_SHA
0X002F TLS_RSA_WITH_AES_128_CBC_SHA
0X0005 TLS_RSA_WITH_RC4_128_SHA
0X0004 TLS_RSA_WITH_RC4_128_MD5
0X000A TLS_RSA_WITH_3DES_EDE_CBC_SHA
0X003D TLS_RSA_WITH_AES_256_CBC_SHA256
8、MQTT SSL 如何使用
參考上面流程或者翻閱AT手冊(cè),如果SSL的參數(shù)配置不變,則每次開(kāi)機(jī)運(yùn)行過(guò)程中,僅設(shè)置一次即可
9、為什么 mqtt ssl 訪(fǎng)問(wèn)失敗
1、檢查服務(wù)器是否支持模塊支持的加密套件。
2、發(fā)日志文件給合宙技術(shù)支持人員分析。
10、MQTT 支持多連接嗎
目前MQTT僅支持單連接,不支持多連接。
11、MQTT 的遺囑如何使用
通過(guò)AT+MCONFIG命令可以設(shè)置遺囑的qos、retain標(biāo)志、topic、payload;在如下幾種(包含但是又不僅限于如下情況)情況下,服務(wù)器會(huì)主動(dòng)發(fā)布遺囑消息到訂閱的客戶(hù)端:1、模塊和服務(wù)器通信異常(例如模塊突然關(guān)機(jī)、模塊進(jìn)入了一個(gè)沒(méi)有網(wǎng)絡(luò)信號(hào)的環(huán)境等)超過(guò)1.5倍(一般是1.5倍,但不排除服務(wù)器可以修改這個(gè)時(shí)間)的 keep alive時(shí)間(可以通過(guò)AT+MCONNECT設(shè)置keep alive時(shí)間)。2、模塊主動(dòng)執(zhí)行AT+MDISCONNECT或者AT+MIPCLOSE。
12、MPUB 命令中,payload 包含"如何發(fā)送?
1、消息中內(nèi)嵌的雙引號(hào)請(qǐng)用22 表達(dá);控制字符回車(chē)r(0x0D) 請(qǐng)用D 表達(dá);;控制字符換行n(0x0A )請(qǐng)用A 表達(dá) ;控制字符反斜杠 (0x5C ) 請(qǐng)用5C表達(dá)。2、如果是 MCU 發(fā)消息,可能需要用\22 ,\0D ,\0A ,\5C 來(lái)表達(dá),即 需要轉(zhuǎn)義成\ 。
13、重試多次 PDP,MQTT 應(yīng)用一直連接失敗
如果重試多次PDP激活,PDP一直激活失敗,或者M(jìn)QTT一直連接失敗,則嘗試使用如下手段恢復(fù):1、使用RESET引腳復(fù)位模塊。2、極端情況下,直接給模塊斷電,再上電,POWER KEY引腳拉低開(kāi)機(jī)。
14、數(shù)據(jù)接收緩存問(wèn)題
可通過(guò)AT+MQTTMSGSET命令設(shè)置是否緩存,詳情參考AT手冊(cè)。1、不緩存:通過(guò)AT+MQTTMSGSET=0設(shè)置;收到訂閱的publish報(bào)文后,立即通過(guò)AT口輸出主題、payload長(zhǎng)度、payload內(nèi)容,每個(gè)報(bào)文中支持的payload內(nèi)容最長(zhǎng)1360字節(jié)。2、內(nèi)存緩存:通過(guò)AT+MQTTMSGSET=1設(shè)置;內(nèi)存中有一個(gè)緩存表,最多支持緩存4條publish報(bào)文;收到訂閱的publish報(bào)文后,插入緩沖表中的空閑位置,然后通過(guò)AT口輸出存儲(chǔ)位置;緩存表滿(mǎn)之后,新收到的publish報(bào)文會(huì)覆蓋最舊的publish報(bào)文。
注意:緩存表位于內(nèi)存中,斷電或者重啟后,緩存表中的數(shù)據(jù)會(huì)被清空;建議收到數(shù)據(jù)時(shí),通過(guò)AT+MQTTMSGGET及時(shí)讀取出來(lái),以防緩沖區(qū)滿(mǎn)覆蓋丟失數(shù)據(jù)。
15、數(shù)據(jù)發(fā)送問(wèn)題
AT+MPUB最大publish 2384字節(jié),AT+MPUBEX長(zhǎng)度取值范圍1-4100。
審核編輯 黃宇
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44557瀏覽量
372753 -
AT
+關(guān)注
關(guān)注
2文章
192瀏覽量
65202 -
MQTT協(xié)議
+關(guān)注
關(guān)注
0文章
97瀏覽量
5361
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論