chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內(nèi)不再提示

Air780EPM嵌入式開發(fā):LuatOS下的MQTT通信實踐

青山老竹農(nóng) ? 來源:jf_82863998 ? 作者:jf_82863998 ? 2025-09-30 16:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

通過LuatOS腳本在Air780EPM開發(fā)板上實現(xiàn)MQTT通信,是物聯(lián)網(wǎng)設(shè)備開發(fā)中高效且便捷的解決方案。


一、MQTT 協(xié)議詳解

1.1 什么是 MQTT?

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

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

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

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

MQTT 協(xié)議由 IBM 在 1999 年開發(fā),現(xiàn)在是 ISO 標準(ISO/IEC 20922),適用于物聯(lián)網(wǎng)(IoT)和機器對機器(M2M)通信。

1.2 MQTT 的核心工作機制

1. 發(fā)布/訂閱模式:

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

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

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

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

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

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

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

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

3. 輕量級設(shè)計:

MQTT 協(xié)議頭最小只有 2 字節(jié),非常適合網(wǎng)絡帶寬和設(shè)備資源有限的環(huán)境。

協(xié)議簡單,易于實現(xiàn),降低了開發(fā)成本。

1.3 MQTT 的主要優(yōu)勢

低帶寬消耗:協(xié)議設(shè)計精簡,有效減少網(wǎng)絡流量。

低功耗:適用于電池供電的設(shè)備。

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

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

多語言支持:支持多種編程語言,便于開發(fā)。

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

1.4 典型應用場景

智能家居智能燈泡、智能插座、溫控器等設(shè)備通過 MQTT 與家庭網(wǎng)關(guān)通信。

工業(yè)自動化:傳感器數(shù)據(jù)采集、設(shè)備狀態(tài)監(jiān)控。

環(huán)境監(jiān)測:氣象站、水質(zhì)監(jiān)測站等遠程數(shù)據(jù)收集。

車聯(lián)網(wǎng):車輛狀態(tài)信息上報、遠程控制指令下發(fā)。

醫(yī)療監(jiān)控:遠程病人監(jiān)護設(shè)備數(shù)據(jù)傳輸。

二、演示功能概述

1. 創(chuàng)建四路 mqtt 連接,詳情如下

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

創(chuàng)建一個 mqtt client,連接 mqtt server;

創(chuàng)建一個 mqtt ssl client,連接 mqtt ssl server,不做證書校驗;

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

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

2. 每一路 mqtt 連接出現(xiàn)異常后,自動重連;

3. 每一路 mqtt 連接,client 按照以下幾種邏輯發(fā)送數(shù)據(jù)給 server

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

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

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

5. 啟動一個網(wǎng)絡業(yè)務邏輯看門狗 task,用來監(jiān)控網(wǎng)絡環(huán)境,如果連續(xù)長時間工作不正常,重啟整個軟件系統(tǒng);

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

(1) netdrv_4g:4G 網(wǎng)卡

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

(3) netdrv_multiple:支持以上兩種網(wǎng)卡,可以配置兩種網(wǎng)卡的優(yōu)先級

三、演示硬件環(huán)境

wKgZO2jaER6AF4oMAB1yMscsVPo036.png

1、Air780EPM V1.3 版本開發(fā)板一塊 + 可上網(wǎng)的 sim 卡一張 +4g 天線一根 + 網(wǎng)線一根:

sim 卡插入開發(fā)板的 sim 卡槽

天線裝到開發(fā)板上

網(wǎng)線一端插入開發(fā)板網(wǎng)口,另外一端連接可以上外網(wǎng)的路由器網(wǎng)口

2、TYPE-C USB 數(shù)據(jù)線一根 + USB 轉(zhuǎn)串口數(shù)據(jù)線一根,Air780EPM V1.3 版本開發(fā)板和數(shù)據(jù)線的硬件接線方式為:

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

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

USB 轉(zhuǎn)串口數(shù)據(jù)線,一般來說,白線連接開發(fā)板的 UART1_TX,綠線連接開發(fā)板的 UART1_RX,黑線連接核心板的 GND,另外一端連接電腦 USB 口;

四、演示軟件環(huán)境

4.1 軟件環(huán)境

1. 燒錄工具:Luatools 下載調(diào)試工具

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

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

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

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

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

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

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/

五、程序結(jié)構(gòu)

wKgZPGjaFDSAUnSWAARMisrqKv0249.png

5.1 文件說明

main.lua:主程序入口文件,負責初始化系統(tǒng)、啟動網(wǎng)絡驅(qū)動和 MQTT 客戶端。

mqtt/:普通 MQTT 連接相關(guān)文件。

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

mqtt_receiver.lua:普通 MQTT 客戶端的數(shù)據(jù)接收處理。

mqtt_sender.lua:普通 MQTT 客戶端的數(shù)據(jù)發(fā)送隊列管理。

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

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

mqtts_receiver.lua:MQTT SSL 客戶端的數(shù)據(jù)接收處理。

mqtts_sender.lua:MQTT SSL 客戶端的數(shù)據(jù)發(fā)送隊列管理。

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

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

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

mqtts_ca_sender.lua:MQTT SSL 單向證書校驗客戶端的數(shù)據(jù)發(fā)送隊列管理。

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

sntp_app.lua:時間同步應用。

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

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

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

mqtts_m_ca_sender.lua:MQTT SSL 雙向證書校驗客戶端的數(shù)據(jù)發(fā)送隊列管理。

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

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

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

sntp_app.lua:時間同步應用。

netdrv/:網(wǎng)絡驅(qū)動相關(guān)文件。

netdrv_4g.lua:4G 網(wǎng)絡驅(qū)動。

netdrv_eth_spi.lua:SPI 以太網(wǎng)驅(qū)動。

netdrv_multiple.lua:多網(wǎng)絡驅(qū)動管理。

netdrv_device.lua:網(wǎng)絡設(shè)備配置文件。

network_watchdog.lua:網(wǎng)絡環(huán)境檢測看門狗。

timer_app.lua:定時器應用,用于生成測試數(shù)據(jù)。

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

六、核心模塊詳解

6.1 主程序 (main.lua)

主程序文件main.lua是整個項目的入口點。它負責初始化系統(tǒng)環(huán)境。

6.1.1 初始化流程

1. 項目和版本定義

定義PROJECT和VERSION變量。

2. 日志記錄

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

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

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

4. 加載功能模塊

加載網(wǎng)絡環(huán)境檢測看門狗模塊(network_watchdog)。

加載網(wǎng)絡驅(qū)動設(shè)備模塊(netdrv_device)。

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

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

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

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

5. 啟動任務調(diào)度器

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

wKgZO2jaFJqAXrjSABYWP5FlK7A246.png


6.2 網(wǎng)絡驅(qū)動 (netdrv/)

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

6.2.1 4G 網(wǎng)絡驅(qū)動 (netdrv_4g.lua)

監(jiān)聽IP_READY和IP_LOSE消息,監(jiān)控網(wǎng)絡連接狀態(tài)。

設(shè)置默認網(wǎng)卡為socket.LWIP_GP。

wKgZPGjaFOuAS53nAAcJazRMga8062.png

6.2.2 以太網(wǎng)網(wǎng)絡驅(qū)動(netdrv_eth_spi.lua)

通過 SPI 接口外掛 CH390H 芯片實現(xiàn)以太網(wǎng)。

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

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

通過netdrv.setup函數(shù)配置以太網(wǎng)卡,并開啟 DHCP 動態(tài)獲取 IP 地址。

設(shè)置默認網(wǎng)卡為socket.LWIP_ETH。

wKgZO2jaFTSALy_sABCOJ6FyVBo616.png

6.2.3 多網(wǎng)絡驅(qū)動管理 (netdrv_multiple.lua)

管理多個網(wǎng)絡驅(qū)動實例,根據(jù)配置選擇合適的網(wǎng)絡連接方式。

通過exnetif.set_priority_order函數(shù)配置多網(wǎng)卡的控制參數(shù)以及優(yōu)先級。

通過exnetif.notify_status函數(shù)設(shè)置網(wǎng)卡狀態(tài)變化通知回調(diào)函數(shù)。

wKgZPGjaFZGAYs44AA_ccTDuEvA230.png

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

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

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

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

創(chuàng)建 MQTT 客戶端對象,配置服務器地址、端口、客戶端 ID、用戶名、密碼等參數(shù)。

設(shè)置事件回調(diào)函數(shù),處理連接、訂閱、接收和異常等事件。

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

6.3.2 數(shù)據(jù)接收 (_receiver.lua)

實現(xiàn)proc函數(shù),處理接收到的數(shù)據(jù)。

打印接收到的數(shù)據(jù)內(nèi)容。

通過sys.publish("FEED_NETWORK_WATCHDOG")觸發(fā)網(wǎng)絡看門狗喂狗。

6.3.3 數(shù)據(jù)發(fā)送 (_sender.lua)

實現(xiàn)send函數(shù),將數(shù)據(jù)添加到發(fā)送隊列。

管理發(fā)送隊列,按順序發(fā)送數(shù)據(jù)。

支持 QoS 配置和發(fā)送結(jié)果回調(diào)。

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

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

6.4.1 定時器應用 (timer_app.lua)

創(chuàng)建一個 5 秒循環(huán)的定時器。

定時生成遞增的測試數(shù)據(jù)。

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

實現(xiàn)發(fā)送結(jié)果回調(diào),根據(jù)發(fā)送結(jié)果決定是否重發(fā)數(shù)據(jù)。

wKgZPGjaFjWAO98tAArHpyvDMZk309.png

6.4.2 串口應用 (uart_app.lua)

配置 UART1,波特率為 115200。

接收來自 PC 的數(shù)據(jù),并通過 MQTT 發(fā)送。

將 MQTT 接收到的數(shù)據(jù)通過串口輸出到 PC。

實現(xiàn)數(shù)據(jù)緩沖和超時處理。

wKgZO2jaFnCAMMf7AA-d6O9wbYQ474.png

6.5 網(wǎng)絡環(huán)境檢測看門狗 (network_watchdog.lua)

網(wǎng)絡看門狗模塊負責監(jiān)控網(wǎng)絡連接狀態(tài)和數(shù)據(jù)收發(fā)情況,確保系統(tǒng)在網(wǎng)絡異常時能夠自動恢復。

6.5.1 設(shè)計原則

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

通過接收FEED_NETWORK_WATCHDOG消息來喂狗。

超時未收到喂狗消息時,系統(tǒng)自動重啟。

6.5.2 實現(xiàn)細節(jié)

創(chuàng)建network_watchdog_task_func任務函數(shù)。

任務函數(shù)循環(huán)等待FEED_NETWORK_WATCHDOG消息,超時時間為 5 分鐘。

超時則調(diào)用sys.restart("network timeout")重啟系統(tǒng)。

wKgZPGjaFryAe9ThABVdAg4GHUs343.png

6.6 SSL 連接實現(xiàn)

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

6.6.1 無證書校驗 (mqtts/)

在創(chuàng)建 MQTT 客戶端時,設(shè)置ssl參數(shù)為true。

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

6.6.2 單向證書校驗 (mqtts_ca/)

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

在創(chuàng)建 MQTT 客戶端時,配置ssl參數(shù),指定 CA 證書路徑。

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

6.6.3 雙向證書校驗 (mqtts_mutual_ca/)

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

在創(chuàng)建 MQTT 客戶端時,配置ssl參數(shù),指定所有證書和密鑰的路徑。

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

七、系統(tǒng)與用戶消息類型

7.1 系統(tǒng)消息

IP_READY:網(wǎng)絡 IP 地址已準備好。

IP_LOSE:網(wǎng)絡 IP 地址丟失。

NTP_UPDATE:SNTP 時間同步完成。

7.2 用戶消息

RECV_DATA_FROM_SERVER:從 MQTT 服務器接收到數(shù)據(jù)。

SEND_DATA_REQ:請求發(fā)送數(shù)據(jù)。

FEED_NETWORK_WATCHDOG:網(wǎng)絡看門狗喂狗消息。

八、演示功能

8.1 準備工作

8.1.1 MQTT 客戶端建立

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

(1)創(chuàng)建一個 MQTT 客戶端

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

wKgZPGjaF0qAMgg6AAJQDXLAPbY795.png

(2)設(shè)置發(fā)布/訂閱主題

在設(shè)置發(fā)布/訂閱主題時,主題格式一定要根據(jù)要求來寫,否則會出現(xiàn)數(shù)據(jù)無法通信的情況。

wKgZPGjaF8CAWW0gAAJXpu9Pq5s217.png

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

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

(1)創(chuàng)建一個 MQTT 客戶端

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

wKgZPGjaGAuAWsG8AALJjADkB0M341.png



(2)設(shè)置發(fā)布/訂閱主題

在設(shè)置發(fā)布/訂閱主題時,主題格式一定要根據(jù)要求來寫,否則會出現(xiàn)數(shù)據(jù)無法通信的情況。

wKgZPGjaGDmAODAGAAJPX8C57fQ908.png

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

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

(1)創(chuàng)建一個 MQTT 客戶端

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

wKgZPGjaGG6ALAK9AALamE-zIVk512.png

(2)設(shè)置發(fā)布/訂閱主題

在設(shè)置發(fā)布/訂閱主題時,主題格式一定要根據(jù)要求來寫,否則會出現(xiàn)數(shù)據(jù)無法通信的情況。

wKgZPGjaGaqARG77AAJbknIufgE927.png

8.2 不同網(wǎng)卡切換

Air780EPM 模組支持單 4g 網(wǎng)卡,單 spi 以太網(wǎng)卡,多網(wǎng)卡。

切換網(wǎng)卡為 4G 網(wǎng)卡:

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

wKgZPGjaGd6AV6Q7AAK9_co-ZdQ194.png


LuaTools 工具日志打?。?/strong>

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

wKgZPGjaGgiAa3S_AAUSh23Vhnc488.png

切換網(wǎng)卡為以太網(wǎng)卡:

注意:Air780EPM 的以太網(wǎng)卡是通過 SPI 外掛 CH390H 芯片實現(xiàn)的。

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

wKgZO2jaGkqADoSLAAKZoYhVou4882.png

luatools 日志打?。?/p>

如出現(xiàn)類似I/user.netdrv_eth_spi.ip_ready_func IP_READY 192.168.0.168 255.255.255.0 192.168.0.1 nil的日志,則表示以太網(wǎng)卡聯(lián)網(wǎng)成功。

wKgZO2jaGnKAfQWBAATwf-8KF0s561.png

多網(wǎng)卡自動切換:

可根據(jù)自己的需求調(diào)整網(wǎng)卡的優(yōu)先級,以下示例設(shè)置為以太網(wǎng)卡是最高優(yōu)先級。

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

wKgZPGjaGqCABd2iAALOAwQqa1k950.png

默認以太網(wǎng)卡進行連接

wKgZPGjaGsGAKkG5AASc_7sHwQY488.png

拔掉網(wǎng)線后,網(wǎng)絡切換為 4g 網(wǎng)卡

wKgZPGjaGuOAQd-iAAT1G-z1pPI564.png


8.3 MQTT 通信實操

MQTT 客戶端數(shù)據(jù)發(fā)送與接收:

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

wKgZPGjaGxyAO0fQAAU1KAc_dZM808.png

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

wKgZPGjaG2uAYwfDAAKjDn9TDHw073.png

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

wKgZPGjaG6uAdQvOAAKFE25hEsI917.png

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

wKgZPGjaG9OATN9RAAWWF1N9RKk961.png

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

wKgZO2jaHAKANurdAAQyVtBrZ7c033.png

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

wKgZO2jaHDCASyv1AAQFV9pGWqU238.png

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

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

wKgZO2jaHFuAAZHQAAWL3qE4hJw033.png

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

wKgZPGjaHKSAEIXSAAMyXOhg2a8652.png


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

wKgZPGjaHMeAHHy8AALKrwxSGcc513.png

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

wKgZO2jaHfKAeQeLAAbwTt0xVb8383.png

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

wKgZO2jaHhmAOHFdAARmDJsaG88945.png

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

wKgZO2jaHkWAC0fCAAQ6VbWUqJ4592.png

MQTT SSL 客戶端(單向認證)數(shù)據(jù)發(fā)送與接收

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

wKgZO2jaHnCAI4AgAAWP9fS7Fyc664.png

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

wKgZO2jaHpyAMckpAAMMN8qfeCg430.png

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

wKgZPGjaHsGAU2jCAAJu8l-SgBo964.png

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

wKgZPGjaHuKAUMrBAAcp5FU0glM618.png

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

wKgZO2jaHwGATk5pAAQP1h8g6f4019.png

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

wKgZPGjaHyOAICAhAAQ5UJS4fQk027.png

MQTT SSL 客戶端(雙向認證)數(shù)據(jù)發(fā)送與接收

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

wKgZPGjaH0qAK7CCAAWQv_WHwBY567.png

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

wKgZO2jaH3SALf_NAAJ_OYWmLwc027.png

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

wKgZPGjaH56AZVsDAAJ5m-R1F7g470.png

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

wKgZPGjaH8CAdXnQAAWrtVTEfhg615.png

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

wKgZO2jaH-WAdgIXAAPKxMTMJ8E112.png

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

wKgZPGjaIBCAFlHIAARD7gCrX58239.png

九、總結(jié)

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

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5172

    文章

    19964

    瀏覽量

    324184
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2938

    文章

    46906

    瀏覽量

    402245
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    708

    瀏覽量

    24399
  • LuatOS
    +關(guān)注

    關(guān)注

    0

    文章

    117

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

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

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

    實戰(zhàn)Air780EPM:構(gòu)建4G共享網(wǎng)關(guān),服務WiFi與有線設(shè)備!

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

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

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

    LuatOS嵌入式開發(fā)實戰(zhàn):Air780EPMMQTT通信

    ?本教程聚焦于LuatOSAir780EPM開發(fā)板上的應用,演示如何通過腳本實現(xiàn)MQTT協(xié)議通信,助力物聯(lián)網(wǎng)設(shè)備快速聯(lián)網(wǎng)。 一、
    的頭像 發(fā)表于 09-29 18:10 ?156次閱讀
    <b class='flag-5'>LuatOS</b><b class='flag-5'>嵌入式開發(fā)</b>實戰(zhàn):<b class='flag-5'>Air780EPM</b>與<b class='flag-5'>MQTT</b><b class='flag-5'>通信</b>

    Air780EPM開發(fā)板FTP功能實戰(zhàn):LuatOS嵌入式開發(fā)全解析

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

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

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

    Air8101多網(wǎng)融合戰(zhàn)略升級:Air780EPM模塊助力4G聯(lián)網(wǎng)落地

    在物聯(lián)網(wǎng)通信技術(shù)持續(xù)迭代的背景Air8101通過戰(zhàn)略級模塊外掛——Air780EPM,正式邁入4G聯(lián)網(wǎng)時代。多網(wǎng)融合架構(gòu)的完善,使設(shè)備在復雜環(huán)境中仍能保持高速、穩(wěn)定的數(shù)據(jù)傳輸性能,
    的頭像 發(fā)表于 06-23 16:53 ?283次閱讀
    <b class='flag-5'>Air</b>8101多網(wǎng)融合戰(zhàn)略升級:<b class='flag-5'>Air780EPM</b>模塊助力4G聯(lián)網(wǎng)落地

    優(yōu)化你的設(shè)計:Air780EPM場景化ADC硬件電路指南!

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

    Air780EPM — ADC硬件電路設(shè)計:場景化優(yōu)化與實踐

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

    解鎖Air780EPM:N種GPIO操控LED的實戰(zhàn)技巧!

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

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

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

    血淚教訓總結(jié):Air780EPMLuatOS二次開發(fā)——OneWire協(xié)議調(diào)試注意事項

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

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

    ,構(gòu)建穩(wěn)定高效的物聯(lián)網(wǎng)系統(tǒng)。 一、概述 ? 開發(fā)方式 :Air780EPM 僅支持 LuatOS 軟件開發(fā)方式,不支持 AT 指令開發(fā)方式。
    的頭像 發(fā)表于 03-20 17:48 ?480次閱讀
    新手必看!4G模組<b class='flag-5'>Air780EPM</b>——GPIO的設(shè)計說明

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

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

    Air780EPM 模塊串口電路設(shè)計硬件指導

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