在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 超全教程Air201:MQTT實用示例

            超全教程Air201:MQTT實用示例

            發(fā)布人:13673998452 時間:2025-01-10 來源:工程師 發(fā)布文章

            今天我們學(xué)習(xí)的是關(guān)于Air201的MQTT實用示例的終極指南。

             

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

             

            操作例程包括:

            MQTT單鏈接

            MQTT多鏈接

            MQTT SSL不帶證書鏈接

            MQTT SSL帶證書鏈接

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

             

            1. 搭建環(huán)境
             

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

            wKgaoWcsoiuAUi3OAANUcDKHwSk769.png

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

             

            1.1 硬件準(zhǔn)備

             

            Air201 PCBA

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

            Win10以上PC

             

            1.2 軟件準(zhǔn)備

             

            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ù)下方圖中操作指示填寫信息:

            wKgaoWcsolmAW0NMAAG_5uYBnK0702.png

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

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

            wKgZoWcsomaAacEdAAGBaPhU7rk288.png


             

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

             

            訂閱主題格式

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

            例如:
            /luatos/pub/864536071785271 

             

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

            例如:
            /luatos/sub/864536071785271

             

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

            wKgaoWcsoneAJ4BwAAPZW0p0HH8608.png

             

            2. MQTT單鏈接示例

             

            2.1 main.lua說明

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

            wKgZoWcsooyAb2MsAARfGH7_PYk590.png

             

            2.2 single_mqtt.lua說明

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

             

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

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

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

            wKgZoWcsop6AI0P8AAKrJH-m89A792.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號。

            wKgaoWcsorCACXaiAAUAzG6oxfY865.pngwKgZoWcsosKAULN5AAbfq-ftPeQ268.pngwKgZoWcsotKASDPWAAPQ4TzJhlI803.png

             

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

            wKgZoWcsot-ALDpXAAK-5Gh5sUA117.png

             

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

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

            wKgaoWcsou2AZaAWAAQ8xqPo0M8971.png

             

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

            RTOS庫詳細信息請參考:

             

            RTOS底層操作庫

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

            wKgZoWcsovmAFgl8AAFH_XwiB7Y602.png

             

            2.3 示例效果

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

            wKgaomcsowqAdGJ1AAPOC_FISn8888.png

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

            wKgZomcsoxSAU_miAAL9qJS1K_s649.png

             

            3. MQTT多鏈接示例

             

            3.1 main.lua說明

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

            wKgaomcsoyiAE-gIAARhKGwDFqA644.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ù),所以大家可以選擇不填。

            wKgaoWcsoz-ABCdOAAP7YzRNFmM231.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。

            wKgZomcso0yANyLkAASPkY_Cs5o443.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為事件類型標(biāo)識,可能出現(xiàn)的值有"conack"(連接確認)、"recv"(接收消息)、"sent"(發(fā)送完成)、"disconnect"(服務(wù)器斷開連接)等,再根據(jù)不同事件類型執(zhí)行不同的功能;

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

            wKgaoWcso16AXrVpAAZF5iBhSGQ831.pngwKgZoWcso2yAZjRzAAMZh2zBBA8601.png

             

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

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

            wKgaoWcso3uANnn5AAbmoVkdcNs034.pngwKgZomcso4mAEb7YAAFN6TxtOEU993.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客戶端是否準(zhǔn)備好,并發(fā)送帶有時間戳的數(shù)據(jù)到指定的主題。

            wKgaomcso5eAfCruAATrRSBC4E0538.pngwKgZomcso6mANWaJAAPdCQmtrEs584.png

             

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

            wKgZomcso7OAL1udAAF6-U7Pslw892.png

             

            3.3 示例效果

             

            Client 1:

            wKgZoWcso8KAfWrjAAQLQEpJ1ZM791.png

            Client 2:

            wKgZoWcso8yAffu6AAQaJJZ0Wpk048.png

             

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

             

            4.1 main.lua說明

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

            wKgaoWcso9-AI4gYAARc8AW4N7E729.png

             

            4.2 ssl_mqtt.lua說明

             

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

             

            特別注意:

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

            wKgZoWcso--AYji5AAVrOwmVYr8125.png

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

             

            4.3 示例效果

            wKgaoWcso_-AHXuQAAQgKibSzQs587.png

             

            5. MQTT SSL帶證書鏈接示例

             

            5.1 main.lua說明

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

            wKgaoWcspBaAM2PgAARdQKc3T4k169.png

             

            5.2 ssl_mqtt.lua說明

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

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

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

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

            wKgaoWcspCeAZ1V3AAW74W3PkQg204.png

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

             

            5.3 示例效果

            wKgZoWcspJKAXrqWAAPlU3NX-ys656.png

            分享完畢,歡迎關(guān)注~


            *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。




            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉