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

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

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

低功耗4G模組Air780E快速入門:通過(guò)MQTT連接實(shí)現(xiàn)遠(yuǎn)程控制

合宙LuatOS ? 來(lái)源:合宙LuatOS ? 作者:合宙LuatOS ? 2024-10-11 14:01 ? 次閱讀

?

今天我們學(xué)習(xí)Air780E快速入門之通過(guò)MQTT連接實(shí)現(xiàn)遠(yuǎn)程控制,伙伴們,學(xué)起來(lái)!

一、修改代碼

1.1 準(zhǔn)備工具

Air780E開(kāi)發(fā)板

Air780E開(kāi)發(fā)板設(shè)計(jì)資料

LuatOS-Air780E使用MQTT遠(yuǎn)程控制程序源碼demo

API使用說(shuō)明

mqtt測(cè)試工具

本demo中使用的測(cè)試工具是MQTTX,下載鏈接如下:MQTTX:全功能 MQTT 客戶端工具

下載后的安裝程序:

圖片?

雙擊后點(diǎn)擊下一步安裝就可以了

圖片?

1.2 程序詳解

1.2.1 概念 首先我們先來(lái)了解一些mqtt的基本原理。訂閱者訂閱了一個(gè)主題后,能夠接收到對(duì)這個(gè)主題發(fā)布的消息?;驹砣缦聢D:

圖片?

本源碼程序demo實(shí)現(xiàn)流程圖如下:

圖片?

關(guān)于sys.subscribe()和mqtt_client:subscribe()的區(qū)別:sys.subscribe()是luatOS內(nèi)部的訂閱,接收sys.public()發(fā)布的消息,而mqtt_client:subscribe()訂閱的是mqtt服務(wù)器發(fā)布消息,接收來(lái)自mqtt_client:public()發(fā)布的消息。

1.2.2 程序分步詳解

第一步:等待聯(lián)網(wǎng)

sys.waitUntil("IP_READY")

第二步:獲取本設(shè)備的id,本demo中用來(lái)給MQTT服務(wù)器創(chuàng)建主題時(shí)當(dāng)做Client ID號(hào)。因?yàn)镸QTT服務(wù)器創(chuàng)建時(shí)的Client ID必須是唯一的,設(shè)備id也是唯一的,所以正好可以拿來(lái)使用。

-- 獲取設(shè)備的imei號(hào)

local device_id = mcu.unique_id():toHex()

-- 下面的是mqtt的參數(shù)均可自行修改

client_id = device_id

--發(fā)布消息的主題內(nèi)容

pub_topic = "/luatos/pub/" .. device_id

--要訂閱的主題內(nèi)容

sub_topic = "/luatos/sub/" .. device_id

第三步:創(chuàng)建一個(gè)mqtt實(shí)例,用來(lái)進(jìn)行mqtt連接、訂閱、發(fā)布消息等操作。

--提前定義的參數(shù),用來(lái)創(chuàng)建mqtt實(shí)例,根據(jù)自己的服務(wù)器修改以下參數(shù)

local mqtt_host = "lbsmqtt.airm2m.com"

local mqtt_port = 1884

local mqtt_isssl = false

local mqttc = nil

--[[

@param1 適配器序號(hào),不填會(huì)選擇平臺(tái)自帶的



   @param2 服務(wù)器地址,域名或ip都可



   @param3 端口號(hào)



   @param4 是否為ssl加密連接



   @param5 是否為ipv6

]]

mqttc = mqtt.create(nil, mqtt_host, mqtt_port, mqtt_isssl, ca_file)

第四步:配置連接mqtt服務(wù)器的參數(shù),有mqtt設(shè)置的Client ID,賬號(hào),密碼等。

local client_id = "mqttx_b55c41b7"

local user_name = "user"

local password = "password"

--[[配置mqtt連接服務(wù)器的參數(shù)

@param1 設(shè)備id



   @param2 賬號(hào)[可選]



   @param3 密碼[可選]



   @param4 清除session,默認(rèn)true[可選]

]]

mqttc:auth(client_id,user_name,password) -- client_id必填,其余選填

第五步:設(shè)置mqtt掉線自動(dòng)重連機(jī)制

--[[

@param1 是否自動(dòng)重連



   @param2 自動(dòng)重連機(jī)制,單位ms

]]

mqttc:autoreconn(true, 3000) -- 自動(dòng)重連機(jī)制

第六步:在mqtt的事件回調(diào)函數(shù)中編寫邏輯

--[[mqtt事件回調(diào)函數(shù),其中事件包括

conack:連接成功事件。



  recv:接收服務(wù)器下發(fā)數(shù)據(jù)的事件



  sent:發(fā)送完成事件



  disconnect:斷開(kāi)連接事件



   ]]

--[[回調(diào)函數(shù)參數(shù):

@param1 mqtt的句柄



   @param2 事件



   @param3 傳入的數(shù)據(jù)

]]

mqttc:on(function(mqtt_client, event, data, payload)

-- 用戶自定義代碼



   log.info("mqtt", "event", event, mqtt_client, data, payload)



   if event == "conack" then



       -- 觸發(fā)mqtt連接服務(wù)器成功事件,



       -- 在luat內(nèi)部發(fā)布一條消息。



       sys.publish("mqtt_conack")



       --訂閱一個(gè)mqtt主題



       mqtt_client:subscribe(sub_topic)--單主題訂閱



       -- mqtt_client:subscribe({[topic1]=1,[topic2]=1,[topic3]=1})--多主題訂閱



   elseif event == "recv" then



       --觸發(fā)接收數(shù)據(jù)事件



       log.info("mqtt", "downlink", "topic", data, "payload", payload)



   elseif event == "sent" then



       --觸發(fā)發(fā)送數(shù)據(jù)事件



   end

end)

第七步:連接mqtt服務(wù)器

mqttc:connect()

第八步:等待連接成功的luat內(nèi)部的消息,此消息的發(fā)布在連接成功事件中

sys.waitUntil("mqtt_conack")

第九步:循環(huán)等待上報(bào)數(shù)據(jù)

while true do

-- 演示等待其他task發(fā)送過(guò)來(lái)的上報(bào)信息



   local ret, topic, data, qos = sys.waitUntil("mqtt_pub", 300000)



   if ret then



       -- 當(dāng)接收到的tpoic是字符串close時(shí),就跳出等待其他task發(fā)過(guò)來(lái)的上報(bào)消息的循環(huán)



       if topic == "close" then break end



       mqttc:publish(topic, data, qos)



   end

end

第十步:關(guān)閉mqtt連接

mqttc:close()

第十一步:定時(shí)上報(bào)數(shù)據(jù)演示

sys.taskInit(function()

sys.wait(3000)

--定義要定時(shí)上報(bào)的數(shù)據(jù)

local data = "123test,"

--發(fā)送的數(shù)據(jù)質(zhì)量

local qos = 0 -- QOS0不帶puback, QOS1是帶puback的

while true do

sys.wait(3000)



   --如果mqttc實(shí)例存在,并且mqtt客戶端就緒



   if mqttc and mqttc:ready() then



       --發(fā)布一個(gè)mqtt消息,這個(gè)消息的訂閱,在mqtt服務(wù)器上,后面會(huì)介紹如何在mqtt服務(wù)器上訂閱



       local pkgid = mqttc:publish(pub_topic, data .. os.date(), qos)



   end

end

end)

二、燒錄代碼到硬件

2.1 正確連接電腦4G模組電路板

使用帶有數(shù)據(jù)通信功能的數(shù)據(jù)線,不要使用僅有充電功能的數(shù)據(jù)線;

2.2 識(shí)別4G模組的boot引腳

在下載之前,要用模組的boot引腳觸發(fā)下載, 也就是說(shuō),要把4G模組的boot引腳拉到 1.8v,或者直接把boot引腳和VDD_EXT引腳相連。我們要在按下BOOT按鍵時(shí)讓模塊開(kāi)機(jī),就可以進(jìn)入下載模式了。

具體到 Air780E開(kāi)發(fā)板,

2.2.1 當(dāng)我們模塊沒(méi)開(kāi)機(jī)時(shí),按著BOOT鍵然后長(zhǎng)按PWR開(kāi)機(jī)。

2.2.2 當(dāng)我們模塊開(kāi)機(jī)時(shí),按著BOOT鍵然后點(diǎn)按重啟鍵即可。

圖片?

2.3 識(shí)別電腦的正確端口

判斷是否進(jìn)入BOOT模式:模塊上電,此時(shí)在電腦的設(shè)備管理器中,查看串口設(shè)備, 會(huì)出現(xiàn)一個(gè)端口表示進(jìn)入了boot下載模式,如下圖所示:

圖片?

當(dāng)設(shè)備管理器出現(xiàn)了3個(gè)連續(xù)數(shù)字的com端口,并且每個(gè)數(shù)字都大于4,這時(shí)候, 硬件連接上就緒狀態(tài),恭喜你,可以進(jìn)行燒錄了!

2.4 新建項(xiàng)目

首先,確保你的 LuaTools 的版本,上大于 2.2.13 版本的。

在 LuaTools 的左上角上有版本顯示的,如圖所示:

圖片?

LuaTools 版本沒(méi)問(wèn)題的話, 就點(diǎn)擊 LuaTOols 右上角的“項(xiàng)目管理測(cè)試”按鈕,如下圖所示:

圖片?

這時(shí)會(huì)彈出項(xiàng)目管理和燒錄管理的對(duì)話框,如下圖:

新建一個(gè)項(xiàng)目

注意:這里截圖使用的hello world項(xiàng)目的燒錄教程,燒錄的時(shí)候要將腳本換成本次demo的。

圖片?

2.5 開(kāi)始燒錄

選擇780E板子對(duì)應(yīng)的底層core和剛改的main.lua腳本文件。下載到板子中。

圖片?

圖片?

點(diǎn)擊下載后,我們需要進(jìn)入boot模式才能正常下載,在(3)(4)小節(jié)已經(jīng)介紹了如何進(jìn)入boot模式。

圖片?

三、驗(yàn)證功能

3.1 配置MQTTX服務(wù)器

3.1.1 打開(kāi)MQTTX工具后,添加一個(gè)連接

圖片?

圖片?

3.1.2 添加一個(gè)訂閱,在MQTTX工具中填寫和程序中對(duì)應(yīng)的連接參數(shù):

圖片?

訂閱成功后界面如下:

圖片?

3.2 訂閱和發(fā)布消息

3.2.1 此時(shí)給開(kāi)發(fā)板開(kāi)機(jī)運(yùn)行,即可看到我們之前寫的自動(dòng)發(fā)送測(cè)試的數(shù)據(jù)。

圖片?

3.2.2 MQTTX發(fā)布消息,主題是開(kāi)發(fā)板訂閱的主題,開(kāi)發(fā)板可以接收到MQTTX發(fā)布的消息。

圖片?

圖片?

四、常見(jiàn)問(wèn)題

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

A: 支持MQTT_V3.1、MQTT_V3.1.1版本

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

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

Q: client id是否允許重復(fù)

A: client id不允許重復(fù),要保證唯一性,如果在已經(jīng)有一個(gè)該id的鏈接情況下,另外一個(gè)設(shè)備也用了相同的clientid接入,會(huì)把另一個(gè)在連鏈接擠掉。

Q: Qos0、1、2如何選擇

A: 應(yīng)用允許的情況下,建議使用Qos0,Qos1和Qos2會(huì)加重網(wǎng)絡(luò)負(fù)擔(dān)。

Q: 為什么mqtt ssl訪問(wèn)失敗

A: 檢查服務(wù)器是否支持模塊支持的加密套件,用模塊程序中的三元組和證書,在mqttx或者mqttfx客戶端工具上嘗試是否可以成功鏈接。

Q: 排查是否設(shè)備單體問(wèn)題:如果同一地點(diǎn),某些設(shè)備正常,某些設(shè)備異常,按照如下幾種情況分析

A:

分析正常設(shè)備和異常設(shè)備的使用環(huán)境是否相同:如果不同,例如異常設(shè)備固定在鋼制墻壁上,正常設(shè)備放置在桌子上,鋼制墻壁可能對(duì)天線射頻有干擾,將異常設(shè)備和正常設(shè)備放置在同樣的使用環(huán)境中,再對(duì)比測(cè)試。如果相同,參考第2步。分析正常和異常的設(shè)備,駐留的小區(qū)是否相同:如果相同,重點(diǎn)排查異常設(shè)備的天線射頻部分。如同不同,多測(cè)試幾次,確認(rèn)下,是不是在異常小區(qū)內(nèi)很容易出問(wèn)題,如果異常小區(qū)很容易出問(wèn)題,可能就是小區(qū)擁堵造成的。

五、修改代碼

在本demo中,我們實(shí)現(xiàn)了數(shù)據(jù)的上傳和下發(fā),你可以將溫濕度數(shù)據(jù)上傳到MQTT服務(wù)器,也可以用下發(fā)的數(shù)據(jù)進(jìn)行控制燈的開(kāi)關(guān)。

以上就是合宙Air780E快速入門之通過(guò)MQTT連接實(shí)現(xiàn)遠(yuǎn)程控制的所有內(nèi)容,伙伴們,學(xué)會(huì)了嗎?

?審核編輯 黃宇

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

    關(guān)注

    15

    文章

    5492

    瀏覽量

    118704
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8940

    瀏覽量

    85057
  • 遠(yuǎn)程控制
    +關(guān)注

    關(guān)注

    4

    文章

    617

    瀏覽量

    34880
  • 低功耗
    +關(guān)注

    關(guān)注

    10

    文章

    2349

    瀏覽量

    103531
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    646

    瀏覽量

    22390
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    低功耗4G模組Air780E快速入門:使用文件系統(tǒng)存儲(chǔ)溫濕度數(shù)據(jù)

    ? 伙伴們,今天我們來(lái)學(xué)習(xí)合宙低功耗4G模組Air780E快速入門之使用文件系統(tǒng)存儲(chǔ)溫濕度數(shù)據(jù)。
    的頭像 發(fā)表于 10-19 21:34 ?286次閱讀
    <b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780E</b><b class='flag-5'>快速</b><b class='flag-5'>入門</b>:使用文件系統(tǒng)存儲(chǔ)溫濕度數(shù)據(jù)

    低功耗4G模組Air780E快速入門:固件的遠(yuǎn)程升級(jí)

    ?今天我們學(xué)習(xí)Air780E快速入門之固件的遠(yuǎn)程升級(jí),小伙伴們,學(xué)起來(lái)吧! 一、生成差分包 合宙的遠(yuǎn)程升級(jí)支持使用合宙云平臺(tái)和自建服務(wù)器,此
    的頭像 發(fā)表于 10-17 07:14 ?243次閱讀
    <b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780E</b><b class='flag-5'>快速</b><b class='flag-5'>入門</b>:固件的<b class='flag-5'>遠(yuǎn)程</b>升級(jí)

    硬件設(shè)計(jì)很簡(jiǎn)單?低功耗4G模組Air780E—開(kāi)機(jī)啟動(dòng)及外圍電路設(shè)計(jì)

    ?Air780E是合宙低功耗4G-Cat.1模組經(jīng)典型號(hào)之一,上期我們解答了大家關(guān)心的系列問(wèn)題,并講解了[選型的注意要點(diǎn)] 有朋友問(wèn):能不能講些硬件設(shè)計(jì)相關(guān)的內(nèi)容?
    的頭像 發(fā)表于 10-15 10:18 ?247次閱讀
    硬件設(shè)計(jì)很簡(jiǎn)單?<b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780E</b>—開(kāi)機(jī)啟動(dòng)及外圍電路設(shè)計(jì)

    低功耗4G模組Air780E的固件的遠(yuǎn)程升級(jí)操作方法

    ?今天我們學(xué)習(xí)Air780E快速入門之固件的遠(yuǎn)程升級(jí),小伙伴們,學(xué)起來(lái)吧! 一、 生成差分包 合宙的遠(yuǎn)程升級(jí)支持使用合宙云平臺(tái)和自建服務(wù)器,
    的頭像 發(fā)表于 10-12 07:04 ?217次閱讀
    <b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780E</b>的固件的<b class='flag-5'>遠(yuǎn)程</b>升級(jí)操作方法

    低功耗4G模組Air780E快速入門:采集溫濕度傳感器數(shù)據(jù),并實(shí)現(xiàn)網(wǎng)頁(yè)查看

    ? 今天我們即將學(xué)習(xí)合宙低功耗4G模組Air780E快速入門之采集溫濕度傳感器數(shù)據(jù)并
    的頭像 發(fā)表于 10-11 13:53 ?260次閱讀
    <b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780E</b><b class='flag-5'>快速</b><b class='flag-5'>入門</b>:采集溫濕度傳感器數(shù)據(jù),并<b class='flag-5'>實(shí)現(xiàn)</b>網(wǎng)頁(yè)查看

    干貨篇:低功耗4G模組Air780E的串口通信

    ? 今天我們來(lái)講解低功耗4G模組Air780E的串口通信的基本用法,小伙伴們,學(xué)起來(lái)吧!
    的頭像 發(fā)表于 10-05 14:38 ?389次閱讀
    干貨篇:<b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780E</b>的串口通信

    低功耗4G模組Air780E:RS485通信篇

    ? 今天我們來(lái)學(xué)習(xí)低功耗4G模組 Air780E 的RS485通信,合宙的小伙伴們,學(xué)起來(lái)吧! **一、RS485簡(jiǎn)介 ** 物聯(lián)網(wǎng)(IoT)在工業(yè)場(chǎng)景中的應(yīng)用越來(lái)越廣泛,而RS485
    的頭像 發(fā)表于 09-29 09:38 ?298次閱讀
    <b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780E</b>:RS485通信篇

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

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

    選型4G-Cat.1模組Air780E時(shí),我應(yīng)該注意什么?

    ?Air780E是合宙低功耗4G-Cat.1模組經(jīng)典型號(hào)之一,累計(jì)出貨數(shù)量2000萬(wàn)+,廣泛應(yīng)用于物聯(lián)網(wǎng)各行業(yè)。在此,特別感謝各位大佬的信任與支持。 寫這篇文檔的目的是什么呢? 從用戶
    的頭像 發(fā)表于 09-27 07:07 ?348次閱讀
    選型<b class='flag-5'>4G</b>-Cat.1<b class='flag-5'>模組</b><b class='flag-5'>Air780E</b>時(shí),我應(yīng)該注意什么?

    硬件設(shè)計(jì)很簡(jiǎn)單?合宙低功耗4G模組Air780E—開(kāi)機(jī)啟動(dòng)及外圍電路設(shè)計(jì)

    ?Air780E是合宙低功耗4G-Cat.1模組經(jīng)典型號(hào)之一,上期我們解答了大家關(guān)心的系列問(wèn)題,并講解了[選型的注意要點(diǎn)] 有朋友問(wèn):能不能講些硬件設(shè)計(jì)相關(guān)的內(nèi)容?
    的頭像 發(fā)表于 09-27 07:04 ?2024次閱讀
    硬件設(shè)計(jì)很簡(jiǎn)單?合宙<b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780E</b>—開(kāi)機(jī)啟動(dòng)及外圍電路設(shè)計(jì)

    合宙Air780E硬件設(shè)計(jì)手冊(cè)02

    合宙低功耗4G模組Air780E硬件設(shè)計(jì)介紹
    的頭像 發(fā)表于 09-06 12:02 ?349次閱讀
    合宙<b class='flag-5'>Air780E</b>硬件設(shè)計(jì)手冊(cè)02

    合宙低功耗4G模組Air780E——硬件設(shè)計(jì)手冊(cè)01

    Air780E是一款基于移芯EC618平臺(tái)設(shè)計(jì)的LTECat1無(wú)線通信模組。支持FDD-LTE/TDD-LTE的4G遠(yuǎn)距離無(wú)線傳 輸技術(shù)。 另外,模組提供了USB/UART/I2C等
    的頭像 發(fā)表于 09-04 14:39 ?751次閱讀
    合宙<b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780E</b>——硬件設(shè)計(jì)手冊(cè)01

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

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

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

    合宙低功耗4G模組Air780E的規(guī)格信息速覽
    的頭像 發(fā)表于 09-02 18:04 ?786次閱讀
    合宙<b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780E</b>——產(chǎn)品規(guī)格書

    合宙低功耗4G模組Air780EQ——硬件設(shè)計(jì)手冊(cè)01

    合宙低功耗4G模組Air780EQ的硬件設(shè)計(jì)介紹
    的頭像 發(fā)表于 08-29 18:15 ?2010次閱讀
    合宙<b class='flag-5'>低功耗</b><b class='flag-5'>4G</b><b class='flag-5'>模組</b><b class='flag-5'>Air780</b>EQ——硬件設(shè)計(jì)手冊(cè)01