MQTT通信協(xié)議的基本介紹參考文章 NT35 MQTT通信 ,本篇給出阿里云的基本操作,NT35E通過訂閱阿里云的主題發(fā)布信息與阿里云平臺(tái)相互通信。
創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)通州,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
登錄阿里云?→?工作臺(tái)?→ 物聯(lián)網(wǎng)平臺(tái)?→ 進(jìn)入控制臺(tái)→ 公共實(shí)例
阿里云默認(rèn)通信協(xié)議為MQTT,不需要特殊選擇,用戶按照如下步驟創(chuàng)建自己的產(chǎn)品:
創(chuàng)建產(chǎn)品 → 添加設(shè)備?
在"查看"標(biāo)簽中,包含了MQTT連接的基本三元組信息,也就是后面設(shè)備要填充的基本參數(shù)
? 用戶每定義一類產(chǎn)品都會(huì)自動(dòng)生成對(duì)應(yīng)的Topic列表,當(dāng)然我們也可以"自定義液局歷Topic"便于自己測(cè)試。
? ?指令解析參考《Lierda NT35ENT26E-CN AT命令手冊(cè)》,這里給出使用到的AT指令對(duì)應(yīng)參數(shù)說明以便于理解。
AT+LMQTTCFG=cloud,鬧搜tcpconnectID[,cloud _ type,data_type ]
tcpconnectID 。MQTT Socket 標(biāo)識(shí)符。范圍:0~4。
cloud_type整型。2 alibaba,其他參數(shù)指定其他平臺(tái)
data_type整型。阿里云平臺(tái) 1 json數(shù)據(jù)?
AT+LMQTTCFG="cloud",0,2,1 ? 對(duì)應(yīng)就是對(duì)接阿里云平臺(tái),發(fā)送json格式的數(shù)據(jù)
AT+LMQTTCFG=aliauth,tcpconnectID[,product_key,device_name,device_secret]
填充阿里云平臺(tái)中設(shè)備的三元組信息
AT+LMQTTCFG="aliauth",0,"a1JszCpjS61","NT35E_06011","390358fc595040aa73221e8393aba86c"
這部分是模組進(jìn)行TCP鏈路連接(需抓包確認(rèn))
AT+LMQTTOPEN=tcpconnectID,host_name,port
host_name對(duì)應(yīng)阿里云 "設(shè)備信息"→"MQTT連接參數(shù)"臘蔽 中的 "mqttHostUrl"
AT+LMQTTOPEN=0,"a1JszCpjS61.iot-as-mqtt點(diǎn)吸煙 -shanghai.aliyuncs點(diǎn)抗 ",1883
模組作為客戶端,通過MQTT協(xié)議連接到服務(wù)器(需抓包確認(rèn))
AT+LMQTTCONN=tcpconnectID[,clientID[,username[,password]]]
clientID字符串型??蛻舳藰?biāo)識(shí)符。用戶可以隨便定義。 username,password 不需要填寫
AT+LMQTTCONN=0,"NT35E"
AT+LMQTTSUBUNSUB=tcpconnectID,subflag,msgID,topic1[,qos1[,topic2[,qos2]d…]]
subflag整型。消息類型 0 訂閱 1 取消訂閱
msgID整型。數(shù)據(jù)包消息標(biāo)識(shí)符。范圍:0~65535。
topic帶雙引號(hào)的字符串型??蛻舳擞嗛喕蛘咄擞喌闹黝}。長(zhǎng)度范圍:0~256 字節(jié)。
qos整型??蛻舳税l(fā)送訂閱消息(SUBSCRIBE)的 QoS 等級(jí),此時(shí)為必選參數(shù)。2?正好一次,該主題下的消息確保接收端僅接收到一次
AT+LMQTTSUBUNSUB=0,0,1,"/a1JszCpjS61/ NT35E_06011 /user/COMMUTEST",2
這里注意topic對(duì)應(yīng)參數(shù)的替換,里面的deviceName需要替換。
訂閱主題之后,服務(wù)器下發(fā)的數(shù)據(jù)模組就可以正常接收了。模組下發(fā)位置
? ?發(fā)布消息在對(duì)應(yīng)的設(shè)備目錄下,如果有設(shè)備"訂閱"對(duì)應(yīng)的消息,平臺(tái)"發(fā)布"相應(yīng)的數(shù)據(jù)設(shè)備就可以接收到了。
AT+LMQTTPUB=tcpconnectID,msgID,qos,retain,topic,msglen,msg
msgID整型。 0~65535。任意定義,但qos=0 時(shí),該參數(shù)值只能為0。
qos整型。 0?最多一次 1?至少一次 2 ?正好一次
retain整型 。服務(wù)器是否保存該消息。0?不保存? 1?保存
topic帶雙引號(hào)的字符串型。 客戶端發(fā)布消息的主題。長(zhǎng)度范圍:0~256 字節(jié)
msglen整型 。指定的消息數(shù)據(jù)長(zhǎng)度。范圍:0~1460。
msg字符串型。 需要發(fā)布的消息數(shù)據(jù)。
AT+LMQTTPUB=0,0,0,1,"/a1JszCpjS61/ NT35E_06011 /user/COMMUTEST",10,"1122334455"
?注意剛剛自己創(chuàng)建的主題屬性是" 發(fā)布和訂閱 ",所以模組發(fā)送該主題的信息,阿里云也是可以收到的
注意這里模組發(fā)送數(shù)據(jù)的時(shí)候,也推送了自己發(fā)送的數(shù)據(jù),因?yàn)閯倓傆嗛喠诉@個(gè)主題,所以模組訂閱(收)到了對(duì)應(yīng)的數(shù)據(jù)
? ?前面我們通過NT35E與平臺(tái)進(jìn)行信息交互,那么為什么是這樣填寫對(duì)應(yīng)的參數(shù)呢,每個(gè)參數(shù)對(duì)應(yīng)的說明在阿里云上是什么樣的呢,用戶可以查看阿里云的幫助文檔進(jìn)行確認(rèn)。
? ?上面我們使用三元組的方式( 一機(jī)一密 )實(shí)現(xiàn)NT35E與阿里云平臺(tái)通信,但實(shí)際生產(chǎn)過程中該方式不好實(shí)現(xiàn),比如工廠有1000個(gè)設(shè)備生產(chǎn),如果每個(gè)設(shè)備都復(fù)制不同的三元組,很難實(shí)現(xiàn)工廠批量化生產(chǎn),此時(shí)可以通過 一型一密 的通信方式解決該問題。
一型一密模組端實(shí)現(xiàn)方式后續(xù)更新。
指定的阿里云服務(wù)器。
在阿里云控制臺(tái)創(chuàng)建一個(gè)消息路乎鎮(zhèn)由規(guī)則,將上傳的設(shè)備數(shù)據(jù)從IoT Hub中轉(zhuǎn)發(fā)到指定的阿里云服務(wù)器,這樣就可以直接將數(shù)據(jù)傳到阿里云服務(wù)器,不用經(jīng)過阿里。
NB-IoT是IoT領(lǐng)域一個(gè)新興的技術(shù),支歲伏粗持低功耗設(shè)備在廣域網(wǎng)的蜂窩數(shù)據(jù)連接,也被叫作廳兆低功耗廣域網(wǎng)(LPWAN)。
IoT協(xié)議多樣性、設(shè)備碎片化。
所有子設(shè)備復(fù)用同一個(gè)物理channel,網(wǎng)關(guān)代理子設(shè)備上線,每個(gè)子設(shè)備對(duì)應(yīng)一個(gè)虛擬連接的session。子設(shè)備跟直連設(shè)備等同處理,唯一差別就是直連設(shè)備有獨(dú)立channel,子設(shè)備是共享物理channel。一個(gè)網(wǎng)關(guān)有多條物理連接,每個(gè)物理連接等價(jià),網(wǎng)關(guān)可以往任意一個(gè)物理連接發(fā)送或者接受數(shù)據(jù)。
優(yōu)掘喊絕點(diǎn)是解決了邊緣網(wǎng)關(guān)的多身份問題,多物理通道相當(dāng)于多副本,在單個(gè)接入滲羨服務(wù)出現(xiàn)問題時(shí),網(wǎng)關(guān)可以通過其他連接通道收發(fā)消息,對(duì)業(yè)務(wù)判姿不產(chǎn)生任何影響。