隨著物聯(lián)網(wǎng)行業(yè)的快速發(fā)展,涌現(xiàn)出越來越多物聯(lián)網(wǎng)云服務(wù)平臺。如何快速實(shí)現(xiàn)應(yīng)用開發(fā),如何管理,如何讓設(shè)備快速上云,成為關(guān)注的焦點(diǎn)。
??本文將描述如何使用NB860系列模組通過MQTT指令快速接入利爾達(dá)IoT基礎(chǔ)服務(wù)平臺,并介紹兩者數(shù)據(jù)交互操作流程,詳細(xì)的AT交互流程可以幫助用戶或開發(fā)人員盡快完成相關(guān)的應(yīng)用開發(fā)。
??所需產(chǎn)品
??本次接入的利爾達(dá)IoT基礎(chǔ)服務(wù)平臺是我司自主研發(fā)的云平臺,為設(shè)備提供安全可靠的連接管理能力,整合物聯(lián)網(wǎng)產(chǎn)業(yè)鏈上下游,向下連接智能設(shè)備,向上承接物聯(lián)網(wǎng)應(yīng)用,形成端到云完整鏈路物聯(lián)網(wǎng)解決方案,賦能企業(yè)各類IOT場景接入。
??另外用到的利爾達(dá)NB860/MB960/MB260系列模組是基于5G NB-IoT芯片自主開發(fā)的第三代NB-IoT模組。該款模組集高性價比、高安全性和低功耗等優(yōu)點(diǎn)于一身,新增藍(lán)牙、OpenCPU、GNSS定位等能力,為智能表計(jì)、智能煙感、智能停車、智慧路燈等百萬級成熟NB-IoT應(yīng)用提供了更優(yōu)選擇。
??利爾達(dá)NB860/MB960/MB260系列模組支持TCP/UDP、MQTT、LwM2M等多種協(xié)議接入云平臺,為行業(yè)應(yīng)用開發(fā)提供了更多的可能性。今天文章第一期將為大家介紹利爾達(dá)NB860模組基于MQTT協(xié)議快速接入利爾達(dá)IoT基礎(chǔ)服務(wù)平臺,實(shí)現(xiàn)數(shù)據(jù)交互。
??快速上云設(shè)備端完整AT示例流程


??如上圖所示,示例流程展示了設(shè)備在配置及連接后進(jìn)行收發(fā)數(shù)據(jù)的調(diào)試操作,在實(shí)際應(yīng)用開發(fā)中通過開發(fā)MCU代碼適配參數(shù),即可完成了訂閱推送(應(yīng)用APP/Web)前所有開發(fā)工作,下文將以上步驟給大家做詳細(xì)講解。
??Lierda X平臺操作流程
??※ 用戶注冊
??1、訪問https://account.xiot.senthink.com/login,點(diǎn)擊注冊按鈕,進(jìn)入注冊頁面
??2、填寫注冊信息,完成注冊
??3、完成信息認(rèn)證,開通物聯(lián)網(wǎng)平臺

圖1 注冊頁面
??※ 設(shè)備接入前準(zhǔn)備事項(xiàng)
??設(shè)備在接入利爾達(dá)IoT基礎(chǔ)服務(wù)平臺之前,需要先完成下事項(xiàng):
??1、在平臺提供的管理后臺注冊一個硬件廠商賬號,云平臺會為該賬號分配一個廠商的唯一標(biāo)識OpenID;
??2、注冊廠商賬號后,需要在平臺提供的管理后臺上創(chuàng)建一個產(chǎn)品類,云平臺會為該產(chǎn)品分配一個產(chǎn)品的唯一標(biāo)識 ProductID 以及產(chǎn)品的密鑰 ProductKey(用于入網(wǎng)加密以及會話 Key 的更新,注意保密!);
??3、設(shè)備接入利爾達(dá)IoT基礎(chǔ)服務(wù)平臺之前,必須要將基礎(chǔ)參數(shù)燒錄進(jìn)設(shè)備。
??*至此,接入前的準(zhǔn)備工作完成!
??※ 注冊,創(chuàng)建產(chǎn)品設(shè)備
??前提條件:已在利爾達(dá)IoT基礎(chǔ)服務(wù)平臺注冊賬號。

圖2 產(chǎn)品創(chuàng)建頁面
??步驟1:創(chuàng)建產(chǎn)品
??1、登錄物聯(lián)網(wǎng)平臺控制臺
??2、在云平臺頁面,找到產(chǎn)品管理,單擊產(chǎn)品管理進(jìn)入產(chǎn)品詳情頁面。在中間導(dǎo)航欄,選擇創(chuàng)建產(chǎn)品,單擊創(chuàng)建產(chǎn)品,如下圖所示。

圖3 產(chǎn)品創(chuàng)建
??步驟2:設(shè)置物模型、topic消息等,添加自定義Topic
??1、登錄物聯(lián)網(wǎng)平臺控制臺。
??2、在產(chǎn)品管理頁面,找到對應(yīng)的產(chǎn)品,單擊產(chǎn)品進(jìn)入產(chǎn)品詳情頁面。
??3、在產(chǎn)品頁面,找到需要自定義Topic類的產(chǎn)品,并單擊對應(yīng)操作欄中的查看按鈕。
??4、在產(chǎn)品詳情頁面,單擊Topic類詳情 > 自定義Topic > 定義Topic類。
??5、配置參數(shù),單擊確認(rèn)。

圖4 新建topic
??步驟3:創(chuàng)建設(shè)備
??1、登錄物聯(lián)網(wǎng)平臺控制臺。
??2、在左側(cè)導(dǎo)航欄,選擇設(shè)備管理 > 設(shè)備列表。
??3、在設(shè)備頁面,單擊添加設(shè)備。
??4、在添加設(shè)備對話框中,輸入設(shè)備信息,單擊確認(rèn)。


圖5 設(shè)備創(chuàng)建
??執(zhí)行結(jié)果
??設(shè)備注冊成功后,將自動彈出設(shè)備證書彈框。您可以查看、一鍵復(fù)制設(shè)備證書信息,包含DeviceID、DeviceSecret、OpenID、ProductID和ProductKey,是設(shè)備與物聯(lián)網(wǎng)平臺進(jìn)行通信的重要身份認(rèn)證,建議您妥善保管。
??后續(xù)步驟
??1、在設(shè)備列表頁,單擊對應(yīng)設(shè)備,進(jìn)入設(shè)備詳情頁。您可以查看設(shè)備證書信息、數(shù)據(jù)加密密鑰、繼承產(chǎn)品的基礎(chǔ)信息、禁用/啟用設(shè)備、設(shè)備狀態(tài)、激活時間、最后在線/離線時間等。
??2、在設(shè)備詳情頁,可對設(shè)備在線調(diào)試、遠(yuǎn)程配置和日志分析。
??3、在設(shè)備列表頁,可以刪除不再使用的設(shè)備。刪除設(shè)備不可撤回,請謹(jǐn)慎操作。
??至此,平臺側(cè)操作已全部完成。
??※ 設(shè)備側(cè)操作
??上電檢查流程
??1、AT //判斷模組是否上電開機(jī)成功
??2、AT+CFUN=1 //關(guān)閉飛行模式
??3、AT+CEREG? //判斷PS域附著狀態(tài),第二個參數(shù)為1或5表示附著正常。
??設(shè)置服務(wù)端IP或域名
??使用AT+MQTTCFG="host",0,"host_name",1883命令設(shè)置服務(wù)端IP或域名。其中,:服務(wù)端的IP或域名:1~2000字節(jié)字符串。LierdaX平臺MQTT接入默認(rèn)域名為:mqtt.xiot.senthink.com,1883。
??示例:AT+MQTTCFG="host",0,"mqtt.xiot.senthink.com",1883
??設(shè)置客戶端標(biāo)識
??使用AT+MQTTCFG="clientid",,命令設(shè)置客戶端標(biāo)識
??連接ID:取值0~2。
??客戶端標(biāo)識符:字符串類型,1~128字節(jié)字符串。賢芯平臺clientid可在設(shè)備詳情頁查看。

??示例: AT+MQTTCFG="clientid",0,"ACF37***************EA9F3582"
??連接服務(wù)端
??使用AT+MQTTCONN=,,,,命令連接服務(wù)端,在收到+MQTTCONNACK: 0,0,0 OK即已經(jīng)成功連接上平臺。
??連接ID:取值0~2。
??SSL TCP連接使能:
??0:不采用;
??1:采用SSL TCP連接。
??will_flag 遺囑標(biāo)志,取值0或1:
??0:不帶遺囑;
??1:CONNECT報文帶有遺囑。
??用戶名:0~512字節(jié)的字符串。密碼:0~512字節(jié)的字符串。
??注:賢芯平臺登錄賬號以及密碼在創(chuàng)建設(shè)備時自動生成,可在設(shè)備詳情頁查看。
??示例:AT+MQTTCONN=0,0,0,"5*******-********-8************3","7*******************AB2C2"
??訂閱MQTT消息
??使用AT+MQTTSUB=,,,[,,] [,,]命令訂閱消息,已經(jīng)訂閱成功的消息可在平臺上的設(shè)備topic列表查看。
??< Link_ID > 連接ID:取值0~2。
??報文標(biāo)識符:取值1~65535。
??主題名:0~512字節(jié)字符串。一次最多可訂閱3個主題。
??訂閱消息QOS等級:取值0~2。
??示例:
??AT+MQTTSUB=0,1,"/sys/5********/*********/86**********83/downlink",1
??收←◆
??+MQTTSUBACK: 0,1,0
??OK
??設(shè)備請求入網(wǎng)(Join)
??設(shè)備上報的通用入網(wǎng) Topic:/sys/device/join
??設(shè)備在進(jìn)行正式的數(shù)據(jù)通信之前,必須先向 IoT 平臺請求入網(wǎng)。設(shè)備應(yīng)主動與 IoT 平臺建立 TCP Socket 鏈接。在成功建立鏈接后,設(shè)備必須向平臺發(fā)送請求入網(wǎng)數(shù)據(jù)幀,以讓平臺為設(shè)備分配通信資源;否則平臺將拒絕與設(shè)備進(jìn)行通信。
??請求入網(wǎng)數(shù)據(jù)幀使用的 Command 為 2;數(shù)據(jù)幀格式和內(nèi)容如下所示:
??{ "MessageId" : 1231,
??"HeaderCtrl":2, //命令碼
??"Mode":0, //0:不加密, 1:加密
??"Nonce":10, //1-128 隨機(jī)數(shù)
??"Payload":{
??"OpenID":"E0C040B1",
??"ProductID":"A4BC6002",
??"NodeEui":"....", //設(shè)備標(biāo)識
??"ClientID":"....", //認(rèn)證后返回的 ClientID "Type":0, //0:一型一密免注冊,1:一型一密預(yù)注冊,2:一機(jī)一密預(yù)注冊
??"Sign":"FE448731"
??}
??}
??設(shè)備向 IoT 平臺發(fā)起的入網(wǎng)請求數(shù)據(jù)幀中包含了Payload域,用于攜帶額外的信息。Payload域中包含的內(nèi)容及說明如下所示:

??平臺收到入網(wǎng)請求后,根據(jù)當(dāng)前產(chǎn)品類型是免注冊還是預(yù)注冊,重新計(jì)算 Sign 并與設(shè)備上報的 Sign 值進(jìn)行對比,不同類型設(shè)備的 Sign 計(jì)算規(guī)則詳見2.4小節(jié)。
??平臺收到設(shè)備的入網(wǎng)請求數(shù)據(jù)幀并成功認(rèn)證設(shè)備身份后,會為該設(shè)備分配通信資源 ,然后使用同樣的Command(2)響應(yīng)設(shè)備。IoT平臺返回Topic:/sys/{openId}/{productId}/{deviceId}/downlink,響應(yīng)設(shè)備入網(wǎng)請求的數(shù)據(jù)如下:
??{ "HeaderCtrl":2, //命令碼
??"MessageId" : 1231,
??"Mode":0, //0:不加密, 1:加密
??"Nonce":10, //1-128 隨機(jī)數(shù)
??"Payload":{
??"Code":0,
??"SessionID":"4655434B"
??}
??}
??Join指令的 Code 說明:對于設(shè)備請求入網(wǎng)指令(Join),Code 定義為平臺回復(fù)設(shè)備的入網(wǎng)請求的響應(yīng)碼。
??響應(yīng)碼定義如下表所示:

??如果設(shè)備發(fā)送了入網(wǎng)請求,等待超時后沒有收到平臺的任何回復(fù),則有可能是網(wǎng)絡(luò) 問題導(dǎo)致數(shù)據(jù)丟失,建議檢查網(wǎng)絡(luò)并重試。只有響應(yīng)碼(Code)值為 0 的時候,響應(yīng)數(shù)據(jù)中的 Payload 中所攜帶的 SessionID 才是 IoT 平臺分配的有效的 SessionID:

??設(shè)備成功入網(wǎng)后,IoT平臺返回了 SessionID。設(shè)備需要使用入網(wǎng)安全密鑰ProductKey和本次回復(fù)中的隨機(jī)數(shù)Nonce來計(jì)算生成后續(xù)與 IoT平臺進(jìn)行通信過程中用于加密用戶應(yīng)用數(shù)據(jù)的密鑰(SessionKey),計(jì)算方法如下描述(偽代碼):
??加密方式:AES128_ECB_PKCS5Padding SessionKey = ENCRYPT( ProductKey , SessionID + Nonce);
??示例:
??ProductKey :A0 1A 24 79 67 25 73 DF 84 53 7D F4 C7 3D 3F CC
??SessionID:46 55 43 4B
??Nonce(123):7B
??則拼接結(jié)果為:46 55 43 4B 7B 加密運(yùn)算結(jié)果為:40 8C 79 0F 85 BF 60 E6 D4 F1 C1 3C 6A 5C 4C 8B SessionKey = 408C790F85BF60E6D4F1C13C6A5C4C8B
??如果使用非加密模式進(jìn)行應(yīng)用數(shù)據(jù)的傳輸,則可以忽略此步驟,即不需要計(jì)算 SessionKey 的值。
??特別注意:設(shè)備的入網(wǎng)請求數(shù)據(jù)如果設(shè)置了Mode 為1,則平臺會在設(shè)備心跳和設(shè)備數(shù)據(jù)上行時檢查設(shè)備的SessionKey是否過期,如果平臺監(jiān)測到設(shè)備的SessionKey過期,則會主動更新設(shè)備SessionKey并下發(fā)給設(shè)備;如果入網(wǎng)請求數(shù)據(jù)設(shè)置了 Mode 位為 0,則平臺不會檢查設(shè)備的 SessionKey 是否過期。
??入網(wǎng)sing值計(jì)算請參考文檔《Lierda_NB860&MB960&MB260_Application_Notes_MQTT對接Lierda X平臺》
??備注:設(shè)備每次與 IoT 平臺建立新的 MQTT 鏈接后(首次連接或者斷線重連),都必須向平臺重新請求入網(wǎng),否則平臺將拒絕與設(shè)備進(jìn)行通信。
??數(shù)據(jù)交互
??通過AT+MQTTPUB=,,,,,命令向平臺發(fā)布消息。
??連接ID:取值0~2。
??報文標(biāo)識符:取值1~65535。
??發(fā)布消息QOS等級:取值0~2。
??保留標(biāo)志:取值0~1。
??主題名:0~512字節(jié)字符串。
??有效載荷:0~1500字節(jié)字符串。
??示例:
??AT+MQTTPUB=0,1,0,0,"/sys/5********/*********/86**********83/uplink","{ "MessageId" : 1231,"HeaderCtrl":4,"Mode":1,"Nonce":10,"Payload":"CB963****************EFE"}"
??□
??[11:06:12.040]收←◆
??[11:06:12.060]收←◆
??+MQTTPUBACK: 0,1,0
??OK
??[11:06:13.680]收←◆
??+MQTTRECV:0,8,1,0,/sys/5********/*********/86**********83/downlink,{"MessageId":1231,"HeaderCtrl":4,"Code":"200","Msg":"SUCCESS"}
??+MQTTRECV:0,9,1,0,/sys/5********/*********/86**********83/uplink_ack,{"MessageId":1231,"HeaderCtrl":4,"Code":"200","Msg":"SUCCESS"}
??設(shè)備上報數(shù)據(jù)可在運(yùn)行日志中查看;下發(fā)透傳數(shù)據(jù)可在在線調(diào)試中實(shí)現(xiàn)。


??至此,我們已完成基于MQTT協(xié)議的端(Lierda NB860模組)到云(Lierda X平臺)對接并實(shí)現(xiàn)數(shù)據(jù)交互功能。下一期我們將介紹NB860模組配合X平臺進(jìn)行云云對接快速上云,敬請期待。
審核編輯:符乾江
-
云平臺
+關(guān)注
關(guān)注
1文章
1408瀏覽量
39952 -
利爾達(dá)
+關(guān)注
關(guān)注
1文章
231瀏覽量
10073 -
NB-IoT
+關(guān)注
關(guān)注
413文章
1452瀏覽量
186242
發(fā)布評論請先 登錄
IoT無線組網(wǎng)模塊,萬物互聯(lián)的底層通信基石

火山引擎2025“大模型+智能硬件”機(jī)智云特邀研討會圓滿收官 共繪萬物智能產(chǎn)業(yè)藍(lán)圖

DeepSeek加持,宇視科技升級發(fā)布“萬物X”全鏈路智能引擎
萬物相連通訊:共繪萬物互聯(lián)藍(lán)圖

大華股份與萬物云簽署戰(zhàn)略合作協(xié)議
IP地址與5G時代的萬物互聯(lián)

萬物互聯(lián)“卷”起來,存儲器件如何引領(lǐng)未來?

評論