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

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

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

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

合宙LuatOS ? 來源:合宙LuatOS ? 作者:合宙LuatOS ? 2024-08-08 17:13 ? 次閱讀

簡(jiǎn)介

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

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

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

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

材料準(zhǔn)備

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

wKgaomad_iCAGM1mACObj6OhrXM912.png

名詞解析:


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


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

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


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


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

broker會(huì)針對(duì)主題依照QoS級(jí)別保留最后一條保留消息,當(dāng)訂閱者訂閱主題時(shí)會(huì)立即收到保留消息。broker僅為每個(gè)主題保留一條保留消息。


API說明:

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


實(shí)現(xiàn)流程

1. 創(chuàng)建一個(gè)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é)程對(duì)象

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

3. 創(chuàng)建一個(gè)mqtt實(shí)例

接口

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

參數(shù)

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

返回值

返回值類型 解釋
userdata 若成功會(huì)返回mqtt客戶端實(shí)例,否則返回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時(shí)生效 0/1/2 默認(rèn)0

返回值

返回值類型 解釋
int 消息id,當(dāng)qos為1/2時(shí)有效, 若底層返回失敗,會(huì)返回nil

6. 發(fā)布消息

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

參數(shù)

傳入值類型 解釋
string 主題,必填
string 消息,必填,但長(zhǎng)度可以是0
int 消息級(jí)別 0/1 默認(rèn)0
int 是否存檔, 0/1,默認(rèn)0

返回值

返回值類型 解釋
int 消息id, 當(dāng)qos為1或2時(shí)會(huì)有效值. 若底層返回是否, 會(huì)返回nil

7. 接收消息

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

接口:? mqttc:disconnect()

參數(shù):

返回值

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

示例

本文以demo_luaLuatOSdemomqtt這個(gè)demo為例作為演示,以MQTTX工具來測(cè)試MQTT運(yùn)行狀況

1.在MQTTX軟件上建立連接

wKgZoma0iZSAC9brAAFNBWYfARY258.png

2.在MQTTX軟件上添加訂閱

注意:訂閱主題格式要求默認(rèn)為 /luatos/pub/ 加模塊的IMEI號(hào),例如 /luatos/pub/868488076506128

wKgaoma0ibiAF0x5AAFJ9bOCFRM493.png


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

? 注意:格式要求默認(rèn)為 /luatos/sub/ 加模塊的IMEI號(hào),例如 /luatos/sub/868488076506128

wKgaoma0ic2ARCX9AABkQpX1h90627.png

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

wKgaoma0ifCAXJ7YAAHUPwY1Ev8702.png

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

wKgaoma0igWAYYEtAAGg_Mfk-Ko068.png


MQTT單鏈接示例

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

注意:user_name、password在有些服務(wù)器上是可以不傳入的,或者是對(duì)傳入的值沒有要求限制。要根據(jù)實(shí)際服務(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ù)實(shí)際應(yīng)用場(chǎng)景,可自行修改腳本邏輯
local sub_topic = "/luatos/sub/" .. (mcu.unique_id():toHex())   -- 該變量在下方代碼有重新賦值,根據(jù)實(shí)際應(yīng)用場(chǎng)景,可自行修改腳本邏輯

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

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

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

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

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

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

-- 這里演示在另一個(gè)task里上報(bào)數(shù)據(jù), 會(huì)定時(shí)上報(bào)數(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)

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

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

-- 以下是演示與uart結(jié)合, 簡(jiǎn)單的mqtt-uart透?jìng)鲗?shí)現(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ù)長(zhǎng)度", #data)
    sys.publish("mqtt_pub", pub_topic, data)
end)
sys.subscribe("mqtt_payload", function(topic, payload)
    log.info("uart", "uart發(fā)送數(shù)據(jù)長(zhǎng)度", #payload)
    uart.write(1, payload)
end)

MQTT多鏈接示例

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

    --------------------第一個(gè)mqtt客戶端--------------------
    mqttc1 = mqtt.create(nil, mqtt_host, mqtt_port, mqtt_isssl, ca_file)    -- 創(chuàng)建的第一個(gè)mqtt對(duì)象
    mqttc1:auth(client1_id,user_name,password) -- client_id必填,其余選填
    -- mqttc1:keepalive(240) -- 默認(rèn)值240s
    mqttc1:autoreconn(true, 3000) -- 自動(dòng)重連機(jī)制
    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
            -- 非自動(dòng)重連時(shí),按需重啟mqttc
            -- mqtt_client:connect()
        end~
    end)

    --------------------第二個(gè)mqtt客戶端--------------------
    mqttc2 = mqtt.create(nil, mqtt_host, mqtt_port, mqtt_isssl, ca_file)    -- 創(chuàng)建的第二個(gè)mqtt對(duì)象
    mqttc2:auth(client2_id,user_name,password) -- client_id必填,其余選填
    -- mqttc2:keepalive(240) -- 默認(rèn)值240s
    mqttc2:autoreconn(true, 3000) -- 自動(dòng)重連機(jī)制
    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
            -- 非自動(dòng)重連時(shí),按需重啟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ù)交互了。
評(píng)論區(qū)討論下你遇到的問題吧~

wKgZomax0JaACDSHAAhAbEqOp1Q823.pngwKgZomax0UiAIQxLAAoPzDux5vQ191.png

審核編輯 黃宇

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

    關(guān)注

    12

    文章

    9434

    瀏覽量

    86509
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    658

    瀏覽量

    22967
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    Air780EP模塊Lua開發(fā)阿里云超詳細(xì)教學(xué)!看完包學(xué)會(huì)!
    的頭像 發(fā)表于 08-08 09:00 ?1176次閱讀
    <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)變得輕松又靠譜。想不想試試這簡(jiǎn)單又神奇的操作?那就來吧!本文詳細(xì)講解了基于Air80EP
    的頭像 發(fā)表于 08-19 16:40 ?2679次閱讀
    <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模塊超詳細(xì)教程

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

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

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

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

    ? Air780EP的[低功耗4G模組]之一,支持全系列的AT指令以及LuatOS腳本二次開發(fā)。 本文應(yīng)各位大佬邀請(qǐng),詳細(xì)講解了Air780E
    的頭像 發(fā)表于 09-29 09:36 ?2002次閱讀
    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平臺(tái)設(shè)計(jì)研發(fā)的Air780EG、
    的頭像 發(fā)表于 02-07 14:03 ?1315次閱讀
    <b class='flag-5'>合</b><b class='flag-5'>宙</b><b class='flag-5'>LuatOS</b>新版發(fā)布

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

    07日,Air780EP首版LuatOS固件發(fā)布。 軟件支持已就緒,開發(fā)板還會(huì)遠(yuǎn)嗎?
    的頭像 發(fā)表于 12-11 12:20 ?3035次閱讀
    <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)測(cè)搶先體驗(yàn)

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

    Air780E/Air780EP/Air780EQ/Air201模塊遇到死機(jī)問題如何分析簡(jiǎn)介本文檔適用于
    的頭像 發(fā)表于 08-01 17:27 ?994次閱讀
    <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模塊遇到死機(jī)問題如何分析

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

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

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

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

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

    Core-Air780EP 開發(fā)板是通信推出的基于 Air780EP 模組所開發(fā)的,包含電源,SIM卡,USB,天線,音頻等必要功能的最小硬件系統(tǒng)。以方便用戶在設(shè)計(jì)前期對(duì)
    的頭像 發(fā)表于 09-03 17:38 ?754次閱讀
    <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)各位大佬邀請(qǐng),特別講解Air780EP
    的頭像 發(fā)表于 09-30 06:59 ?810次閱讀
    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)各位大佬邀請(qǐng),詳細(xì)講解Air780EP模組MQTT應(yīng)用的多個(gè)AT命令。
    的頭像 發(fā)表于 10-25 17:27 ?470次閱讀
    <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)用,希望對(duì)大家有所幫助。
    的頭像 發(fā)表于 11-07 14:02 ?609次閱讀
    <b class='flag-5'>Air780</b>E模組AT指令下的<b class='flag-5'>MQTT</b>應(yīng)用:技術(shù)<b class='flag-5'>指南</b>