国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MQTT應用看這篇!Air780EP低功耗4G模組AT開發示例

合宙LuatOS ? 來源:合宙LuatOS ? 作者:合宙LuatOS ? 2024-10-08 10:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

?Air780EP是合宙的[低功耗4G模組]之一,支持全系列的AT指令以及LuatOS腳本二次開發。

本文應各位大佬邀請,詳細講解了Air780EP模組MQTT應用的多個AT命令示例。

一、**準備工作 **

圖片?

1.1 硬件準備

1.2 軟件準備

  • 串口調試工具
    如果沒有準備,推薦使用LLCOM:
  • AT固件下載

進入AT固件頁面按下Ctrl+F,搜索AirM2M_780EP_LTE_AT,即可找到Air780EP模塊所使用的AT固件。

本文示例為:

AirM2M_780EP_V1007_LTE_AT版本固件

推薦選用:相關型號固件名稱后面數字版本號最高的最新relase版本進行調試。

**二、MQTT應用流程 **

合宙低功耗4G模塊支持MQTT和MQTT SSl協議,MQTT應用的基本流程如下:

  1. 如果要支持SSL,配置SSL參數
  2. 通過TCP連接到MQTT服務器
  3. 發送MQTT CONNECT到服務器,打開會話連接
  4. 訂閱或者發布消息

三、MQTT發布消息

先來看個正常情況下的AT命令序列,如果不理解AT命令含義,請自行參考AT手冊。

AT指令手冊下載鏈接:

https://doc.openluat.com/article/4985

AT+CPIN?

+CPIN: READY //查詢sim卡是否正常

OK

AT+CGATT?

+CGATT: 1

//查詢是否附著上數據網絡,如果返回+CGATT: 0表示未附著上

OK

AT+MCONFIG="866289037465624","user","password"

OK

AT+MIPSTART="lbsmqtt.airm2m.com","1884"

OK

CONNECT OK

AT+MCONNECT=1,60

OK

CONNACK OKAT+MSUB="mqtt/sub_topic",0

OK

SUBACK

AT+MPUB="mqtt/pub_topic",0,0,"publish 0 payload"

OK

AT+MPUB="mqtt/pub_topic",1,0,"publish 1 payload"

OK

PUBACK

AT+MPUB="mqtt/pub_topic",2,0,"publish 2 payload"

OK

PUBREC

PUBCOMP

發布消息示例演示效果:

圖片?

圖片?

相關注意事項:

01. 發送MIPSTART命令

收到OK僅僅表示4G模塊開始處理這條命令,并不表示TCP已經連接成功;只有收到CONNECT OK才是成功的應答(其余錯誤應答,參考AT手冊)。

02. 發送MCONNECT命令

收到OK僅僅表示4G模塊開始處理這條命令,并不表示MQTT已經連接成功;只有收到CONNACK OK才是成功的應答(其余錯誤應答,參考AT手冊)。

03. 發送MSUB命令

收到OK僅僅表示4G模塊開始處理這條命令,并不表示MQTT已經訂閱成功;只有收到SUBACK才是成功的應答(其余錯誤應答,參考AT手冊)。

04. 發送MPUB命令

如果QOS不是0,則收到OK僅僅表示4G模塊開始處理這條命令,并不表示MQTT已經發布成功;只有收到PUBACK(QOS為1時)或者PUBCOMP(QOS為2時)才是成功的應答(其余錯誤應答,參考AT手冊)。

四、MQTT接收消息

先來看下接收到訂閱消息時的AT命令處理序列,如果不理解AT命令含義,請自行參考AT手冊。

AT指令手冊下載鏈接:

https://doc.openluat.com/article/4985

AT+MCONFIG="866289037465624","user","password"

OK

AT+MIPSTART="lbsmqtt.airm2m.com","1884"

OK

CONNECT OK

AT+MCONNECT=1,60

OK

CONNACK OK

AT+MSUB="mqtt/sub_topic",0

OK

SUBACK

AT+MPUB="mqtt/sub_topic",0,0,"123456"

//在mqtt/sub_topic上收到訂閱消息,payload為123456

//默認是直接輸出收到的訂閱消息,不做緩存

+MSUB: "mqtt/sub_topic",6 byte,123456

//設置訂閱消息的處理模式,設置為緩存模式

//接下來收到訂閱消息時,會提示訂閱消息的緩存位置

AT+MQTTMSGSET=1

OK

//在mqtt/sub_topic上收到一條訂閱消息,緩存到位置0

+MSUB: 0

//主動讀取緩存的所有訂閱消息

AT+MQTTMSGGET

+MSUB:mqtt/sub_topic,6 byte,123456

OK

//在mqtt/sub_topic上收到一條訂閱消息,緩存到位置0

+MSUB: 0

//在mqtt/sub_topic上收到一條訂閱消息,緩存到位置1

+MSUB: 1

//主動讀取緩存的所有訂閱消息

AT+MQTTMSGGET

+MSUB:mqtt/sub_topic,6 byte,123456

+MSUB:mqtt/sub_topic,6 byte,123456

OK

接收消息演示效果:

圖片?

圖片?

五、MQTT TCP被動斷開

先來看下連接被動斷開時的AT命令處理序列,如果不理解AT命令含義,請自行參考AT手冊:

AT指令手冊下載鏈接:

https://doc.openluat.com/article/4985

AT+MCONFIG="866289037465624","user","password"

OK

AT+MIPSTART="lbsmqtt.airm2m.com","1884"

OK

CONNECT OK

AT+MCONNECT=1,60

OK

CONNACK OK

CLOSED //此處TCP連接被動斷開

AT+MIPCLOSE

+CME ERROR: 767

//此處無論返回OK、ERROR還是CMEERROR,都直接跳過,不用做正確性判斷

AT+MCONFIG="866289037465624","user","password"

OK

AT+MIPSTART="lbsmqtt.airm2m.com","1884"

OK

CONNECT OK

AT+MCONNECT=1,60

OK

CONNACK OK

六、MQTT PDP被動去激活

先來看下PDP被動去激活時的AT命令處理序列,如果不理解AT命令含義,請自行參考AT手冊。

AT指令手冊下載鏈接:

https://doc.openluat.com/article/4985

AT+MCONFIG="866289037465624","user","password"

OK

AT+MIPSTART="lbsmqtt.airm2m.com","1884"

OK

CONNECT OK

AT+MCONNECT=1,60

OK

CONNACK OK

+CGEV: NW PDN DEACT 1

//此處PDP被動去激活

AT+MIPCLOSE

OK

//此處無論返回OK、ERROR還是CME ERROR,都直接跳過,不用做正確性判斷

AT+MCONFIG="866289037465624","user","password"

OK

AT+MIPSTART="lbsmqtt.airm2m.com","1884"

OK

CONNECT OK

AT+MCONNECT=1,60

OK

CONNACK OK

七、SSL帶證書驗證流程【單向認證

先來看下SSL帶證書驗證(單向認證)時的AT命令處理序列,如果不理解AT命令含義,請自行參考AT手冊。

AT指令手冊下載鏈接:

https://doc.openluat.com/article/4985

AT+CGATT?

+CGATT: 1

OK

AT+FSCREATE="ca.crt"http://創建CA證書文件

OK

AT+FSWRITE="ca.crt",0,1212,15

//1212是證書文件長度,15為超時時間,這里是舉例說明,請填入實際數據,不要照抄 >

//此處填寫證書數據

OK

AT+SSLCFG="cacert",88,"ca.crt"

//設置CA證書文件為ca.crt

OK

AT+SSLCFG="seclevel",88,1

//1表示設置認證模式為只對服務器認證

OK

AT+MCONFIG="868488076506128","user","password"

//這三個參數可以不加雙引號,第一個參數需要開發者自己設置

//后兩個參數可以不填,格式為:

AT+MCONFIG="868488076506128","",""

OK

AT+SSLMIPSTART="airtest.openluat.com",8883

//開發者請修改為自己的服務器地址和端口

OK

CONNECT OK

AT+MCONNECT=1,60

//在MIPSTART返回CONNECT OK后才能發MCONNECT命令

//而且要立即發,否則會被服務器踢掉

OK

CONNACK OK

--后面發布和接收與前面一樣,直接參考

** 八、SSL帶證書驗證流程【雙向認證】**

先來看下SSL帶證書驗證(雙向認證)時的AT命令處理序列,如果不理解AT命令含義,請自行參考AT手冊。

AT指令手冊下載鏈接:

https://doc.openluat.com/article/4985

AT+CGATT?

+CGATT: 1

OK

AT+FSCREATE="ca.crt" //創建CA證書文件

OK

AT+FSWRITE="ca.crt",0,1212,15

//1212是證書文件長度,15為超時時間,這里是舉例說明,請填入實際數據,不要照抄 >

//此處填寫證書數據

OK

AT+FSCREATE="client.crt"

//創建客戶端證書文件

OK

AT+FSWRITE="client.crt",0,1127,15 >

//此處填寫證書數據

OK

AT+FSCREATE="client.key"

//創建客戶端key文件

OK

AT+FSWRITE="client.key",0,1679,15 >

//此處填寫證書數據

OK

AT+SSLCFG="cacert",88,"ca.crt"

//設置CA證書文件為ca.crt

OK

AT+SSLCFG="clientcert",88,"client.crt"

//設置客戶端證書文件為client.crt

OK

AT+SSLCFG="clientkey",88,"client.key"

//設置客戶端密鑰文件為client.key

OK

AT+SSLCFG="seclevel",88,2

//設置認證模式為雙向認證

OK

AT+MCONFIG="868488076506128","user","password"

//這三個參數可以不加雙引號,第一個參數需要開發者自己設置

//后兩個參數可以不填,格式為:

AT+MCONFIG="868488076506128","",""

OK

AT+SSLMIPSTART="airtest.openluat.com",8883

//開發者請修改為自己的服務器地址和端口

OK

CONNECT OK

AT+MCONNECT=1,60

//在MIPSTART返回CONNECT OK后才能發MCONNECT命令

//而且要立即發,否則會被服務器踢掉

OK

CONNACK OK

--后面發布和接收與前面一樣,直接參考

九、常見問題Q&A

以下針對客戶朋友們實際應用中的反饋,整理了MQTT應用中的常見問題:

01. MQTT支持多連接嗎?

目前MQTT僅支持單連接,不支持多連接。

02. MQTT的遺囑如何使用?

通過AT+MCONFIG命令可以設置遺囑的qos、retain標志、topic、payload。

在如下(包含但不僅限于)情況下,服務器會主動發布遺囑消息到訂閱的客戶端:

  • 模塊和服務器通信異常(例如:模塊突然關機、模塊進入了一個沒有網絡信號的環境等)超過1.5倍(一般是1.5倍,但不排除服務器可以修改這個時間)的keep alive時間(可以通過AT+MCONNECT設置keep alive時間);
  • 模塊主動執行AT+MDISCONNECT,或者AT+MIPCLOSE。

曾經有用戶碰到過如下問題:

模塊設置了遺囑topic為/will_topic,遺囑payload為offline,keep alive時間為5分鐘,模塊關機后,等待2分鐘。

在等待的2分鐘內,其他訂閱了/will_topic的客戶端沒有收到遺囑消息(這是正常的,因為還沒有到達1.5倍的keep alive時間)。

2分鐘后,模塊開機MQTT重連成功后,其他客戶端卻收到了遺囑消息。這是什么原因呢?

這部分機制是服務器端設計的,和模塊無關。個人認為:服務器端仍然在維持2分鐘前的那個MQTT連接,現在模塊開機,用同樣的client id重連后,會斷開之前維護的相同client id的MQTT連接。斷開時,就發布了一次遺囑消息。

那這種問題,如何解決呢?

模塊可以在AT+MCONNECT返回CONNACK OK之后,通過AT+MPUB一個topic為/will_topic,payload為online的消息,這樣訂閱了遺囑topic的其他客戶端,就會收到這個online消息。

03. 重試多次PDP,MQTT應用一直連接失敗?

如果重試多次PDP激活,PDP一直激活失敗,或者MQTT一直連接失敗,則嘗試使用如下手段恢復:

  • 使用RESET引腳復位模塊;
  • 極端情況下,直接給模塊斷電,再上電,POWER KEY引腳拉低開機。

04. MPUB命令中,payload包含"如何發送?

  • 消息中內嵌的雙引號請用22表達;
  • 控制字符 r(0x0D)請用?D表達;
  • 控制字符n(0x0A)請用?A表達;
  • 如果是MCU發消息,請用22,?D,?A來表達,即需要轉義成。

05. 連接服務器失敗

  • 檢查模塊信號、網絡注冊、網絡附著、PDP激活狀態;
  • 檢查SIM卡是否欠費;
  • 使用mqtt.fx,連接服務器確認是否可以連接成功,排除服務器故障;
  • 部分國外的開源項目提供免費的MQTT代理服務器,因為網絡的原因,國內存在嚴重的延遲或者丟包現象,導致程序運行出現問題,此現象在AT開發時影響嚴重;
  • 確認是不是域名解析失敗導致,可以通過AT+CDNSGIP=確認域名是否能正常解析(注意:該命令只有在執行完at+cstt、at+ciicr、at+cifsr后才能正常工作)。
    如不能正常解析,可以通過AT+CDNSCFG=ip1,ip2設置域名解析服務器。
  • 在MIPSTART /SSLMIPSTART返回CONNECT OK后,才能發MCONNECT命令,而且要立即發,否則會被服務器踢掉。

06. 數據接收緩存問題

不緩存:

通過AT+MQTTMSGSET=0設置;收到訂閱的publish報文后,立即通過AT口輸出主題、payload長度、payload內容,每個報文中支持的payload內容最長4100字節。

內存緩存:

通過AT+MQTTMSGSET=1設置;內存中有一個緩存表,一條消息最多4kb,最多支持緩存4條publish報文;收到訂閱的publish報文后,插入緩沖表中的空閑位置,然后通過AT口輸出存儲位置;緩存表滿之后,新收到的publish報文會覆蓋最舊的publish報文。

注意事項:

緩存表位于內存中,斷電或者重啟后,緩存表中的數據會被清空;建議收到數據時,通過AT+MQTTMSGGET及時讀取出來,以防緩沖區滿覆蓋丟失數據。

07. 數據發送問題

AT+MPUB最大publish 4100字節,AT+MPUBEX長度取值范圍1-4100。

?審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    9

    文章

    3212

    瀏覽量

    76388
  • 低功耗
    +關注

    關注

    12

    文章

    3484

    瀏覽量

    106718
  • MQTT
    +關注

    關注

    5

    文章

    734

    瀏覽量

    25117
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    一個G-Sensor,搞定GNSS定位靜態漂移+智能低功耗控制

    Air780EGP、Air780EGG系列通信定位模組,秉承LuatOS二次開發、高集成與低功耗核心優勢的同時,針對定位終端的真實痛點,做出
    的頭像 發表于 02-08 15:37 ?674次閱讀
    一個<b class='flag-5'>G</b>-Sensor,搞定GNSS定位靜態漂移+智能<b class='flag-5'>低功耗</b>控制

    模組功耗入門指南:新手必須掌握的能耗知識

    設計隱患。 一,模組低功耗特性概述 低功耗4G Cat.1 模組最重要的特性之一 4G C
    的頭像 發表于 01-18 13:48 ?706次閱讀
    <b class='flag-5'>模組</b><b class='flag-5'>功耗</b>入門指南:新手必須掌握的能耗知識

    Air780EPM嵌入式開發:LuatOS下的MQTT通信實踐

    通過LuatOS腳本在Air780EPM開發板上實現MQTT通信,是物聯網設備開發中高效且便捷的解決方案。 一、MQTT 協議詳解 ? 1.
    的頭像 發表于 09-30 16:11 ?1847次閱讀
    <b class='flag-5'>Air780</b>EPM嵌入式<b class='flag-5'>開發</b>:LuatOS下的<b class='flag-5'>MQTT</b>通信實踐

    實戰Air780EPM:構建4G共享網關,服務WiFi與有線設備!

    通過Air780EPM開發板,我們可以輕松實現4G網絡作為數據出口,為周邊的WiFi設備和以太網設備提供互聯網共享,適用于移動辦公、遠程部署等場景。 一、多網融合概述 ? Air780
    的頭像 發表于 09-30 16:03 ?1241次閱讀
    實戰<b class='flag-5'>Air780</b>EPM:構建<b class='flag-5'>4G</b>共享網關,服務WiFi與有線設備!

    LuatOS嵌入式開發實戰:Air780EPM與MQTT通信

    ?本教程聚焦于LuatOS在Air780EPM開發板上的應用,演示如何通過腳本實現MQTT協議通信,助力物聯網設備快速聯網。 一、MQTT 協議詳解 ? 1.1 什么是
    的頭像 發表于 09-29 18:10 ?536次閱讀
    LuatOS嵌入式<b class='flag-5'>開發</b>實戰:<b class='flag-5'>Air780</b>EPM與<b class='flag-5'>MQTT</b>通信

    揭秘Air8000對講黑科技:AirTalk+MQTT開發示例深度解析

    Air8000的AirTalk對講方案如何實現設備間無縫通信?答案藏在MQTT協議的高效架構中。本文通過完整開發示例,層層剖析代碼邏輯:從初始化Ai
    的頭像 發表于 08-06 17:16 ?794次閱讀
    揭秘<b class='flag-5'>Air</b>8000對講黑科技:AirTalk+<b class='flag-5'>MQTT</b><b class='flag-5'>開發</b><b class='flag-5'>示例</b>深度解析

    揭秘Air780EGH定位功能:源碼開放助力極速開發

    Air780EGH定位模塊源代碼全面開放!無需復雜前置知識,只需跟隨本文教程,即可從零開始搭建定位系統。代碼注釋清晰,示例完整,助你短時間內掌握定位功能核心用法。 下文將以Air780EGH核心板為
    的頭像 發表于 07-29 16:11 ?701次閱讀
    揭秘<b class='flag-5'>Air780</b>EGH定位功能:源碼開放助力極速<b class='flag-5'>開發</b> !

    Air8101多網融合戰略升級:Air780EPM模塊助力4G聯網落地

    應用邁向新高度。 本文將分享Air8101核心板通過外掛Air780EPM整機開發板,實現4G聯網的功能示例。 ? 一、硬件準備工作 ? 1
    的頭像 發表于 06-23 16:53 ?546次閱讀
    <b class='flag-5'>Air</b>8101多網融合戰略升級:<b class='flag-5'>Air780</b>EPM模塊助力<b class='flag-5'>4G</b>聯網落地

    COD監測革新!Air780EPM一站式替代STM32+4G模組的物聯網方案 ~

    通過將4G通信、COD數據處理與低功耗控制集成于Air780EPM芯片,本方案徹底顛覆STM32+外置模組的松散架構。實測顯示,設備啟動時間從STM32方案的12s縮短至3s。 水質C
    的頭像 發表于 05-21 16:51 ?595次閱讀
    COD監測革新!<b class='flag-5'>Air780</b>EPM一站式替代STM32+<b class='flag-5'>4G</b><b class='flag-5'>模組</b>的物聯網方案 ~

    大公開!用Air780EPM重構水質COD監測,替代STM32+4G模組的技術路徑

    方法。 以往行業常規開發方案是STM32+4G模組組合,本次實驗項目采用Air780EPM開發新方案——
    的頭像 發表于 05-16 15:34 ?655次閱讀
    大公開!用<b class='flag-5'>Air780</b>EPM重構水質COD監測,替代STM32+<b class='flag-5'>4G</b><b class='flag-5'>模組</b>的技術路徑

    開發寶典:4低功耗ADC接口,Air780EPM二次開發必看!

    本文將深入探討如何通過硬件參數配置、軟件算法優化及系統級功耗管理,實現ADC接口性能與能耗的最佳平衡。從寄存器設置到驅動程序編寫,從采樣策略到噪聲抑制,我們將全面揭秘Air780EPM低功耗ADC
    的頭像 發表于 04-01 14:57 ?650次閱讀
    <b class='flag-5'>開發</b>寶典:<b class='flag-5'>4</b>路<b class='flag-5'>低功耗</b>ADC接口,<b class='flag-5'>Air780</b>EPM二次<b class='flag-5'>開發</b>必看!

    快速開發實戰——4低功耗ADC接口,Air780EPM二次開發必看!

    Air780EPM 模組,內置4MB大內存RAM,支持LCD、攝像頭、Modbus、以太網、CAN;具備更強大的二次開發資源,更完善的外設能力,也更適于工業場景。 ? 最新
    的頭像 發表于 04-01 14:56 ?702次閱讀
    快速<b class='flag-5'>開發</b>實戰——<b class='flag-5'>4</b>路<b class='flag-5'>低功耗</b>ADC接口,<b class='flag-5'>Air780</b>EPM二次<b class='flag-5'>開發</b>必看!

    新手必看!4G模組Air780EPM——GPIO的設計說明

    Air780EPM的GPIO設計需兼顧硬件可靠性與軟件靈活性,開發者應基于具體應用場景權衡復用功能優先級,并遵循電源管理規范以延長設備生命周期。通過模塊化配置與精細化調試,可最大化釋放模組性能潛力
    的頭像 發表于 03-20 17:48 ?784次閱讀
    新手必看!<b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780</b>EPM——GPIO的設計說明

    干貨預警!4G模組Air780EPM其他硬件接口

    Air780EPM 4G模組不僅憑借高速穩定的數據傳輸能力在智能終端、工業自動化、車載設備等領域大放異彩,更以其“全棧式”硬件接口設計,為開發者提供了近乎無限的擴展可能。 一、ADC
    的頭像 發表于 03-17 17:37 ?994次閱讀
    干貨預警!<b class='flag-5'>4G</b><b class='flag-5'>模組</b>:<b class='flag-5'>Air780</b>EPM其他硬件接口

    手把手教你!4G模組Air780EPM——GPIO的設計說明

    4G模組Air780EPM作為廣和通推出的高性能Cat.1bis無線通信模塊,憑借其低功耗、高集成度及豐富的外設接口,在工業物聯網、智能終端、車載設備等領域展現出卓越的適配性。 一、概
    的頭像 發表于 03-17 16:07 ?1140次閱讀
    手把手教你!<b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780</b>EPM——GPIO的設計說明