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

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

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

3天內不再提示

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

合宙LuatOS ? 來源:合宙LuatOS ? 作者:合宙LuatOS ? 2025-09-29 18:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本教程聚焦于LuatOSAir780EPM開發板上的應用,演示如何通過腳本實現MQTT協議通信,助力物聯網設備快速聯網。


一、MQTT 協議詳解

1.1 什么是 MQTT?

MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議)是一種基于發布/訂閱模式的輕量級通信協議。你可以把它想象成一個郵局系統:

發布者(Publisher):就像寄信的人,把消息發送到特定的“郵箱”(主題)。

訂閱者(Subscriber):就像收信的人,他們事先告訴郵局(Broker)他們對哪些“郵箱”(主題)的信件感興趣。

Broker(代理):就像郵局,負責接收發布者的消息,并根據訂閱者的興趣將消息分發給他們。

MQTT 協議由 IBM 在 1999 年開發,現在是 ISO 標準(ISO/IEC 20922),適用于物聯網(IoT)和機器對機器(M2M)通信。

1.2 MQTT 的核心工作機制

1. 發布/訂閱模式:

發布者(Publisher)將消息發送到特定的主題(Topic)。

訂閱者(Subscriber)向 Broker 訂閱感興趣的主題。

Broker 負責將發布到主題的消息路由給所有訂閱了該主題的客戶端。

這種模式實現了發布者和訂閱者的解耦,簡單來說就是它們不需要知道彼此的存在。

2. 服務質量(QoS)等級:

QoS 0(最多一次):消息可能丟失,也可能因為網絡層或中間件的意外重放而出現重復,但 MQTT 協議本身不會主動再發一次。適用于對可靠性要求不高的場景,如傳感器數據。

QoS 1(至少一次):發送端會一直重試,直到收到接收端的 PUBACK 確認,因此消息至少送達一次,但也可能因確認丟失而被重復投遞。適用于需要確保消息送達但可以容忍重復的場景。

QoS 2(只有一次):通過四步握手(PUBLISH → PUBREC → PUBREL → PUBCOMP)保證消息恰好送達一次;若任一步丟失,發送端會重傳對應報文,直至整個流程完成,從而避免重復或丟失。適用于對消息可靠性要求極高的場景,如金融交易。

3. 輕量級設計:

MQTT 協議頭最小只有 2 字節,非常適合網絡帶寬和設備資源有限的環境。

協議簡單,易于實現,降低了開發成本。

1.3 MQTT 的主要優勢

低帶寬消耗:協議設計精簡,有效減少網絡流量。

低功耗:適用于電池供電的設備。

高可靠性:通過 QoS 機制保證消息傳遞的可靠性。

雙向通信:支持設備間和設備與服務器間的雙向通信。

多語言支持:支持多種編程語言,便于開發。

安全性強:支持用戶名/密碼和 SSL/TLS 加密,保障通信安全。

1.4 典型應用場景

智能家居:智能燈泡、智能插座、溫控器等設備通過 MQTT 與家庭網關通信。

工業自動化:傳感器數據采集、設備狀態監控。

環境監測:氣象站、水質監測站等遠程數據收集。

車聯網:車輛狀態信息上報、遠程控制指令下發。

醫療監控:遠程病人監護設備數據傳輸。

二、演示功能概述

1. 創建四路 mqtt 連接,詳情如下

注意:代碼中的 mqtt 服務器地址和端口會不定期重啟或維護,僅能用作測試用途,不可商用,說不定哪一天就關閉了。用戶開發項目時,需要替換為自己的商用服務器地址和端口。

創建一個 mqtt client,連接 mqtt server;

創建一個 mqtt ssl client,連接 mqtt ssl server,不做證書校驗;

創建一個 mqtt ssl client,連接 mqtt ssl server,client 僅單向校驗 server 的證書,server 不校驗 client 的證書和密鑰文件;

創建一個 mqtt ssl client,連接 mqtt ssl server,client 校驗 server 的證書,server 校驗 client 的證書和密鑰文件;

2. 每一路 mqtt 連接出現異常后,自動重連;

3. 每一路 mqtt 連接,client 按照以下幾種邏輯發送數據給 server

串口應用功能模塊uart_app.lua,通過 uart1 接收到串口數據,將串口數據增加send from uart:前綴后,使用mobile.imei().."/uart/up"主題,發送給 server;

定時器應用功能模塊timer_app.lua,定時產生數據,將數據增加send from timer:前綴后,使用mobile.imei().."/timer/up"主題,發送給 server;

4. 每一路 mqtt 連接,client 收到 server 數據后,將數據增加 recv from mqtt/mqtt ssl/mqtt ssl ca/mqtt ssl mutual ca(四選一)server: 前綴后,通過 uart1 發送出去;

5. 啟動一個網絡業務邏輯看門狗 task,用來監控網絡環境,如果連續長時間工作不正常,重啟整個軟件系統;

6. netdrv_device:配置連接外網使用的網卡,目前支持以下三種選擇(三選一)

(1) netdrv_4g:4G 網卡

(2) netdrv_eth_spi:通過 SPI 外掛 CH390H 芯片的以太網

(3) netdrv_multiple:支持以上兩種網卡,可以配置兩種網卡的優先級

三、演示硬件環境

wKgZO2jaER6AF4oMAB1yMscsVPo036.png

1、Air780EPM V1.3 版本開發板一塊 + 可上網的 sim 卡一張 +4g 天線一根 + 網線一根:

sim 卡插入開發板的 sim 卡槽

天線裝到開發板上

網線一端插入開發板網口,另外一端連接可以上外網的路由器網口

2、TYPE-C USB 數據線一根 + USB 轉串口數據線一根,Air780EPM V1.3 版本開發板和數據線的硬件接線方式為:

Air780EPM V1.3 版本開發板通過 TYPE-C USB 口供電;(外部供電/USB 供電 撥動開關 撥到 USB 供電一端)

TYPE-C USB 數據線直接插到核心板的 TYPE-C USB 座子,另外一端連接電腦 USB 口;

USB 轉串口數據線,一般來說,白線連接開發板的 UART1_TX,綠線連接開發板的 UART1_RX,黑線連接核心板的 GND,另外一端連接電腦 USB 口;

四、演示軟件環境

4.1 軟件環境

1. 燒錄工具:Luatools 下載調試工具

2. 內核固件:Air780EPM V2012 版本固件(理論上,2025 年 8 月 10 日之后發布的固件都可以)

3. 腳本文件:Air780EPM MQTT 腳本文件

3. PC 端串口工具:例如SSCOM、LLCOM等都可以

4. MQTT 客戶端:MQTT 客戶端軟件 MQTTX

5. LuatOS 運行所需要的 lib 文件:使用 Luatools 燒錄時,勾選 添加默認 lib 選項,使用默認 lib 腳本文件。

準備好軟件環境之后,接下來查看如何燒錄項目文件到 Air780EPM 開發板中,將本篇文章中演示使用的項目文件燒錄到 Air780EPM 開發板中。

4.2 API 介紹

sys 庫:https://docs.openluat.com/osapi/core/sys/

libnet 庫:https://docs.openluat.com/osapi/ext/libnet/

socket 庫:https://docs.openluat.com/osapi/core/socket/

mqtt 庫:https://docs.openluat.com/osapi/core/mqtt/

五、程序結構

wKgZPGjaFDSAUnSWAARMisrqKv0249.png

5.1 文件說明

main.lua:主程序入口文件,負責初始化系統、啟動網絡驅動和 MQTT 客戶端。

mqtt/:普通 MQTT 連接相關文件。

mqtt_main.lua:普通 MQTT 客戶端的初始化和事件處理。

mqtt_receiver.lua:普通 MQTT 客戶端的數據接收處理。

mqtt_sender.lua:普通 MQTT 客戶端的數據發送隊列管理。

mqtts/:MQTT SSL 連接(無證書校驗)相關文件。

mqtts_main.lua:MQTT SSL 客戶端的初始化和事件處理。

mqtts_receiver.lua:MQTT SSL 客戶端的數據接收處理。

mqtts_sender.lua:MQTT SSL 客戶端的數據發送隊列管理。

mqtts_ca/:MQTT SSL 連接(單向證書校驗)相關文件。

mqtts_ca_main.lua:MQTT SSL 單向證書校驗客戶端的初始化和事件處理。

mqtts_ca_receiver.lua:MQTT SSL 單向證書校驗客戶端的數據接收處理。

mqtts_ca_sender.lua:MQTT SSL 單向證書校驗客戶端的數據發送隊列管理。

openluat_root_ca.crt:服務器 CA 證書文件。

sntp_app.lua:時間同步應用。

mqtts_mutual_ca/:MQTT SSL 連接(雙向證書校驗)相關文件。

mqtts_m_ca_main.lua:MQTT SSL 雙向證書校驗客戶端的初始化和事件處理。

mqtts_m_ca_receiver.lua:MQTT SSL 雙向證書校驗客戶端的數據接收處理。

mqtts_m_ca_sender.lua:MQTT SSL 雙向證書校驗客戶端的數據發送隊列管理。

airtest_client.crt:客戶端證書文件。

airtest_client.key:客戶端私鑰文件。

openluat_root_ca.crt:服務器 CA 證書文件。

sntp_app.lua:時間同步應用。

netdrv/:網絡驅動相關文件。

netdrv_4g.lua:4G 網絡驅動。

netdrv_eth_spi.lua:SPI 以太網驅動。

netdrv_multiple.lua:多網絡驅動管理。

netdrv_device.lua:網絡設備配置文件。

network_watchdog.lua:網絡環境檢測看門狗。

timer_app.lua:定時器應用,用于生成測試數據。

uart_app.lua:串口應用,用于與 PC 端通信。

六、核心模塊詳解

6.1 主程序 (main.lua)

主程序文件main.lua是整個項目的入口點。它負責初始化系統環境。

6.1.1 初始化流程

1. 項目和版本定義

定義PROJECT和VERSION變量。

2. 日志記錄

使用log.info("main", PROJECT, VERSION)在日志中打印項目名和版本號。

3. 看門狗初始化(如果支持):

配置并啟動硬件看門狗,防止程序死循環卡死。

4. 加載功能模塊

加載網絡環境檢測看門狗模塊(network_watchdog)。

加載網絡驅動設備模塊(netdrv_device)。

加載串口應用模塊(uart_app)。

加載定時器應用模塊(timer_app)。

加載MQTT客戶端主模塊(mqtt_main)。

加載MQTT SSL客戶端主模塊(mqtts_main、mqtts_ca_main、mqtts_m_ca_main)。

5. 啟動任務調度器

調用sys.run()啟動LuatOS的任務調度器,開始執行各個任務。

wKgZO2jaFJqAXrjSABYWP5FlK7A246.png


6.2 網絡驅動 (netdrv/)

網絡驅動模塊負責初始化和管理不同的網絡連接方式,如 4G 和以太網。

6.2.1 4G 網絡驅動 (netdrv_4g.lua)

監聽IP_READY和IP_LOSE消息,監控網絡連接狀態。

設置默認網卡為socket.LWIP_GP。

wKgZPGjaFOuAS53nAAcJazRMga8062.png

6.2.2 以太網網絡驅動(netdrv_eth_spi.lua)

通過 SPI 接口外掛 CH390H 芯片實現以太網。

通過控制 GPIO20 引腳使能芯片供電。

配置 SPI1 接口參數,用于與 CH390H 芯片通信。

通過netdrv.setup函數配置以太網卡,并開啟 DHCP 動態獲取 IP 地址。

設置默認網卡為socket.LWIP_ETH。

wKgZO2jaFTSALy_sABCOJ6FyVBo616.png

6.2.3 多網絡驅動管理 (netdrv_multiple.lua)

管理多個網絡驅動實例,根據配置選擇合適的網絡連接方式。

通過exnetif.set_priority_order函數配置多網卡的控制參數以及優先級。

通過exnetif.notify_status函數設置網卡狀態變化通知回調函數。

wKgZPGjaFZGAYs44AA_ccTDuEvA230.png

6.3 MQTT 客戶端 (mqtt/,mqtts/,mqtts_ca/,mqtts_mutual_ca/)

每個 MQTT 客戶端目錄都包含三個核心文件:_main.lua、_receiver.lua和_sender.lua,分別負責客戶端的初始化、數據接收和數據發送。

6.3.1 客戶端初始化 (_main.lua)

注意:代碼中的 mqtt 服務器地址和端口會不定期重啟或維護,僅能用作測試用途,不可商用,說不定哪一天就關閉了。用戶開發項目時,需要替換為自己的商用服務器地址和端口。

創建 MQTT 客戶端對象,配置服務器地址、端口、客戶端 ID、用戶名、密碼等參數。

設置事件回調函數,處理連接、訂閱、接收和異常等事件。

啟動客戶端任務,開始連接 MQTT 服務器。

6.3.2 數據接收 (_receiver.lua)

實現proc函數,處理接收到的數據。

打印接收到的數據內容。

通過sys.publish("FEED_NETWORK_WATCHDOG")觸發網絡看門狗喂狗。

6.3.3 數據發送 (_sender.lua)

實現send函數,將數據添加到發送隊列。

管理發送隊列,按順序發送數據。

支持 QoS 配置和發送結果回調。

6.4 應用功能 (timer_app.lua,uart_app.lua)

應用功能模塊負責生成測試數據和處理串口通信。

6.4.1 定時器應用 (timer_app.lua)

創建一個 5 秒循環的定時器。

定時生成遞增的測試數據。

通過sys.publish("SEND_DATA_REQ", data)發布發送請求消息。

實現發送結果回調,根據發送結果決定是否重發數據。

wKgZPGjaFjWAO98tAArHpyvDMZk309.png

6.4.2 串口應用 (uart_app.lua)

配置 UART1,波特率為 115200。

接收來自 PC 的數據,并通過 MQTT 發送。

將 MQTT 接收到的數據通過串口輸出到 PC。

實現數據緩沖和超時處理。

wKgZO2jaFnCAMMf7AA-d6O9wbYQ474.png

6.5 網絡環境檢測看門狗 (network_watchdog.lua)

網絡看門狗模塊負責監控網絡連接狀態和數據收發情況,確保系統在網絡異常時能夠自動恢復。

6.5.1 設計原則

看門狗超時時間應大于任意一個 MQTT 連接的發送間隔。

通過接收FEED_NETWORK_WATCHDOG消息來喂狗。

超時未收到喂狗消息時,系統自動重啟。

6.5.2 實現細節

創建network_watchdog_task_func任務函數。

任務函數循環等待FEED_NETWORK_WATCHDOG消息,超時時間為 5 分鐘。

超時則調用sys.restart("network timeout")重啟系統。

wKgZPGjaFryAe9ThABVdAg4GHUs343.png

6.6 SSL 連接實現

項目展示了三種不同的 SSL 連接實現方式,滿足不同安全等級的需求。

6.6.1 無證書校驗 (mqtts/)

在創建 MQTT 客戶端時,設置ssl參數為true。

不進行服務器證書校驗,適用于對安全性要求不高的場景。

6.6.2 單向證書校驗 (mqtts_ca/)

加載服務器 CA 證書文件openluat_root_ca.crt。

在創建 MQTT 客戶端時,配置ssl參數,指定 CA 證書路徑。

依賴sntp_app.lua同步系統時間,以驗證證書有效期。

6.6.3 雙向證書校驗 (mqtts_mutual_ca/)

同時加載服務器 CA 證書、客戶端證書和客戶端私鑰。

在創建 MQTT 客戶端時,配置ssl參數,指定所有證書和密鑰的路徑。

使用特定端口(8886)進行連接。

七、系統與用戶消息類型

7.1 系統消息

IP_READY:網絡 IP 地址已準備好。

IP_LOSE:網絡 IP 地址丟失。

NTP_UPDATE:SNTP 時間同步完成。

7.2 用戶消息

RECV_DATA_FROM_SERVER:從 MQTT 服務器接收到數據。

SEND_DATA_REQ:請求發送數據。

FEED_NETWORK_WATCHDOG:網絡看門狗喂狗消息。

八、演示功能

8.1 準備工作

8.1.1 MQTT 客戶端建立

MQTT 客戶端測試工具:MQTT 客戶端軟件 MQTTX

(1)創建一個 MQTT 客戶端

這里我使用測試服務器(lbsmqtt.airm2m.com:1884)進行建立,大家一定不要將測試服務器用于正式批量的項目中。

wKgZPGjaF0qAMgg6AAJQDXLAPbY795.png

(2)設置發布/訂閱主題

在設置發布/訂閱主題時,主題格式一定要根據要求來寫,否則會出現數據無法通信的情況。

wKgZPGjaF8CAWW0gAAJXpu9Pq5s217.png

8.1.2 MQTT SSL 客戶端建立(無證書校驗、單向認證

MQTT 客戶端測試工具:MQTT 客戶端軟件 MQTTX

(1)創建一個 MQTT 客戶端

這里我使用測試服務器(airtest.openluat.com:8888)進行建立,大家一定不要將測試服務器用于正式批量的項目中。 無證書校驗、單向認證使用的是同一個域名端口,在 MQTTX 工具上創建客戶端只是用于與 Air780EPM 建立的 MQTT 客戶端進行數據通信,因此這時候可以在 MQTTX 工具上只建立一個 MQTT SSL 客戶端。

wKgZPGjaGAuAWsG8AALJjADkB0M341.png



(2)設置發布/訂閱主題

在設置發布/訂閱主題時,主題格式一定要根據要求來寫,否則會出現數據無法通信的情況。

wKgZPGjaGDmAODAGAAJPX8C57fQ908.png

8.1.3 MQTT SSL 客戶端建立(雙向認證)

MQTT 客戶端測試工具:MQTT 客戶端軟件 MQTTX

(1)創建一個 MQTT 客戶端

這里我使用測試服務器(airtest.openluat.com:8886)進行建立,大家一定不要將測試服務器用于正式批量的項目中。

wKgZPGjaGG6ALAK9AALamE-zIVk512.png

(2)設置發布/訂閱主題

在設置發布/訂閱主題時,主題格式一定要根據要求來寫,否則會出現數據無法通信的情況。

wKgZPGjaGaqARG77AAJbknIufgE927.png

8.2 不同網卡切換

Air780EPM 模組支持單 4g 網卡,單 spi 以太網卡,多網卡。

切換網卡為 4G 網卡:

在netdrv_device.lua模塊里只打開netdrv_4g模塊。netdrv_4g.lua模塊中的代碼不需要修改。

wKgZPGjaGd6AV6Q7AAK9_co-ZdQ194.png


LuaTools 工具日志打印:

如下圖所示,如出現類似I/user.netdrv_4g.ip_ready_func IP_READY 10.63.142.199 255.255.255.255 0.0.0.0 nil的日志,則表示 4g 網卡連接成功。

wKgZPGjaGgiAa3S_AAUSh23Vhnc488.png

切換網卡為以太網卡:

注意:Air780EPM 的以太網卡是通過 SPI 外掛 CH390H 芯片實現的。

在netdrv_device.lua模塊里只打開netdrv_eth_spi模塊。如果是使用官方的開發板,netdrv_eth_spi模塊中的代碼不需要修改。

wKgZO2jaGkqADoSLAAKZoYhVou4882.png

luatools 日志打印:

如出現類似I/user.netdrv_eth_spi.ip_ready_func IP_READY 192.168.0.168 255.255.255.0 192.168.0.1 nil的日志,則表示以太網卡聯網成功。

wKgZO2jaGnKAfQWBAATwf-8KF0s561.png

多網卡自動切換:

可根據自己的需求調整網卡的優先級,以下示例設置為以太網卡是最高優先級。

首先在netdrv_device.lua文件中只打開netdrv_multiple模塊。

wKgZPGjaGqCABd2iAALOAwQqa1k950.png

默認以太網卡進行連接

wKgZPGjaGsGAKkG5AASc_7sHwQY488.png

拔掉網線后,網絡切換為 4g 網卡

wKgZPGjaGuOAQd-iAAT1G-z1pPI564.png


8.3 MQTT 通信實操

MQTT 客戶端數據發送與接收:

下圖為 Air780EPM 模組建立的 MQTT 客戶端通過指定主題向其他同域名端口的 MQTT 客戶端發送數據成功后的日志打印。

wKgZPGjaGxyAO0fQAAU1KAc_dZM808.png

如下圖在 MQTTX 測試工具上建立相同域名端口的 MQTT 客戶端(Client ID 需要不一致),通過訂閱指定主題,可以接收到其他同域名端口的 MQTT 客戶端通過該指定主題發送的數據。

wKgZPGjaG2uAYwfDAAKjDn9TDHw073.png

如下圖所示,通過 MQTTX 測試工具上建立的 MQTT 客戶端向指定主題發送一個數據。

wKgZPGjaG6uAdQvOAAKFE25hEsI917.png

模組端在建立同域名端口的 MQTT 客戶端后,在代碼中還訂閱了指定主題,因此 MQTTX 測試工具上建立的同域名端口的 MQTT 客戶端通過指定主題發送數據時,模組端建立的同域名端口的 MQTT 客戶端可以接收到這個數據,并在代碼中做了處理,從而讓其顯示在 LuaTools 工具上。

wKgZPGjaG9OATN9RAAWWF1N9RKk961.png

在 PC 端使用串口工具發送數據給 Air780EPM,Air780EPM 內部會將接收到的數據通過建立的同域名端口的 MQTT 客戶端按照指定主題轉發出去,MQTTX 測試工具建立的同域名端口的 MQTT 客戶端通過訂閱這個指定主題可以接收到 Air780EPM 轉發出去的數據。

wKgZO2jaHAKANurdAAQyVtBrZ7c033.png

在 MQTTX 測試工具建立的同域名端口的 MQTT 客戶端,通過指定主題發送數據后,Air780EPM 模組建立的同域名端口的 MQTT 客戶端通過訂閱該指定主題后可以接收到數據,并將數據通過 UART 轉發給 PC 端串口工具。

wKgZO2jaHDCASyv1AAQFV9pGWqU238.png

MQTT SSL 客戶端(無證書校驗)數據發送與接收:

下圖為 Air780EPM 模組建立的 MQTT SSL 客戶端(無證書校驗)通過指定主題向其他同域名端口的 MQTT SSL 客戶端發送數據成功后的日志打印。

wKgZO2jaHFuAAZHQAAWL3qE4hJw033.png

如下圖在 MQTTX 測試工具上建立相域名端口的 MQTT SSL 客戶端(Client ID 需要不一致),通過訂閱指定主題,可以接收到其他同域名端口的 MQTT SSL 客戶通過該指定主題發送的數據。

wKgZPGjaHKSAEIXSAAMyXOhg2a8652.png


如下圖所示,通過 MQTTX 測試工具建立的同域名端口的 MQTT SSL 客戶端向指定主題發送一個數據。

wKgZPGjaHMeAHHy8AALKrwxSGcc513.png

模組端在建立同域名端口 MQTT SSL 客戶端(無證書校驗)后,在代碼中訂閱了這個指定主題,因此當 MQTTX 測試工具建立的同域名端口的 MQTT SSL 客戶端通過指定主題發送數據時,模組端建立的同域名端口的 MQTT SSL 客戶端(無證書校驗)可以接收到這個數據,并在代碼中做了處理,從而讓其顯示在 LuaTools 工具上。

wKgZO2jaHfKAeQeLAAbwTt0xVb8383.png

在 PC 端使用串口工具發送數據給 Air780EPM,Air780EPM 內部會將接收到的數據通過建立的同域名端口 MQTT SSL 客戶端(無證書校驗)按照指定主題轉發出去,MQTTX 測試工具建立的同域名端口的 MQTT SSL 客戶端通過訂閱這個指定主題可以接收到 Air780EPM 轉發出去的數據。

wKgZO2jaHhmAOHFdAARmDJsaG88945.png

在 MQTTX 測試工具建立的同域名端口的 MQTT SSL 客戶端(無證書校驗)通過指定主題發送數據后,Air780EPM 模組建立的同域名端口的 MQTT SSL 客戶端(無證書校驗)通過訂閱該指定主題后可以接收到數據,并將數據通過 UART 轉發給 PC 端串口工具。

wKgZO2jaHkWAC0fCAAQ6VbWUqJ4592.png

MQTT SSL 客戶端(單向認證)數據發送與接收

下圖為 Air780EPM 模組建立的 MQTT SSL 客戶端(單向認證)通過指定主題向其他同域名端口的 MQTT 客戶端發送數據成功后的日志打印。

wKgZO2jaHnCAI4AgAAWP9fS7Fyc664.png

如下圖在 MQTTX 測試工具上建立同域名端口的 MQTT SSL 客戶端(Client ID 需要不一致),通過訂閱指定主題,可以接收到其他同域名端口的 MQTT SSL 客戶通過該主題發送的數據。

wKgZO2jaHpyAMckpAAMMN8qfeCg430.png

如下圖所示,通過 MQTTX 測試工具建立的同域名端口的 MQTT SSL 客戶端(單向認證)向指定主題發送一個數據。

wKgZPGjaHsGAU2jCAAJu8l-SgBo964.png

模組端在建立同域名端口 MQTT SSL 客戶端(單向認證)后,在代碼中還訂閱了指定主題,因此當 MQTTX 測試工具建立的同域名端口的 MQTT SSL 客戶端通過指定主題發送數據時,模組端建立的同域名端口的 MQTT SSL 客戶端(單向認證)可以接收到這個數據,并在代碼中做了處理,從而讓其顯示在 LuaTools 工具上。

wKgZPGjaHuKAUMrBAAcp5FU0glM618.png

在 PC 端使用串口工具發送數據給 Air780EPM,Air780EPM 內部會將接收到的數據通過建立的同域名端口的 MQTT SSL 客戶端(單向認證)按照指定主題轉發出去,MQTTX 測試工具建立的同域名端口的 MQTT SSL 客戶端通過訂閱這個指定主題可以接收到 Air780EPM 轉發出去的數據。

wKgZO2jaHwGATk5pAAQP1h8g6f4019.png

在 MQTTX 測試工具建立的同域名端口的 MQTT SSL 客戶端(單向認證)通過指定主題發送數據后,Air780EPM 模組建立的同域名端口的 MQTT SSL 客戶端(單向認證)通過訂閱該指定主題后可以接收到數據,并將數據通過 UART 轉發給 PC 端串口工具。

wKgZPGjaHyOAICAhAAQ5UJS4fQk027.png

MQTT SSL 客戶端(雙向認證)數據發送與接收

下圖為 Air780EPM 模組建立的 MQTT SSL 客戶端(雙向認證)通過指定主題向其他同域名端口的 MQTT SSL 客戶端發送數據成功后的日志打印。

wKgZPGjaH0qAK7CCAAWQv_WHwBY567.png

如下圖在 MQTTX 測試工具上建立同域名端口的 MQTT 客戶端(Client ID 需要不一致),通過訂閱指定主題,可以接收到其他同域名端口的 MQTT 客戶端通過該主題發送的數據。

wKgZO2jaH3SALf_NAAJ_OYWmLwc027.png

如下圖所示,通過 MQTTX 測試工具建立的同域名端口的 MQTT SSL 客戶端向指定主題發送一個數據。

wKgZPGjaH56AZVsDAAJ5m-R1F7g470.png

模組端在建立同域名端口 MQTT SSL 客戶端(雙向認證)后,在代碼中還訂閱了指定主題,因此當 MQTTX 測試工具建立的同域名端口的 MQTT SSL 客戶端通過指定主題發送數據時,模組端建立的同域名端口的 MQTT SSL 客戶端(雙向認證)可以接收到這個數據,并在代碼中做了處理,從而讓其顯示在 LuaTools 工具上。

wKgZPGjaH8CAdXnQAAWrtVTEfhg615.png

在 PC 端使用串口工具發送數據給 Air780EPM,Air780EPM 內部會將接收到的數據通過建立的 MQTT SSL 客戶端(雙向認證)按照指定主題轉發出去,MQTTX 測試工具建立的同域名端口的 MQTT SSL 客戶端通過訂閱這個指定主題可以接收到 Air780EPM 轉發出去的數據。

wKgZO2jaH-WAdgIXAAPKxMTMJ8E112.png

在 MQTTX 測試工具建立的同域名端口的 MQTT SSL 客戶端(雙向認證)通過指定主題發送數據后,Air780EPM 模組建立的同域名端口的 MQTT SSL 客戶端(雙向認證)通過訂閱該指定主題后可以接收到數據,并將數據通過 UART 轉發給 PC 端串口工具。

wKgZPGjaIBCAFlHIAARD7gCrX58239.png

九、總結

至此,我們演示了使用不同網卡進行 MQTT 通信的全過程,相信聰明的你已經完全領悟 MQTT 通信的邏輯了,快來實際操作一下吧!

審核編輯 黃宇

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

    關注

    2945

    文章

    47818

    瀏覽量

    414810
  • MQTT
    +關注

    關注

    5

    文章

    733

    瀏覽量

    25065
  • LuatOS
    +關注

    關注

    0

    文章

    156

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    一文搞懂Air780EPM的NTP通信LuatOS腳本開發教程

    ?想在Air780EPM上用LuatOS實現NTP時間同步?這篇教程將用最通俗的方式講解實現原理與代碼實現,讓你快速掌握關鍵技能。 一、NTP通信概述 ? 1.1 NTP 網絡時間協議(英語
    的頭像 發表于 09-30 18:19 ?2229次閱讀
    一文搞懂<b class='flag-5'>Air780EPM</b>的NTP<b class='flag-5'>通信</b>:<b class='flag-5'>LuatOS</b>腳本<b class='flag-5'>開發</b>教程

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

    通過LuatOS腳本在Air780EPM開發板上實現MQTT通信,是物聯網設備開發中高效且便捷的
    的頭像 發表于 09-30 16:11 ?1821次閱讀
    <b class='flag-5'>Air780EPM</b><b class='flag-5'>嵌入式開發</b>:<b class='flag-5'>LuatOS</b>下的<b class='flag-5'>MQTT</b><b class='flag-5'>通信</b>實踐

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

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

    Air780EPM開發板NTP對時教程:LuatOS腳本開發入門指南

    通過簡單的LuatOS腳本,Air780EPM即可實現NTP時間同步。本指南從零開始,帶你掌握嵌入式設備聯網校時的核心方法。 一、NTP通信概述 1.1 NTP 網絡時間協議(英語:N
    的頭像 發表于 09-30 16:01 ?1166次閱讀
    <b class='flag-5'>Air780EPM</b><b class='flag-5'>開發</b>板NTP對時教程:<b class='flag-5'>LuatOS</b>腳本<b class='flag-5'>開發</b>入門指南

    Air780EPM開發板FTP功能實戰LuatOS嵌入式開發全解析

    本文深入講解Air780EPM模組在LuatOS環境下的FTP應用開發,涵蓋AT指令配置、網絡連接與文件傳輸流程,助你高效完成嵌入式通信項目
    的頭像 發表于 09-29 15:37 ?490次閱讀
    <b class='flag-5'>Air780EPM</b><b class='flag-5'>開發</b>板FTP功能<b class='flag-5'>實戰</b>:<b class='flag-5'>LuatOS</b><b class='flag-5'>嵌入式開發</b>全解析

    LuatOS Air780EPM 開發板 HTTP 教程:原理講解與項目實操!

    本篇教程將系統介紹 LuatOS Air780EPM 在 HTTP 通信中的應用,從請求機制到響應解析,配合完整代碼演示,讓你輕松實現設備端與云端的數據交互。 一、HTTP 概述 1.1
    的頭像 發表于 09-26 20:36 ?997次閱讀
    <b class='flag-5'>LuatOS</b> <b class='flag-5'>Air780EPM</b> <b class='flag-5'>開發</b>板 HTTP 教程:原理講解與項目實操!

    優化你的設計:Air780EPM場景化ADC硬件電路指南!

    Air780EPM的ADC精度怎么樣,想節約一顆外掛ADC… ? 今天也跟大家一起分享下相關內容。在設計ADC硬件電路之前,請務必先查看LuatOS二次開發ADC相關庫函數的描述。 最新ADC庫函數詳見
    的頭像 發表于 06-13 18:02 ?915次閱讀
    優化你的設計:<b class='flag-5'>Air780EPM</b>場景化ADC硬件電路指南!

    Air780EPM — ADC硬件電路設計:場景化優化與實踐!

    Air780EPM的ADC精度怎么樣,想節約一顆外掛ADC… ? 今天也跟大家一起分享下相關內容。在設計ADC硬件電路之前,請務必先查看LuatOS二次開發ADC相關庫函數的描述。 最新ADC庫函數
    的頭像 發表于 06-11 14:40 ?648次閱讀
    <b class='flag-5'>Air780EPM</b> — ADC硬件電路設計:場景化優化與實踐!

    解鎖Air780EPM:N種GPIO操控LED的實戰技巧!

    在物聯網項目中,靈活使用Air780EPM的GPIO控制LED至關重要。本文將展示實現方式,涵蓋硬件配置與軟件編程,滿足不同場景需求。 今天特別分享基于Air780EPM的GPIO控制LED實現方案
    的頭像 發表于 05-28 16:56 ?867次閱讀
    解鎖<b class='flag-5'>Air780EPM</b>:N種GPIO操控LED的<b class='flag-5'>實戰</b>技巧!

    如何解決Air780EPM開發中的調試難題?深度解析高效調試方法

    Air780EPM項目開發中,調試效率往往直接影響進度。面對代碼報錯、邏輯漏洞等常見痛點,開發者亟需一套系統化的方法論。本文將揭秘實戰中驗證的調試技巧,助您快速定位問題并優化代碼流程
    的頭像 發表于 05-17 10:46 ?749次閱讀
    如何解決<b class='flag-5'>Air780EPM</b><b class='flag-5'>開發</b>中的調試難題?深度解析高效調試方法

    深度解析Air780EPM模組:LuatOS下CAN總線通信的完整方案!

    本文聚焦Air780EPM的CAN通信能力,結合LuatOS實時操作系統,從底層驅動到應用層協議,詳細拆解如何實現工業級CAN總線數據傳輸,助力開發者快速落地項目。 最新資料詳見: h
    的頭像 發表于 05-06 14:22 ?879次閱讀
    深度解析<b class='flag-5'>Air780EPM</b>模組:<b class='flag-5'>LuatOS</b>下CAN總線<b class='flag-5'>通信</b>的完整方案!

    血淚教訓總結:Air780EPMLuatOS二次開發——OneWire協議調試注意事項

    的OneWire通信,大幅提升項目開發效率。 一、LuatOS 及 OneWire 說明 ? LuatOS 支持 OneWire 通信協議,
    的頭像 發表于 03-20 17:52 ?1147次閱讀
    血淚教訓總結:<b class='flag-5'>Air780EPM</b>的<b class='flag-5'>LuatOS</b>二次<b class='flag-5'>開發</b>——OneWire協議調試注意事項

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

    ,構建穩定高效的物聯網系統。 一、概述 ? 開發方式 :Air780EPM 僅支持 LuatOS 軟件開發方式,不支持 AT 指令開發方式。
    的頭像 發表于 03-20 17:48 ?771次閱讀
    新手必看!4G模組<b class='flag-5'>Air780EPM</b>——GPIO的設計說明

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

    ? 開發方式 :Air780EPM 僅支持 LuatOS 軟件開發方式,不支持 AT 指令開發方式。若使用 AT 指令
    的頭像 發表于 03-17 16:07 ?1116次閱讀
    手把手教你!4G模組<b class='flag-5'>Air780EPM</b>——GPIO的設計說明

    Air780EPM 模塊串口電路設計硬件指導

    串口作為Air780EPM模塊的核心通信接口,承擔著設備控制、數據傳輸及外設交互等關鍵功能,在物聯網終端、智能設備、工業自動化等場景中不可或缺。 一、概述 ? 串口作為 Air780EPM 模塊最最
    的頭像 發表于 03-07 17:56 ?788次閱讀
    <b class='flag-5'>Air780EPM</b> 模塊串口電路設計硬件指導