物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開發(fā) 課件 項(xiàng)目2-2、基于模擬器的MQTT協(xié)議調(diào)試_第1頁(yè)
物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開發(fā) 課件 項(xiàng)目2-2、基于模擬器的MQTT協(xié)議調(diào)試_第2頁(yè)
物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開發(fā) 課件 項(xiàng)目2-2、基于模擬器的MQTT協(xié)議調(diào)試_第3頁(yè)
物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開發(fā) 課件 項(xiàng)目2-2、基于模擬器的MQTT協(xié)議調(diào)試_第4頁(yè)
物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開發(fā) 課件 項(xiàng)目2-2、基于模擬器的MQTT協(xié)議調(diào)試_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于模擬器的MQTT協(xié)議調(diào)試物聯(lián)網(wǎng)云平臺(tái)開發(fā)實(shí)踐(第2版)01新建產(chǎn)品和設(shè)備02token計(jì)算方法目錄CONTENTS03建立連接04JSON數(shù)據(jù)格式05信息發(fā)布06主題訂閱07命令接收

第一部分

新建產(chǎn)品和設(shè)備PART0101實(shí)驗(yàn)介紹【實(shí)驗(yàn)?zāi)康摹浚?)掌握MQTT協(xié)議的產(chǎn)品、設(shè)備、數(shù)據(jù)流創(chuàng)建流程(2)掌握整個(gè)流程中,各類信息的解讀【實(shí)驗(yàn)設(shè)備】(1)PC一臺(tái)【實(shí)驗(yàn)要求】在OneNET平臺(tái)注冊(cè)MQTT產(chǎn)品,數(shù)據(jù)協(xié)議采用數(shù)據(jù)流,在該產(chǎn)品下注冊(cè)設(shè)備。實(shí)驗(yàn)步驟一、新建MQTT產(chǎn)品(1)登陸OneNET平臺(tái),進(jìn)入開發(fā)者中心,單擊左側(cè)“產(chǎn)品開發(fā)”。(2)單擊“創(chuàng)建產(chǎn)品”按鈕,并填寫相關(guān)信息。選定產(chǎn)品品類后,智能化方式選擇“設(shè)備接入”,進(jìn)一步填寫產(chǎn)品名稱、所屬城市、節(jié)點(diǎn)類型、接入?yún)f(xié)議、數(shù)據(jù)協(xié)議、聯(lián)網(wǎng)方式、開發(fā)方案等一系列信息。實(shí)驗(yàn)步驟一、新建MQTT產(chǎn)品(1)登陸OneNET平臺(tái),進(jìn)入開發(fā)者中心,單擊左側(cè)“產(chǎn)品開發(fā)”。(2)單擊“創(chuàng)建產(chǎn)品”按鈕,并填寫相關(guān)信息。選定產(chǎn)品品類后,智能化方式選擇“設(shè)備接入”,進(jìn)一步填寫產(chǎn)品名稱、所屬城市、節(jié)點(diǎn)類型、接入?yún)f(xié)議、數(shù)據(jù)協(xié)議、聯(lián)網(wǎng)方式、開發(fā)方案等一系列信息。接入?yún)f(xié)議選擇MQTT,數(shù)據(jù)協(xié)議選擇數(shù)據(jù)流。(3)記錄新建產(chǎn)品的產(chǎn)品ID。實(shí)驗(yàn)步驟二、新建MQTT設(shè)備(1)在設(shè)備接入管理,單擊“設(shè)備管理”標(biāo)簽,在出現(xiàn)的界面中,添加MQTT設(shè)備。(2)單擊“添加設(shè)備”按鈕,填寫設(shè)備名稱等信息,單擊“添加”按鈕。使用該協(xié)議,在一個(gè)產(chǎn)品下,可以有很多設(shè)備,但是設(shè)備名稱不能重復(fù)。建議使用設(shè)備SN號(hào)、MAC地址、IMEI等對(duì)設(shè)備進(jìn)行命名,保證設(shè)備是唯一的。(3)選擇“設(shè)備列表”標(biāo)簽,出現(xiàn)數(shù)據(jù)流格式可以進(jìn)行的操作選項(xiàng):設(shè)備詳情、數(shù)據(jù)流、文件管理、命令下發(fā)和SIM卡查詢。單擊“設(shè)備詳情”,記錄設(shè)備名稱、設(shè)備密鑰和產(chǎn)品ID,在后面的實(shí)驗(yàn)中,使用這些參數(shù)計(jì)算token,并進(jìn)行設(shè)備鑒權(quán)。

第二部分

Token計(jì)算方法PART0202Token計(jì)算Token是動(dòng)態(tài)密碼,有有效期,更安全。由以下多個(gè)參數(shù)構(gòu)成:version:參數(shù)組版本號(hào),日期格式,目前僅支持"2018-10-31"res:格式為:父資源類/父資源ID/子資源類/子資源ID示例:設(shè)備連接時(shí),res格式:'products/Product_ID/devices/Device_name'API訪問時(shí),res格式:'products/Product_ID'et:訪問過期時(shí)間expirationTime,unix時(shí)間。1537255523表示:北京時(shí)間2018-09-1815:25:23當(dāng)一次訪問參數(shù)中的et時(shí)間小于當(dāng)前時(shí)間時(shí),平臺(tái)會(huì)認(rèn)為訪問參數(shù)過期從而拒絕該訪問version。一般采用當(dāng)前時(shí)間+過期時(shí)間來表示。示例:當(dāng)前時(shí)間+3600,表示當(dāng)前時(shí)間后一個(gè)小時(shí)。Token計(jì)算method:簽名方法,支持md5、sha1、sha256三種sign簽名結(jié)果字符串signature。參數(shù)sign的生成算法為:sign=base64(hmac_<method>(base64decode(accessKey),utf-8(StringForSignature)))其中:? accessKey為OneNET為獨(dú)立資源(例如,產(chǎn)品)分配的唯一訪問密鑰,其作為簽名算法參數(shù)之一參與簽名計(jì)算,為保證訪問安全,請(qǐng)妥善保管? accessKey參與計(jì)算前應(yīng)先進(jìn)行base64decode操作?

用于計(jì)算簽名的字符串StringForSignature的組成順序按照參數(shù)名稱進(jìn)行字符串排序,以'/n'作為參數(shù)分隔,當(dāng)前版本中按照如下順序進(jìn)行排序:et、method、res、versionStringForSignature組成示例如下:StringForSignature=et+'\n'+method+'\n'+res+'\n'+versionToken計(jì)算res格式為:products/{產(chǎn)品id}/devices/{設(shè)備名字},{}及{}內(nèi)的信息用實(shí)際設(shè)備信息替換。例如:products/jVL7QeTMr3/devices/HT1表示產(chǎn)品id為jVL7QeTMr3,設(shè)備名稱為HT1的res參數(shù)。et為訪問過期時(shí)間:UNIX時(shí)間。例如:1709796184表示2024-03-0715:23:04。key為設(shè)備密鑰。method為簽名方法,支持MD5、SHA1、SHA256三種方法。

第三部分

建立連接PART0303實(shí)驗(yàn)介紹【實(shí)驗(yàn)?zāi)康摹浚?)掌握MQTT設(shè)備與云平臺(tái)建立連接的方法。(2)掌握整個(gè)流程中涉及的參數(shù)及含義?!緦?shí)驗(yàn)設(shè)備】(1)PC一臺(tái)(2)MQTT.fx軟件【實(shí)驗(yàn)要求】在已創(chuàng)建的數(shù)據(jù)格式為數(shù)據(jù)流的設(shè)備下,采用MQTT.fx軟件模擬一臺(tái)實(shí)際設(shè)備,與OneNET平臺(tái)建立連接。實(shí)驗(yàn)步驟1、打開MQTT.fx客戶端,進(jìn)入客戶端配置頁(yè)面。實(shí)驗(yàn)步驟2、點(diǎn)擊設(shè)置,設(shè)置ProfileName,本實(shí)驗(yàn)中為localmosquitto。本實(shí)驗(yàn)選取加密接口。接入地址:端口:8883ClientID:填寫設(shè)備名稱(不重復(fù))MQTT版本:3.1.1實(shí)驗(yàn)步驟3、參數(shù)設(shè)置。用戶名:產(chǎn)品ID密碼:TokenSSL/TLS:CAcertificatefile,導(dǎo)入證書證書下載:進(jìn)入OneNET平臺(tái),文檔中心——OneNET物聯(lián)網(wǎng)開放平臺(tái)——產(chǎn)品開發(fā)——設(shè)備接入——設(shè)備開發(fā)——MQTT協(xié)議接入——MQTT設(shè)備連接。實(shí)驗(yàn)結(jié)果在軟件調(diào)試過程中,會(huì)顯示連接結(jié)果,右側(cè)燈變綠。在OneNET平臺(tái)“設(shè)備管理”頁(yè)面中,會(huì)顯示設(shè)備在線狀態(tài)。

第四部分

JSON數(shù)據(jù)格式PART0404JSON數(shù)據(jù)格式JSON是JaveScriptObjectNotation的縮寫,是一種輕量級(jí)數(shù)據(jù)交換格式。它是基于ECMAScript(歐洲計(jì)算機(jī)協(xié)會(huì)制定的js規(guī)范)的一個(gè)子集,采用完全獨(dú)立于編程語(yǔ)言的文本格式來存儲(chǔ)和表示數(shù)據(jù)。簡(jiǎn)潔和清晰的層次結(jié)構(gòu)使得JSON成為理想的數(shù)據(jù)交換語(yǔ)言。JSON數(shù)據(jù)格式易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成,并有效地提升網(wǎng)絡(luò)傳輸效率。{"employees":[{"firstName":"Dan","lastName":"Li"},{"firstName":"Lin","lastName":"Ma"}]}JSON數(shù)據(jù)格式1、對(duì)象名稱/值對(duì)"temp":222、各種標(biāo)點(diǎn){}對(duì)象{"temp":22}"temp":22:分隔名稱/值{"temp":22,"hum":47}“”字符串{"temp":22,"hum":47},名稱/值對(duì)分隔{"temp":22,"hum":47}整型數(shù)、浮點(diǎn)數(shù)、字符串、布爾值、數(shù)組、對(duì)象、空J(rèn)SON數(shù)據(jù)格式[]數(shù)組,數(shù)組間元素分隔[1,2.4,"3",{"temp":22}]整型數(shù)、浮點(diǎn)數(shù)、字符串、布爾值、也可以是對(duì)象或者數(shù)組進(jìn)行嵌套[1,2.4,"3",{"temp":22}][1,2.4,"3",[1,2]]對(duì)象間名稱/值對(duì)分隔{"temp":22,"hum":47}JSON數(shù)據(jù)格式——例1

{

“flag”:“00”,

“message”:“傳感器”,

“property”:{

“Electricity”:[{“voltage”:“10V”,

“current”:“5A”}],

“Temp”:“temperature”

},

“sensors”:[{

“Date”:“time”,

“id”:1527}]}JSON數(shù)據(jù)格式——例2{"datastreams":[{"id":"Lum","datapoints":[{"at":"2020-02-10T00:35:43","value":"bacd"},{"at":"2020-02-10T00:55:43","value":84}]},{"id":"key","datapoints":[{"at":"2020-02-10T00:35:43","value":{"x":123,"y":123.994}},{"at":"2020-02-10T00:35:43","value":23.001}]}]}{"datastreams":[{"id":"Lum","datapoints":[{"value":50}]}]}JSON編解碼很多編程語(yǔ)言都支持JSON格式,/json-zh.html可以查詢所使用的編程語(yǔ)言是否支持JSON格式。JSONPythonobjectdictarrayliststringstrnumber(int)intnumber(real)floattrueTruefalseFalsenullNone編碼&解碼

第五部分

信息發(fā)布PART0505實(shí)驗(yàn)介紹【實(shí)驗(yàn)?zāi)康摹浚?)掌握MQTT協(xié)議信息發(fā)布的流程(2)掌握整個(gè)流程中,各類信息的解讀【實(shí)驗(yàn)設(shè)備】(1)PC一臺(tái)(2)MQTT.fx軟件【實(shí)驗(yàn)要求】在已創(chuàng)建的數(shù)據(jù)流下,采用MQTT.fx軟件實(shí)現(xiàn)信息發(fā)布。實(shí)驗(yàn)步驟1、成功連接后,MQTT.fx選擇Publish調(diào)用系統(tǒng)topic:$sys/{pid}/{device-name}/dp/post/json該topic表示上傳數(shù)據(jù)點(diǎn),其中pid用產(chǎn)品ID替換,device-name用設(shè)備名稱替換。示例:

$sys/315511/temp/dp/post/json

上傳數(shù)據(jù)點(diǎn)相關(guān)系統(tǒng)topic系統(tǒng)topic用途QoS訂閱發(fā)布$sys/{pid}/{device-name}/dp/post/json設(shè)備上傳數(shù)據(jù)點(diǎn)0/1√$sys/{pid}/{device-name}/dp/post/json/accepted系統(tǒng)通知"設(shè)備上傳數(shù)據(jù)點(diǎn)成功"0√$sys/{pid}/{device-name}/dp/post/json/rejected系統(tǒng)通知"設(shè)備上傳數(shù)據(jù)點(diǎn)失敗"0√實(shí)驗(yàn)步驟2、在Publish下方,輸入JSON數(shù)據(jù)流示例:{"id":123,"dp":{"temperatrue":[{"v":60,"t":1709797760}]}}id:表示發(fā)布消息的id,可以更改dp:數(shù)據(jù)流temperature:其中一個(gè)數(shù)據(jù)流名稱v:數(shù)據(jù)點(diǎn)t:產(chǎn)生該數(shù)據(jù)點(diǎn)的時(shí)間,可不上傳。不上傳,平臺(tái)默認(rèn)當(dāng)前時(shí)間。在設(shè)備端可以在緩存中記錄數(shù)據(jù)采集的時(shí)間,并上傳,解決由于網(wǎng)絡(luò)問題導(dǎo)致的無法立即上傳的問題。時(shí)間格式采用Unix格式,1709797760表示2024-03-0715:49:20。TIPS:Publish時(shí)主題出錯(cuò),直接掉線;數(shù)據(jù)流出錯(cuò),rejected實(shí)驗(yàn)步驟進(jìn)入OneNET平臺(tái),在“設(shè)備管理”頁(yè)面中,選擇相應(yīng)設(shè)備,并單擊該設(shè)備對(duì)應(yīng)的“數(shù)據(jù)流”,即可看到該數(shù)據(jù)點(diǎn)。實(shí)驗(yàn)步驟3、MQTT日志前四條日志表示成功登錄;后面的日志表示發(fā)布數(shù)據(jù)。但是本地看不到信息,原因在于未訂閱相關(guān)topic,發(fā)布的過程僅為單向過程。

第六部分

主題訂閱PART0606實(shí)驗(yàn)介紹【實(shí)驗(yàn)?zāi)康摹浚?)掌握MQTT協(xié)議主題訂閱流程(2)掌握整個(gè)流程中,各類信息的解讀【實(shí)驗(yàn)設(shè)備】(1)PC一臺(tái)(2)MQTT.fx軟件【實(shí)驗(yàn)要求】在OneNET平臺(tái)注冊(cè)MQTT產(chǎn)品,在該產(chǎn)品下注冊(cè)設(shè)備,創(chuàng)建數(shù)據(jù)流。采用MQTT.fx軟件進(jìn)行連接,完成topic訂閱。實(shí)驗(yàn)步驟1、訂閱主題accepted點(diǎn)擊MQTT.fx—Subscribe,輸入主題$sys/{pid}/{device-name}/dp/post/json/accepted表示訂閱系統(tǒng)topic,實(shí)現(xiàn)系統(tǒng)通知"設(shè)備上傳數(shù)據(jù)點(diǎn)成功"。點(diǎn)擊Subscribe,下發(fā)出現(xiàn)訂閱條目。

上傳數(shù)據(jù)點(diǎn)相關(guān)系統(tǒng)topic系統(tǒng)topic用途QoS訂閱發(fā)布$sys/{pid}/{device-name}/dp/post/json設(shè)備上傳數(shù)據(jù)點(diǎn)0/1√$sys/{pid}/{device-name}/dp/post/json/accepted系統(tǒng)通知"設(shè)備上傳數(shù)據(jù)點(diǎn)成功"0√$sys/{pid}/{device-name}/dp/post/json/rejected系統(tǒng)通知"設(shè)備上傳數(shù)據(jù)點(diǎn)失敗"0√實(shí)驗(yàn)步驟2、信息發(fā)布點(diǎn)擊MQTT.fx—Publish,輸入$sys/{pid}/{device-name}/dp/post/json,輸入上述數(shù)據(jù)流,點(diǎn)擊Publish。示例:{"id":123,"dp":{"temperatrue":[{"v":60,"t":1581423600}]}}實(shí)驗(yàn)步驟3、訂閱rejected點(diǎn)擊MQTT.fx—Subscribe,輸入以下主題:$sys/{pid}/{device-name}/dp/post/json/rejected表示訂閱系統(tǒng)topic,實(shí)現(xiàn)系統(tǒng)通知"系統(tǒng)通知設(shè)備上傳數(shù)據(jù)點(diǎn)失敗"。點(diǎn)擊Subscribe,下發(fā)出現(xiàn)訂閱條目。實(shí)驗(yàn)步驟4、發(fā)布點(diǎn)擊MQTT.fx—Publish,輸入$sys/{pid}/{device-name}/dp/post/json,輸入錯(cuò)誤數(shù)據(jù)流,點(diǎn)擊Publish。示例:{"id":123,"dp":{"temperatrue":60}}拓展點(diǎn)擊MQTT.fx—Subscribe,輸入以下主題:$sys/{pid}/{device-name}/dp/post/json/+表示同時(shí)訂閱了這一級(jí)的所有topic,包括:$sys/{pid}/{device-name}/dp/post/json/rejected$sys/{pid}/{device-name}/dp/post/json/accepted

第七部分

命令接收PART0707實(shí)驗(yàn)介紹【實(shí)驗(yàn)?zāi)康摹浚?)掌握MQTT協(xié)議接收平臺(tái)命令的工作流程(2)掌握整個(gè)流程中,各類信息的解讀【實(shí)驗(yàn)設(shè)備】(1)PC一臺(tái)(2)MQTT.fx軟件【實(shí)驗(yàn)要求】在OneNET平臺(tái)注冊(cè)MQTT產(chǎn)品,在該產(chǎn)品下注冊(cè)設(shè)備,創(chuàng)建數(shù)據(jù)流。采用MQTT.fx軟件進(jìn)行連接,從OneNET平臺(tái)進(jìn)行命令下發(fā)。命令下發(fā)相關(guān)系統(tǒng)topic系統(tǒng)topic用途QoS訂閱發(fā)布$sys/{pid}/{device-name}/cmd/request/{cmdid}系統(tǒng)向設(shè)備下發(fā)命令0√$sys/{pid}/{device-name}/cmd/response/{cmdid}設(shè)備回復(fù)命令應(yīng)答0/1√$sys/{pid}/{device-name}/cmd/response/{cmdid}/accepted系統(tǒng)回復(fù)"設(shè)備命令應(yīng)答成功"0√$sys/{pid}/{device-name}/cmd/response/{cmdid}/rejected系統(tǒng)回復(fù)"設(shè)備命令應(yīng)答失敗"0√

難點(diǎn):cmdid未知實(shí)驗(yàn)步驟MQTT是雙向的,設(shè)備端可以向平臺(tái)發(fā)送數(shù)據(jù),平臺(tái)也可以向數(shù)據(jù)段下發(fā)命令。與EDP設(shè)備不同的是,對(duì)于MQTT設(shè)備,信息發(fā)送并不能直接到設(shè)備端,需要設(shè)備端訂閱相應(yīng)的主題。因此,調(diào)試過程分設(shè)備端和平臺(tái)端。1、成功連接后,打開MQTT.fx,訂閱

$sys/{pid}/{device-name}/cmd/request/+,表示系統(tǒng)向設(shè)備下發(fā)命令

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論