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

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

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

快速上手:Air201之MQTT快速入門指南!

合宙LuatOS ? 來源:合宙LuatOS ? 作者:合宙LuatOS ? 2024-11-04 16:52 ? 次閱讀

我們今天分享的是關(guān)于Air201之MQTT快速入門,學(xué)習(xí)了本文后,相信大家對其都有深刻的認識。

本指南教你通過使用腳本代碼,對Air201模組進行MQTT鏈接操作。

操作例程包括:

MQTT單鏈接

MQTT多鏈接

MQTT SSL不帶證書鏈接

MQTT SSL帶證書鏈接

大家可根據(jù)自身需求,選擇對應(yīng)的例程學(xué)習(xí)。

1. 搭建環(huán)境

新同學(xué)建議先看前期的基礎(chǔ)知識相關(guān)教程,更有助于理解和操作。

wKgaoWcoiMuAWJGtAANRTkjo3UE308.png

本章所需要用到的腳本存于LuatOS-Air201demomqtt文件夾中;若沒有找到該腳本,可能代碼并非最新,請根據(jù)前面教學(xué)重新拉取。

1.1 硬件準備

wKgaoWcoiN6AXt3hAAWAUQbCugc958.png

Air201 PCBA

帶有數(shù)據(jù)通信功能的數(shù)據(jù)線

Win10以上PC

1.2 軟件準備

LuaTools調(diào)試工具:
https://docs.openluat.com/Luatools/

最新固件:
https://gitee.com/openLuat/LuatOS-Air201/tree/master/core

最新腳本:
https://gitee.com/openLuat/LuatOS-Air201/tree/master/demo/mqtt

MQTTX工具:
https://mqttx.app/

本指南以MQTTX工具為例進行學(xué)習(xí),大家也可以使用其他MQTT工具。

我們先把MQTTX工具配置一下:

▼ MQTTX工具配置 ▼

下載好軟件后,根據(jù)下方圖中操作指示填寫信息

wKgaoWcoiQCAIFuLAAG_gU_acFc827.png

填寫好信息,點擊右上角【連接】。

下一步,開始添加訂閱主題和發(fā)布消息主題:

wKgaomcoiQ2AfZyHAAGA14BH4WM245.png


這里,要特別注意一下主題格式。

訂閱主題格式

要求默認為:/luatos/pub/ 加模組的IMEI號
例如:
/luatos/pub/864536071785271

發(fā)布主題格式
要求默認為:/luatos/sub/ 加模組的IMEI號
例如:
/luatos/sub/864536071785271

MQTTX配置已經(jīng)完成,現(xiàn)在開始正式學(xué)習(xí)。學(xué)成之后便可通過MQTT進行自由通信了,實際效果如下圖所示:

wKgZomcoiRyAWV9XAAPnMVbODM0022.png

2.MQTT單鏈接示例

2.1 main.lua說明

在main.lua中我們需要調(diào)用single_mqtt,代碼參考如下:

wKgaoWcoiTGATJyfAARe6d2Tqes195.png

2.2 single_mqtt.lua說明

下面將對single_mqtt.lua中的代碼進行簡單說明,并指導(dǎo)大家修改指定參數(shù),以便順利進行MQTT單鏈接操作。

1)在代碼開頭部分,根據(jù)自己的服務(wù)器修改指定的參數(shù)。

需要注意的是user_name和password在有些服務(wù)器上是可以不傳入的,或者是對傳入的值沒有要求限制。

要根據(jù)實際服務(wù)器要求來填寫。

wKgaoWcoiUCAAgZPAAKsOz9Aa6k477.png

2)此task實現(xiàn)的是MQTT的連接、訂閱消息、發(fā)布消息的流程。

要先等待網(wǎng)絡(luò)就緒之后,才可進行MQTT后續(xù)操作。

待網(wǎng)絡(luò)就緒之后,根據(jù)代碼編寫情況此時client_id、pub_topic和sub_topic會發(fā)生變化,會覆蓋掉代碼開頭部分時的配置,這點需要注意。device_id為模組的IMEI號。

wKgZomcoiVGAXdGVAAT9bBUwaCM504.pngwKgaoWcoiWSALn1DAAdElI8L5Ng956.pngwKgZoWcoiX2AQuEJAANnGi5sRYE936.png

3)此task的功能為模組每3秒向服務(wù)器發(fā)送一次數(shù)據(jù):

wKgaomcoiYuAdF_SAALCWvqQs1A412.png

4)此代碼可實現(xiàn)mqtt-uart透傳,利用串口工具給服務(wù)器發(fā)消息或者接收來自服務(wù)器的消息。

注意:要使用串口1,且波特率為9600。

wKgZomcoiZiAG62fAAQ95v2Uf4E081.png

5)此task是通過使用rtos.meminfo()查詢內(nèi)存信息,并進行打印。

RTOS庫詳細信息請參考:

RTOS底層操作庫

https://wiki.luatos.com/api/rtos.html?highlight=rtos#rtos-meminfo-type

wKgaomcoiaWAL86HAAFRj5_hK-g267.png

2.3 示例效果

MQTT單鏈接示例如下圖所示,實現(xiàn)效果為模塊每3秒向服務(wù)器發(fā)送一次數(shù)據(jù)。

wKgZomcoibeANB89AAPRwQ7nRJs182.png

前面代碼中所提到的mqtt-uart透傳實現(xiàn)效果圖如下所示:

wKgaomcoiciAdZjZAAL_BbCxcY0912.png

3. MQTT多鏈接示例

3.1 main.lua說明

在main.lua中我們需要調(diào)用multilink_mqtt,代碼參考如下:

wKgZomcoid2Aa1tuAARhvggbgt4838.png

3.2 multilink_mqtt.lua說明

1)在代碼開頭部分,請根據(jù)自己的服務(wù)器修改指定的參數(shù)。

特別說明:
client1_pub_topic
client1_sub_topic
client2_pub_topic
client2_sub_topic

以上幾項在后面函數(shù)中會再次賦參數(shù),因此會覆蓋掉這里的參數(shù),所以大家可以選擇不填。

wKgaomcoifiAHVnuAAP_hJ2ZJBE324.png

2)此create_mqtt函數(shù)主要功能是創(chuàng)建并配置MQTT客戶端對象。

具體步驟包括:

使用mqtt.create創(chuàng)建一個MQTT客戶端對象,并將其存儲在mqtt_param表的mqttc字段中;

使用log.info打印MQTT客戶端的配置信息;

使用mqttc:auth進行MQTT三元組配置;

使用mqttc:autoreconn配置自動重連機制,true表示啟動自動重連機制,3000為自動重連周期,單位為ms。

wKgZomcoigeARpOoAASKkT1Svww514.png

3)此mqtt_client1函數(shù)主要功能是創(chuàng)建并配置一個MQTT客戶端1(client1),并鏈接到指定的MQTT服務(wù)器。

具體步驟包括:

client1_pub_topic和client1_sub_topic分別定義了客戶端1的上報主題和訂閱主題,device_id為設(shè)備的IMEI號;

使用log.info函數(shù)打印客戶端1的上報和下發(fā)主題;

使用create_mqtt函數(shù)創(chuàng)建MQTT客戶端1,并傳入mqtt1_param表中參數(shù);

設(shè)置MQTT客戶端1的事件回調(diào)函數(shù),event為事件類型標識,可能出現(xiàn)的值有"conack"(連接確認)、"recv"(接收消息)、"sent"(發(fā)送完成)、"disconnect"(服務(wù)器斷開連接)等,再根據(jù)不同事件類型執(zhí)行不同的功能;

調(diào)用connect方法連接到MQTT服務(wù)器。

wKgZomcoihmAN6CFAAdXce-Ifh4405.pngwKgZomcoiimAf1ahAAHHd3ffniE544.png

4)此mqtt_client2函數(shù)主要功能是創(chuàng)建并配置一個MQTT客戶端2(client2),并鏈接到指定的MQTT服務(wù)器。

代碼內(nèi)容與mqtt_client1類似,此處不再復(fù)述。

wKgaomcoijiAL7X5AAaQbBlzmSw284.pngwKgaomcoikeATLJOAAGQR8g1arM680.png

5)此sys.taskInit為主task函數(shù)

函數(shù)主要功能是初始化剛才那兩個MQTT客戶端,確保它們能夠成功連接到服務(wù)器,并進行周期性的發(fā)布消息以實現(xiàn)與服務(wù)器的通信。代碼中還進行了設(shè)備聯(lián)網(wǎng)檢查及庫的兼容性驗證,確保在合適環(huán)境下運行。

具體步驟包括:

使用sys.waitUntil讓系統(tǒng)等待網(wǎng)絡(luò)連接就緒;

使用mobile.imei()獲取模塊IMEI號后賦值給device_id作為設(shè)備ID;

代碼檢查是否存在有可用的MQTT庫。若不存在,進入一個無限循環(huán),每秒打印一個日志信息,告知用戶未找到MQTT庫;

分別啟動兩個MQTT客戶端,并等待與服務(wù)器成功連接的確認;

設(shè)定要發(fā)布的數(shù)據(jù)及qos(服務(wù)質(zhì)量)等級,qos為1表示消息至少會被傳遞一次;

使用一個無限循環(huán),每隔3秒檢查MQTT客戶端是否準備好,并發(fā)送帶有時間戳的數(shù)據(jù)到指定的主題。

wKgaomcoilqAYBx-AATAQk43uwI392.pngwKgZomcoinaAd5hDAAQDdPOAtuY176.png

6)此sys.taskInit的主要功能是,每隔3秒打印一次Lua程序和操作系統(tǒng)的內(nèi)存使用情況。

wKgaoWcoioeAOmDnAAF6MWTzxfA453.png

3.3 示例效果

Client 1:

wKgZoWcoipeAMJ6fAAQSby1tmzc347.png

Client 2:

wKgZomcoiqOAVLOmAAQhfRO2eBo546.png

4. MQTT SSL不帶證書鏈接示例

4.1 main.lua說明

在main.lua中我們需要調(diào)用ssl_mqtt,代碼參考如下:

wKgZomcoireAIlm4AARZ4qSkhow252.png

4.2 ssl_mqtt.lua說明

1)在代碼開頭部分,根據(jù)自己的服務(wù)器修改對應(yīng)參數(shù)。

特別注意:

MQTT SSL不帶證書鏈接與帶證書鏈接為同一個文件,我們本節(jié)教程是MQTT SSL不帶證書鏈接,因此要將mqtt_isssl的值改為true ,大家可自行參考下方代碼進行修改。

wKgZoWcoisWACuXrAAVrAL3L850391.png

2)其余代碼部分就與MQTT單鏈接示例中的single_mqtt.lua 代碼相同,同樣為避免重復(fù)信息過多,影響閱讀感受,大家可轉(zhuǎn)到上文2.2 single_mqtt.lua說明進行了解。

4.3 示例效果

wKgaoWcoitWAbyFuAAQl5uFymEo526.png

5. MQTT SSL帶證書鏈接示例

5.1 main.lua說明

在main.lua中我們依舊需要調(diào)用ssl_mqtt,代碼參考如下:

wKgaoWcoiumAIMyoAARYwCdVhUA726.png

5.2 ssl_mqtt.lua說明

1)在代碼開頭部分,依舊需要大家根據(jù)自己的服務(wù)器進行修改對應(yīng)參數(shù)。

不過需要注意的是,本次是使用MQTT SSL帶證書鏈接,所以需要將mqtt_isssl的值改為table;

另外需要注意的是,既然是帶證書鏈接,那么肯定是需要準備好證書文件了,大家在使用自己的服務(wù)器時,一定要準備好對應(yīng)的證書文件才行,證書文件建議直接放在 LuatOS-Air201demomqtt 文件夾下,證書文件路徑根據(jù)代碼中示例自行修改。

在燒錄時,要將證書文件作為腳本文件一同燒錄到模組中。詳細燒錄教程,大家可自行參考:
https://docs.openluat.com/Luatools/

wKgZoWcoiwyAYYS4AAW0G-oPHrI718.png

2)其余代碼部分就與MQTT單鏈接示例中的single_mqtt.lua代碼相同,為避免重復(fù)信息過多,影響閱讀感受,大家可轉(zhuǎn)到上文

2.2 single_mqtt.lua說明

進行了解。

5.3 示例效果

wKgZoWcoixGAJuucAAPrP5vaGyE501.png

今天的分享就到這

歡迎關(guān)注

審核編輯 黃宇

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

    關(guān)注

    30

    文章

    4717

    瀏覽量

    68204
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    646

    瀏覽量

    22390
收藏 人收藏

    評論

    相關(guān)推薦

    GPS/LBS/Wi-Fi定位,全安排!—合宙Air201資產(chǎn)定位模組LuatOS快速入門04

    經(jīng)歷了hello world、點燈、遠程控制三期基礎(chǔ)教程,小伙伴們是不是收獲滿滿,期待更高階的應(yīng)用呢? 本期,我們將學(xué)習(xí)合宙Air201的核心功能之一 ——定位功能! 文末閱讀原文,下載最新教
    的頭像 發(fā)表于 09-12 12:04 ?984次閱讀
    GPS/LBS/Wi-Fi定位,全安排!—合宙<b class='flag-5'>Air201</b>資產(chǎn)定位模組LuatOS<b class='flag-5'>快速</b><b class='flag-5'>入門</b>04

    MQTT客戶端空氣質(zhì)量快速入門指南

    MQTT客戶端空氣質(zhì)量快速入門指南
    發(fā)表于 01-12 18:43 ?1次下載
    <b class='flag-5'>MQTT</b>客戶端空氣質(zhì)量<b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    MQTT客戶端快速入門指南 按鍵按下

    MQTT客戶端快速入門指南 按鍵按下
    發(fā)表于 01-12 18:43 ?1次下載
    <b class='flag-5'>MQTT</b>客戶端<b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b> 按鍵按下

    MQTT客戶端空氣質(zhì)量快速入門指南

    MQTT客戶端空氣質(zhì)量快速入門指南
    發(fā)表于 07-03 18:34 ?1次下載
    <b class='flag-5'>MQTT</b>客戶端空氣質(zhì)量<b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    MQTT客戶端快速入門指南 按鍵按下

    MQTT客戶端快速入門指南 按鍵按下
    發(fā)表于 07-03 18:34 ?0次下載
    <b class='flag-5'>MQTT</b>客戶端<b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b> 按鍵按下

    Air780E/Air780EP/Air780EQ/Air201模塊遇到死機問題如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到死機問題如何分析簡介本文檔適用于合宙Air780E、
    的頭像 發(fā)表于 07-19 15:37 ?509次閱讀
    <b class='flag-5'>Air</b>780E/<b class='flag-5'>Air</b>780EP/<b class='flag-5'>Air</b>780EQ/<b class='flag-5'>Air201</b>模塊遇到死機問題如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到內(nèi)存死機如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到內(nèi)存死機如何分析簡介本文檔適用于合宙Air780E、
    的頭像 發(fā)表于 07-19 16:07 ?438次閱讀
    <b class='flag-5'>Air</b>780E/<b class='flag-5'>Air</b>780EP/<b class='flag-5'>Air</b>780EQ/<b class='flag-5'>Air201</b>模塊遇到內(nèi)存死機如何分析

    合宙 Air780E/Air780EP/Air780EQ/Air201模塊遇到死機問題如何分析

    Air780E/Air780EP/Air780EQ/Air201模塊遇到死機問題如何分析簡介本文檔適用于合宙Air780E、
    的頭像 發(fā)表于 08-01 17:27 ?634次閱讀
    合宙 <b class='flag-5'>Air</b>780E/<b class='flag-5'>Air</b>780EP/<b class='flag-5'>Air</b>780EQ/<b class='flag-5'>Air201</b>模塊遇到死機問題如何分析

    合宙Air201定位模組,千萬不要忘記設(shè)置這個......

    合宙Air201定位模組,千萬不要忘記設(shè)置這個:AT+WIFILOC設(shè)置wifi定位優(yōu)先
    的頭像 發(fā)表于 08-09 18:01 ?1279次閱讀
    合宙<b class='flag-5'>Air201</b>定位模組,千萬不要忘記設(shè)置這個......

    遠程控制,就是這么簡單—合宙Air201資產(chǎn)定位模組LuatOS快速入門03

    通過前兩期教程hello world、點燈,大家對合宙Air201這款低功耗資產(chǎn)定位模組的LuatOS開發(fā)已有一定了解,實操反饋是:真的很簡單! 那么,這一期我們要一起體驗更有趣的 ——遠程
    的頭像 發(fā)表于 09-12 11:54 ?217次閱讀
    遠程控制,就是這么簡單—合宙<b class='flag-5'>Air201</b>資產(chǎn)定位模組LuatOS<b class='flag-5'>快速</b><b class='flag-5'>入門</b>03

    玩轉(zhuǎn)擴展庫,溫濕度傳感器篇!—合宙Air201資產(chǎn)定位模組LuatOS快速入門05

    隨著LuatOS快速入門系列教程的推出,小伙伴們學(xué)習(xí)熱情高漲。 合宙Air201不僅支持三種定位方式,還具有豐富的擴展功能,通過外擴BTB鏈接方案,最多可支持21個IO接口:SPI、I2C、UART
    的頭像 發(fā)表于 09-12 12:11 ?336次閱讀
    玩轉(zhuǎn)擴展庫,溫濕度傳感器篇!—合宙<b class='flag-5'>Air201</b>資產(chǎn)定位模組LuatOS<b class='flag-5'>快速</b><b class='flag-5'>入門</b>05

    資產(chǎn)定位 | 合宙Air201模組LuatOS快速入門01-hello world

    合宙的Air201模組,功耗低,品質(zhì)穩(wěn)定,購買樣品也方便,且資料全開放。
    的頭像 發(fā)表于 09-13 15:21 ?279次閱讀
    資產(chǎn)定位 | 合宙<b class='flag-5'>Air201</b>模組LuatOS<b class='flag-5'>快速</b><b class='flag-5'>入門</b>01-hello world

    合宙Air201資產(chǎn)定位模組LuatOS快速入門:GPS/LBS/Wi-Fi定位,全安排!?

    ? ?經(jīng)過三期的學(xué)習(xí):hello world、點燈、遠程控制,小伙伴們是不是收獲滿滿呢?更高階的應(yīng)用來啦! 本期,我們將學(xué)習(xí)合宙Air201的核心功能之一 ——定位功能 ?Air201定位示例
    的頭像 發(fā)表于 09-14 07:56 ?326次閱讀
    合宙<b class='flag-5'>Air201</b>資產(chǎn)定位模組LuatOS<b class='flag-5'>快速</b><b class='flag-5'>入門</b>:GPS/LBS/Wi-Fi定位,全安排!?

    合宙Air201資產(chǎn)定位模組LuatOS快速入門(五):玩轉(zhuǎn)擴展庫,溫濕度傳感器篇!

    ? 通過前面幾期的學(xué)習(xí),同學(xué)們的學(xué)習(xí)熱情越來越高哇! 合宙Air201不僅支持[三種定位方式]"三種定位方式"),還具有豐富的擴展功能哦:通過外擴BTB鏈接方案,最多可支持21個IO接口:SPI
    的頭像 發(fā)表于 09-18 07:05 ?246次閱讀
    合宙<b class='flag-5'>Air201</b>資產(chǎn)定位模組LuatOS<b class='flag-5'>快速</b><b class='flag-5'>入門</b>(五):玩轉(zhuǎn)擴展庫,溫濕度傳感器篇!

    你要的錄音&amp;播放錄音功能,直接用!Air201資產(chǎn)定位模組LuatOS快速入門

    ? 超低功耗、精準定位、快速量產(chǎn)——迷你小巧的合宙Air201,正給越來越多的行業(yè)客戶帶來高效開發(fā)體驗。 此前有小伙伴問:是否支持錄音、播放錄音功能? 高集成化設(shè)計的Air201自帶了ES8311
    的頭像 發(fā)表于 09-27 07:06 ?203次閱讀
    你要的錄音&amp;播放錄音功能,直接用!<b class='flag-5'>Air201</b>資產(chǎn)定位模組LuatOS<b class='flag-5'>快速</b><b class='flag-5'>入門</b>