要想與OneNET服務(wù)器相連,我們首先要了解一下什么是MQTT。
MQTT簡介
MQTT (Message Queuing Telemetry Transport ),是由IBM開發(fā)的輕量級消息傳輸協(xié)議,相比其他通訊協(xié)議,MQTT更適合物聯(lián)網(wǎng)場景。
在MQTT中,主要有三個(gè)角色:
角色 | 說明 |
---|---|
發(fā)布者(Publish) | 發(fā)送消息的一方,可以為一個(gè)應(yīng)用程序或一臺(tái)設(shè)備 |
代理(Broker)(服務(wù)器) | 管理消息隊(duì)列的一方,位于消息發(fā)布者和訂閱者之間 |
訂閱者(Subscribe) | 訂閱主題的一方,主要用于接收消息 |
MQTT傳輸?shù)南⒎譃椋褐黝}(Topic--區(qū)分不同消息)和負(fù)載(payload--消息內(nèi)容)兩部分。
MQTT協(xié)議采用發(fā)布/訂閱(Publish/Subscribe)模式,MQTT是應(yīng)用層的協(xié)議,其底層為TCP協(xié)議,TCP是傳輸層協(xié)議,云端(服務(wù)器端)通過主題(Topic)的方式管理各個(gè)物聯(lián)網(wǎng)設(shè)備的訂閱,實(shí)現(xiàn)將設(shè)備與設(shè)備之間消息進(jìn)行轉(zhuǎn)發(fā)。
MQTT協(xié)議適合場景:
- 客戶端數(shù)量眾多每次消息傳輸?shù)臄?shù)據(jù)量不大協(xié)議占用資源小,能夠方便移植到單片機(jī)等硬件上提供不同等級的“服務(wù)質(zhì)量--Qos”在低帶寬、高延遲、不可靠的網(wǎng)絡(luò)和資源有限的硬件環(huán)境下,進(jìn)行相對可靠的數(shù)據(jù)傳輸支持一對多的消息分發(fā)
一般物聯(lián)網(wǎng)平臺(tái)都是支持MQTT協(xié)議的,比如我們今天要接入的OneNET——中國移動(dòng)物聯(lián)網(wǎng)開放平臺(tái),也是支持MQTT協(xié)議的,具體支持的協(xié)議包括以下幾種:
我們今天就看看基于MQTT協(xié)議,如何能夠接入OneNET服務(wù)器。
MQTT.fx簡介
OneNET平臺(tái)相當(dāng)于MQTT中的Broker(服務(wù)器),要想實(shí)現(xiàn)與OneNET平臺(tái)連接,我們需要一個(gè)客戶端,而MQTT.fx是目前最常用的MQTT客戶端,我們使用的MQTT.fx的版本為1.7.1。
MQTT.fx軟件下載后,默認(rèn)安裝即可,安裝完畢的軟件界面如下:
創(chuàng)建產(chǎn)品和設(shè)備
注冊并登錄 OneNET 平臺(tái)的控制臺(tái),網(wǎng)址為:
https://open.iot.10086.cn/console/
在后臺(tái)的 文檔中心-->MQTT物聯(lián)網(wǎng)套件(新版)-->快速入門
版塊:
我們找到如下有用信息:
創(chuàng)建產(chǎn)品
參考官網(wǎng)文檔:
https://open.iot.10086.cn/doc/mqtt/book/get-start/product&device/createProduct.html
創(chuàng)建設(shè)備
參考官方文檔:
https://open.iot.10086.cn/doc/mqtt/book/get-start/product&device/createDevice.html
我們按照上面網(wǎng)文教程創(chuàng)建一個(gè)產(chǎn)品和一個(gè)測試設(shè)備:
服務(wù)器地址
OneNET物聯(lián)網(wǎng)平臺(tái)的地址和端口在下面鏈接獲?。?/p>
https://open.iot.10086.cn/doc/iot_platform/book/device-connect&manager/MQTT/mqtt-device-development.html
Broker Address:studio-mqtt.heclouds.com
Broker Port:1883
進(jìn)入與MQTT服務(wù)器連接配置界面之后,將地址和端口填寫到下圖所示位置:
其他部分配置信息說明:
Profile Name:可以隨便命名,我命名為:OneNET
Profile Type:保持默認(rèn)設(shè)置,MQTT Broker
Broker Address:MQTT服務(wù)器的地址,studio-mqtt.heclouds.com
Broker Port:服務(wù)器端口,1883
Client ID:客戶端ID,此處填寫 設(shè)備名稱 :XiaoHaLED
General 標(biāo)簽下的內(nèi)容,MQTT Version后面的復(fù)選框取消,其他默認(rèn)即可。
填寫用戶憑證信息
在 User Credentials 標(biāo)簽頁下面,需要我們填寫 User Name 和 Password 。
其中,User Name 就是產(chǎn)品管理頁面的產(chǎn)品ID ,對應(yīng)我創(chuàng)建的測試設(shè)備就是:hg8zt6E3LP
。
Password 處應(yīng)該填寫鑒權(quán)信息,此處即為一個(gè)token
。
生成token
token的介紹
token算法詳解參考下面鏈接:
https://open.iot.10086.cn/doc/mqtt/book/manual/auth/token.html
token生成工具
OneNET提供了token生成的上位機(jī)軟件,可以通過下面鏈接下載并使用:
https://open.iot.10086.cn/doc/mqtt/book/manual/auth/tool.html
其中:res:products/{pid}/devices/{device_name}
上面是 res 的值由產(chǎn)品ID和設(shè)備名稱組成,通過上面我們知道,我們創(chuàng)建的測試設(shè)備的產(chǎn)品ID值為:hg8zt6E3LP
,設(shè)備名稱 的值為:XiaoHaLED
。
所以,最終res 的值為:products/hg8zt6E3LP/devices/XiaoHaLED
et:expiration time
,表示過期時(shí)間,此時(shí)間要求大于當(dāng)前時(shí)間,為了避免太快過期,可以適當(dāng)加大此參數(shù)數(shù)值,此處為unix時(shí)間。
簡單來說,unix時(shí)間戳就是從1970年1月1日(UTC/GMT的午夜)開始所經(jīng)過的秒數(shù)。
除了使用程序獲得當(dāng)前unix時(shí)間以外,還可以使用網(wǎng)上現(xiàn)成的 unix時(shí)間戳 << >> 北京時(shí)間
轉(zhuǎn)換的在線工具完成,比如下面的網(wǎng)址即可:
https://tool.lu/timestamp/
2021-12-27 16:38:28 <==> et:1640594308
key:這個(gè)參數(shù)就是 產(chǎn)品key
這個(gè)參數(shù),所在位置如下圖所示:
其他參數(shù)默認(rèn)即可。
將上面得到的 res 、 et 、 key 代入 token計(jì)算工具 軟件中,點(diǎn)擊 Generate 按鈕:
生成的字符串即為 User Credentials 標(biāo)簽頁下面, Password 文本框內(nèi)需要填寫的內(nèi)容,即填寫如下內(nèi)容:
version=2018-10-31&res=products%2Fhg8zt6E3LP%2Fdevices%2FXiaoHaLED&et=1640594308&method=md5&sign=yBG2008b6SMfxiW6q6KmnA%3D%3D
其他參數(shù)默認(rèn)即可,然后點(diǎn)擊 OK 退出配置頁面。
連接OneNET服務(wù)器
下圖下拉列表中,選擇剛剛創(chuàng)建的Profile Name:OneNET
,點(diǎn)擊“Connect”按鈕,成功連接至OneNET平臺(tái)服務(wù)器,效果如下圖所示:
連接之后,我們查看OneNET控制臺(tái),在 設(shè)備接入與管理-->設(shè)備管理 頁面,可以看到 XiaoHaLED 設(shè)備已經(jīng)處于在線狀態(tài)。
好了,我們已經(jīng)順利連接上了OneNET服務(wù)器,今天的分享就到這里,用這個(gè) MQTT.fx 軟件也可以連接其他物聯(lián)網(wǎng)平臺(tái),比如阿里云物聯(lián)網(wǎng)平臺(tái),感興趣的可以自己試試哈~