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

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

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

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

MQTT應(yīng)用看這篇!合宙Air780EP_LuatOS_MQTT應(yīng)用指南

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

掃碼添加小助手

加入工程師交流群

簡介

Air780EP 是合宙的低功耗4G模組之一,支持LuatOS的腳本二次開發(fā),即使是不太懂技術(shù)的老板,也能輕松使用 Air780EP開發(fā)產(chǎn)品。
本文應(yīng)各位大佬邀請,詳細講解了Air780EP 的MQTT的應(yīng)用教程!

MQTT協(xié)議具有長連接、低帶寬、高可靠性的優(yōu)勢,非常適合物聯(lián)網(wǎng)設(shè)備的通信需求。
除了MQTT,Air780EP還提供了TCP、UDP、HTTP、WebSocket、FTP、NTP等多種網(wǎng)絡(luò)協(xié)議的支持,使得設(shè)備可以靈活地接入不同的網(wǎng)絡(luò)環(huán)境和平臺。

實用場景:需要服務(wù)器下發(fā)消息給設(shè)備,需要及時收到。例如,遠程開關(guān),充電樁

合宙支持LuatOS功能的模組型號,除本文介紹的Air780EP外, 還有Air780EPA、Air780E、Air780EX、Air201、Air780EPT、Air780EPS等型號, 本文介紹的MQTT應(yīng)用流程,同樣也適用于這些型號。

材料準備

需要用到的材料和工具:
780EP開發(fā)板一套,包括天線SIM卡,USB
PC電腦,以及登錄官方IOT后臺 https://iot.openluat.com/
固件和DEMO下載地址 LuatOS軟件包

wKgaomad_iCAGM1mACObj6OhrXM912.png

名詞解析:


user_name用戶名,password密碼,client_id用戶標識,MQTT可以通過前兩個參數(shù)保證連接的安全,通過client_id確保設(shè)備唯一性。


QOS表示消息質(zhì)量,分為0,1,2三個等級,分別表示只發(fā)一次,至少收到一次和只收到一次,通過QOS可以根據(jù)數(shù)據(jù)的重要性靈活選擇發(fā)送方式以節(jié)省帶寬和保證數(shù)據(jù)可靠。

關(guān)于publish時QOS值的說明


QOS為0時,壓入底層TCP發(fā)送堆棧,視為成功
QOS為1時,收到服務(wù)器回應(yīng)PUBACK,視為成功
QOS為2時,收到服務(wù)器響應(yīng)PUBREC,立即上行PUBCOMP壓入TCP發(fā)送隊列,視為成功


mqtt_host主機,mqtt_port端口,MQTT需要連接的服務(wù)器參數(shù)。mqtt_host可以說是ip或者域名。
topic主題,根據(jù)主題區(qū)別消息類型和來源,主要用來分類數(shù)據(jù)。同時mqtt是發(fā)布訂閱模型,topic是發(fā)布和訂閱者通信的重要通道。
payload消息內(nèi)容,發(fā)布和訂閱的具體數(shù)據(jù)。
retain保留消息,保留消息是一條將保留標志(retained flag)置為true的普通MQTT消息。

broker會針對主題依照QoS級別保留最后一條保留消息,當訂閱者訂閱主題時會立即收到保留消息。broker僅為每個主題保留一條保留消息。


API說明:

API接口 描述
mqtt.create() 創(chuàng)建一個mqtt client實例
mqttc:connect() 連接mqtt服務(wù)器
mqttc:subscribe() 訂閱主題
mqttc:unsubscribe() 取消訂閱主題
mqttc:publish() 發(fā)布消息
mqttc:disconnect() 斷開與服務(wù)器的連接


實現(xiàn)流程

1. 創(chuàng)建一個Task協(xié)程

接口

? sys.taskInit(func, arg1, arg2, argN)

參數(shù)

傳入值類型 解釋
function 待執(zhí)行的函數(shù),可以是匿名函數(shù), 也可以是local或全局函數(shù)
any 需要傳遞的參數(shù)1,可選
any 需要傳遞的參數(shù)2,可選
any 需要傳遞的參數(shù)N,可選

返回值

返回值類型 解釋
task 協(xié)程對象

2. 等待網(wǎng)絡(luò)就緒

3. 創(chuàng)建一個mqtt實例

接口

? mqtt.create(adapter,host,port,ssl,isipv6)

參數(shù)

傳入值類型 解釋
int 適配器序號, 只能是socket.ETH0, socket.STA, socket.AP,如果不填,會選擇平臺自帶的方式,然后是最后一個注冊的適配器
string 服務(wù)器地址,可以是域名, 也可以是ip
int 端口號
bool/table 是否為ssl加密連接,默認不加密,true為無證書最簡單的加密,table為有證書的加密 server_cert 服務(wù)器ca證書數(shù)據(jù) client_cert 客戶端證書數(shù)據(jù) client_key 客戶端私鑰加密數(shù)據(jù) client_password 客戶端私鑰口令數(shù)據(jù) verify 是否強制校驗 0不校驗/1可選校驗/2強制校驗 默認2
bool/table bool 是否為ipv6,默認不是 table mqtt擴展參數(shù), ipv6 是否為ipv6, rxSize 接收緩沖區(qū)大小

返回值

返回值類型 解釋
userdata 若成功會返回mqtt客戶端實例,否則返回nil

4. 連接服務(wù)器

接口: mqttc:connect()

參數(shù):

返回值

返回值類型 解釋
boolean 發(fā)起成功返回true, 否則返回false

注意:本函數(shù)僅代表發(fā)起成功, 后續(xù)仍需根據(jù)ready函數(shù)判斷mqtt是否連接正常

5. 訂閱主題

接口

? mqttc:subscribe(topic, qos)

參數(shù)

傳入值類型 解釋
string/table 主題
int topic為string時生效 0/1/2 默認0

返回值

返回值類型 解釋
int 消息id,當qos為1/2時有效, 若底層返回失敗,會返回nil

6. 發(fā)布消息

接口:mqttc:publish(topic, data, qos, retain)

參數(shù)

傳入值類型 解釋
string 主題,必填
string 消息,必填,但長度可以是0
int 消息級別 0/1 默認0
int 是否存檔, 0/1,默認0

返回值

返回值類型 解釋
int 消息id, 當qos為1或2時會有效值. 若底層返回是否, 會返回nil

7. 接收消息

8. 斷開服務(wù)器的連接

接口:? mqttc:disconnect()

參數(shù):

返回值

返回值類型 解釋
boolean 發(fā)起成功返回true, 否則返回false

示例

本文以demo_luaLuatOSdemomqtt這個demo為例作為演示,以MQTTX工具來測試MQTT運行狀況

1.在MQTTX軟件上建立連接

wKgZoma0iZSAC9brAAFNBWYfARY258.png

2.在MQTTX軟件上添加訂閱

注意:訂閱主題格式要求默認為 /luatos/pub/ 加模塊的IMEI號,例如 /luatos/pub/868488076506128

wKgaoma0ibiAF0x5AAFJ9bOCFRM493.png


3.設(shè)置MQTTX軟件上發(fā)布消息的主題

? 注意:格式要求默認為 /luatos/sub/ 加模塊的IMEI號,例如 /luatos/sub/868488076506128

wKgaoma0ic2ARCX9AABkQpX1h90627.png

4.燒錄腳本,上電開機后模塊會自動向服務(wù)器發(fā)送消息,這是代碼默認設(shè)置的,若不需要可以刪掉

wKgaoma0ifCAXJ7YAAHUPwY1Ev8702.png

5.模塊向服務(wù)器發(fā)送消息,通過Luatools軟件可以看到

wKgaoma0igWAYYEtAAGg_Mfk-Ko068.png


MQTT單鏈接示例

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

注意:user_name、password在有些服務(wù)器上是可以不傳入的,或者是對傳入的值沒有要求限制。要根據(jù)實際服務(wù)器要求來填寫

--根據(jù)自己的服務(wù)器修改以下參數(shù)
local mqtt_host = "lbsmqtt.airm2m.com"
local mqtt_port = 1884
local mqtt_isssl = false
local client_id = "abc"
local user_name = "user"
local password = "password"

local pub_topic = "/luatos/pub/" .. (mcu.unique_id():toHex())   -- 該變量在下方代碼有重新賦值,根據(jù)實際應(yīng)用場景,可自行修改腳本邏輯
local sub_topic = "/luatos/sub/" .. (mcu.unique_id():toHex())   -- 該變量在下方代碼有重新賦值,根據(jù)實際應(yīng)用場景,可自行修改腳本邏輯

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

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

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

sys.taskInit(function()
    -- 等待聯(lián)網(wǎng)
    local ret, device_id = sys.waitUntil("net_ready")
    -- 下面的是mqtt的參數(shù)均可自行修改
    -- client_id = device_id
    pub_topic = "/luatos/pub/" .. device_id
    sub_topic = "/luatos/sub/" .. device_id

    -- 打印一下上報(pub)和下發(fā)(sub)的topic名稱
    -- 上報: 設(shè)備 ---> 服務(wù)器
    -- 下發(fā): 設(shè)備 

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

-- 這里演示在另一個task里上報數(shù)據(jù), 會定時上報數(shù)據(jù),不需要就注釋掉
sys.taskInit(function()
    sys.wait(3000)
	local data = "123,"
	local qos = 1 -- QOS0不帶puback, QOS1是帶puback的
    while true do
        sys.wait(3000)
        if mqttc and mqttc:ready() then
            local pkgid = mqttc:publish(pub_topic, data .. os.date(), qos)
            -- local pkgid = mqttc:publish(topic2, data, qos)
            -- local pkgid = mqttc:publish(topic3, data, qos)
        end
    end
end)

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

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

-- 以下是演示與uart結(jié)合, 簡單的mqtt-uart透傳實現(xiàn),不需要就注釋掉
local uart_id = 1
uart.setup(uart_id, 9600)
uart.on(uart_id, "receive", function(id, len)
    local data = ""
    while 1 do
        local tmp = uart.read(uart_id)
        if not tmp or #tmp == 0 then
            break
        end
        data = data .. tmp
    end
    log.info("uart", "uart收到數(shù)據(jù)長度", #data)
    sys.publish("mqtt_pub", pub_topic, data)
end)
sys.subscribe("mqtt_payload", function(topic, payload)
    log.info("uart", "uart發(fā)送數(shù)據(jù)長度", #payload)
    uart.write(1, payload)
end)

MQTT多鏈接示例

多鏈接的核心,就是要創(chuàng)建兩個mqtt客戶端的對象,通過不同的變量控制,代碼部分如下:

    --------------------第一個mqtt客戶端--------------------
    mqttc1 = mqtt.create(nil, mqtt_host, mqtt_port, mqtt_isssl, ca_file)    -- 創(chuàng)建的第一個mqtt對象
    mqttc1:auth(client1_id,user_name,password) -- client_id必填,其余選填
    -- mqttc1:keepalive(240) -- 默認值240s
    mqttc1:autoreconn(true, 3000) -- 自動重連機制
    mqttc1:on(function(mqtt_client, event, data, payload)
        -- 用戶自定義代碼
        log.info("mqtt", "event", event, mqtt_client, data, payload)
        if event == "conack" then
            -- 聯(lián)上了
            sys.publish("mqtt_conack")
            mqtt_client:subscribe(sub_topic_client)--單主題訂閱
            -- mqtt_client:subscribe({[topic1]=1,[topic2]=1,[topic3]=1})--多主題訂閱
        elseif event == "recv" then
            -- 客戶端1 接收數(shù)據(jù)
            log.info("mqtt", "downlink", "topic", data, "payload", payload)
            sys.publish("mqtt_payload", data, payload)
        elseif event == "sent" then
            -- log.info("mqtt", "sent", "pkgid", data)
        -- elseif event == "disconnect" then
            -- 非自動重連時,按需重啟mqttc
            -- mqtt_client:connect()
        end~
    end)

    --------------------第二個mqtt客戶端--------------------
    mqttc2 = mqtt.create(nil, mqtt_host, mqtt_port, mqtt_isssl, ca_file)    -- 創(chuàng)建的第二個mqtt對象
    mqttc2:auth(client2_id,user_name,password) -- client_id必填,其余選填
    -- mqttc2:keepalive(240) -- 默認值240s
    mqttc2:autoreconn(true, 3000) -- 自動重連機制
    mqttc2:on(function(mqtt_client, event, data, payload)
        -- 用戶自定義代碼
        log.info("mqtt", "event", event, mqtt_client, data, payload)
        if event == "conack" then
            -- 聯(lián)上了
            sys.publish("mqtt_conack")
            
            mqtt_client:subscribe(sub_topic_client)     -- 主題訂閱 -> 訂閱主題可以額外自定義
            -- mqtt_client:subscribe({[topic1]=1,[topic2]=1,[topic3]=1})--多主題訂閱
        elseif event == "recv" then
            -- 客戶端2 接收數(shù)據(jù)
            log.info("mqtt", "downlink", "topic", data, "payload", payload)
            sys.publish("mqtt_payload", data, payload)
        elseif event == "sent" then
            -- log.info("mqtt", "sent", "pkgid", data)
        -- elseif event == "disconnect" then
            -- 非自動重連時,按需重啟mqttc
            -- mqtt_client:connect()
        end
    end)

    -- 客戶端1 發(fā)送數(shù)據(jù)
    mqttc1:publish(topic, data, qos)    -- 發(fā)布topic主題可以自定義,可以不相同
    -- 客戶端2 發(fā)送數(shù)據(jù)
    mqttc2:publish(topic, data, qos)    -- 發(fā)布topic主題可以自定義,可以不相同


常見問題:

Q: 模組支持MQTT最新的版本是多少?

A: MQTT_V3.1.1版本

Q: 模組最多支持幾路鏈接?

A: mqtt/tcp/udp的鏈接公用8路通道

好啦,通過以上步驟,你就能夠?qū)崿F(xiàn)設(shè)備到MQTT服務(wù)器的連接與數(shù)據(jù)交互了。
評論區(qū)討論下你遇到的問題吧~

wKgZomax0JaACDSHAAhAbEqOp1Q823.pngwKgZomax0UiAIQxLAAoPzDux5vQ191.png

審核編輯 黃宇

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

    關(guān)注

    13

    文章

    9795

    瀏覽量

    87996
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    682

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Air780EP模塊Lua開發(fā)阿里云應(yīng)用指南

    Air780EP模塊Lua開發(fā)阿里云超詳細教學(xué)!看完包學(xué)會!
    的頭像 發(fā)表于 08-08 09:00 ?1602次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air780EP</b>模塊Lua開發(fā)阿里云應(yīng)用<b class='flag-5'>指南</b>

    Air780EP模塊——AT指令MQTT接入OneNET開發(fā)指南

    過程,Air780EPMQTT是最佳拍檔,讓設(shè)備互聯(lián)變得輕松又靠譜。想不想試試這簡單又神奇的操作?那就來吧!本文詳細講解了基于Air80EP
    的頭像 發(fā)表于 08-19 16:40 ?4217次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air780EP</b>模塊——AT指令<b class='flag-5'>MQTT</b>接入OneNET開發(fā)<b class='flag-5'>指南</b>

    AT指令速通FTP:Air780EP模塊超詳細教程

    Air780EP低功耗4G模組AT開發(fā)接入FTP超詳細示例!
    的頭像 發(fā)表于 08-20 17:40 ?3626次閱讀
    AT指令速通FTP:<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air780EP</b>模塊超詳細教程

    低功耗4G模組Air780EP——硬件設(shè)計01

    Air780EP是一款低功耗LTECat1無線通信模組。 支持FDD-LTE/TDD-LTE的4G遠距離無線 傳輸技術(shù)。 另外,模組提供了USB/UART/I2C等通用接口滿足IoT行業(yè)的各種應(yīng)用訴求。 本文將主要介紹
    的頭像 發(fā)表于 09-02 16:47 ?2310次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>低功耗4G模組<b class='flag-5'>Air780EP</b>——硬件設(shè)計01

    FTP應(yīng)用看這篇!Air780EP低功耗4G模組AT開發(fā)示例

    ? Air780EP的[低功耗4G模組]之一,支持全系列的AT指令以及LuatOS腳本二次開發(fā)。 本文應(yīng)各位大佬邀請,詳細講解了Air780E
    的頭像 發(fā)表于 09-29 09:36 ?2289次閱讀
    FTP應(yīng)用看這篇!<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air780EP</b>低功耗4G模組AT開發(fā)示例

    LuatOS新版發(fā)布

    1LuatOS新版固件今日發(fā)布LuatOS-SoC@EC618新版固件——適用基于移芯EC618平臺設(shè)計研發(fā)的Air780EG、
    的頭像 發(fā)表于 02-07 14:03 ?1592次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>LuatOS</b>新版發(fā)布

    | Air780EP首版LuatOS固件發(fā)布,新品模組內(nèi)測搶先體驗

    07日,Air780EP首版LuatOS固件發(fā)布。 軟件支持已就緒,開發(fā)板還會遠嗎?
    的頭像 發(fā)表于 12-11 12:20 ?3436次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b> | <b class='flag-5'>Air780EP</b>首版<b class='flag-5'>LuatOS</b>固件發(fā)布,新品模組內(nèi)測搶先體驗

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

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

    LuatOS產(chǎn)品規(guī)格書——Air780EQ

    LuatOS——低功耗4G模組——產(chǎn)品規(guī)格書——Air780EQ
    的頭像 發(fā)表于 08-29 14:37 ?929次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>LuatOS</b>產(chǎn)品規(guī)格書——<b class='flag-5'>Air780</b>EQ

    低功耗4G模組Air780EP——產(chǎn)品規(guī)格書

    低功耗4G模組Air780EP——產(chǎn)品規(guī)格信息介紹
    的頭像 發(fā)表于 08-30 18:07 ?2043次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>低功耗4G模組<b class='flag-5'>Air780EP</b>——產(chǎn)品規(guī)格書

    低功耗4G模組Air780EP——硬件設(shè)計02

    低功耗4G模組Air780EP——硬件設(shè)計
    的頭像 發(fā)表于 09-03 15:07 ?1367次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b>低功耗4G模組<b class='flag-5'>Air780EP</b>——硬件設(shè)計02

    LuatOS開發(fā)板Core_Air780EP使用說明

    Core-Air780EP 開發(fā)板是通信推出的基于 Air780EP 模組所開發(fā)的,包含電源,SIM卡,USB,天線,音頻等必要功能的最小硬件系統(tǒng)。以方便用戶在設(shè)計前期對
    的頭像 發(fā)表于 09-03 17:38 ?1141次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>LuatOS</b>開發(fā)板Core_<b class='flag-5'>Air780EP</b>使用說明

    RNDIS網(wǎng)卡應(yīng)用看這篇!Air780EP低功耗4G模組AT開發(fā)示例

    ?Air780EP的低功耗4G模組之一,支持全系列的AT指令以及LuatOS腳本二次開發(fā)。 本文應(yīng)各位大佬邀請,特別講解Air780EP
    的頭像 發(fā)表于 09-30 06:59 ?1205次閱讀
    RNDIS網(wǎng)卡應(yīng)用看這篇!<b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>Air780EP</b>低功耗4G模組AT開發(fā)示例

    MQTT應(yīng)用:Air780EP低功耗4G模組AT開發(fā)

    本文應(yīng)各位大佬邀請,詳細講解Air780EP模組MQTT應(yīng)用的多個AT命令。
    的頭像 發(fā)表于 10-25 17:27 ?699次閱讀
    <b class='flag-5'>MQTT</b>應(yīng)用:<b class='flag-5'>Air780EP</b>低功耗4G模組AT開發(fā)

    Air780E模組AT指令下的MQTT應(yīng)用:技術(shù)指南

    今天我要講的是Air780E模組AT指令下的MQTT應(yīng)用,希望對大家有所幫助。
    的頭像 發(fā)表于 11-07 14:02 ?985次閱讀
    <b class='flag-5'>Air780</b>E模組AT指令下的<b class='flag-5'>MQTT</b>應(yīng)用:技術(shù)<b class='flag-5'>指南</b>