物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開(kāi)發(fā) 課件 項(xiàng)目三 基于MQTT協(xié)議的高溫預(yù)警系統(tǒng)_第1頁(yè)
物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開(kāi)發(fā) 課件 項(xiàng)目三 基于MQTT協(xié)議的高溫預(yù)警系統(tǒng)_第2頁(yè)
物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開(kāi)發(fā) 課件 項(xiàng)目三 基于MQTT協(xié)議的高溫預(yù)警系統(tǒng)_第3頁(yè)
物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開(kāi)發(fā) 課件 項(xiàng)目三 基于MQTT協(xié)議的高溫預(yù)警系統(tǒng)_第4頁(yè)
物聯(lián)網(wǎng)云平臺(tái)應(yīng)用開(kāi)發(fā) 課件 項(xiàng)目三 基于MQTT協(xié)議的高溫預(yù)警系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩132頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

認(rèn)識(shí)物模型物聯(lián)網(wǎng)云平臺(tái)開(kāi)發(fā)實(shí)踐(第2版)目錄CONTENTS01物模型簡(jiǎn)介02新建物模型03設(shè)備模擬器04應(yīng)用模擬器

第一部分

物模型簡(jiǎn)介PART0101認(rèn)識(shí)物模型傳統(tǒng)物聯(lián)網(wǎng)業(yè)務(wù)開(kāi)發(fā)流程

物模型開(kāi)發(fā)流程傳統(tǒng)的物聯(lián)網(wǎng)業(yè)務(wù)開(kāi)發(fā)包括終端設(shè)備研發(fā)、設(shè)備與云端聯(lián)調(diào)、基于設(shè)備和云端進(jìn)行應(yīng)用開(kāi)發(fā)三個(gè)步驟,三個(gè)業(yè)務(wù)開(kāi)發(fā)步驟是串行的,且每一步都需要一定的資源投入和開(kāi)發(fā)周期,從而導(dǎo)致物聯(lián)網(wǎng)業(yè)務(wù)開(kāi)發(fā)周期冗長(zhǎng),資源投入大。用物模型來(lái)結(jié)構(gòu)化、統(tǒng)一化、標(biāo)準(zhǔn)化地粘合數(shù)據(jù)碎片,減少業(yè)務(wù)復(fù)制成本,打破服務(wù)壁壘。物模型是將終端設(shè)備實(shí)體進(jìn)行數(shù)字化描述,在云端實(shí)現(xiàn)設(shè)備虛擬化??梢酝ㄟ^(guò)設(shè)備產(chǎn)生的真實(shí)數(shù)據(jù)進(jìn)行物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā);也可以基于云端虛擬設(shè)備直接進(jìn)行開(kāi)發(fā),終端設(shè)備的研發(fā)也可以同步進(jìn)行,這樣使得原本的串行研發(fā)流程變?yōu)椴⑿械难邪l(fā)流程,縮短研發(fā)周期,節(jié)省人力和資源成本。認(rèn)識(shí)物模型上圖為設(shè)備抽象模型,用物指代連入平臺(tái)的設(shè)備,模型包含物的狀態(tài)、檔案信息和功能定義三層。第一層用狀態(tài)信息表示設(shè)備是否在線、是否激活;第二層用物的檔案描述設(shè)備身份信息,這部分信息為靜態(tài)信息;第三層為物的功能定義,包含屬性、服務(wù)和事件三部分,設(shè)備運(yùn)行狀態(tài)為屬性,設(shè)備被遠(yuǎn)程調(diào)用而執(zhí)行的動(dòng)作和指令表示服務(wù),事件則表示設(shè)備主動(dòng)上報(bào)的信息、告警、故障等。以設(shè)備智能風(fēng)扇為例,屬性包括轉(zhuǎn)速、環(huán)境溫度、開(kāi)關(guān)等;服務(wù)包括設(shè)定工作時(shí)長(zhǎng)等;事件包括告警、信息和故障等。

風(fēng)扇的“開(kāi)關(guān)”屬性構(gòu)成了“開(kāi)關(guān)功能”,“設(shè)定工作時(shí)長(zhǎng)”行為構(gòu)成了“定時(shí)功能”。OneNET物模型將“開(kāi)關(guān)功能”和“定時(shí)功能”封裝成“定時(shí)開(kāi)關(guān)組件”,用戶通過(guò)調(diào)用該組件實(shí)現(xiàn)風(fēng)扇的定時(shí)開(kāi)啟和定時(shí)關(guān)閉。采用了與ICA物模型類似的三級(jí)架構(gòu),包含設(shè)備、組件和功能,其中功能又包含屬性、服務(wù)和事件。組件:用于描述設(shè)備能力,包含公共組件和行業(yè)組件,每個(gè)組件可以由多個(gè)功能組成;屬性是指設(shè)備支持的可讀或可設(shè)置的參數(shù)功能,一般用于描述設(shè)備運(yùn)行時(shí)的狀態(tài),用戶也可通過(guò)設(shè)置的請(qǐng)求方式來(lái)更改設(shè)備的運(yùn)行狀態(tài);服務(wù)是指終端設(shè)備被外部調(diào)用的能力,可設(shè)置輸入?yún)?shù)和輸出參數(shù)。服務(wù)可實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯,例如執(zhí)行某項(xiàng)特定的任務(wù)。服務(wù)支持同步或異步返回結(jié)果;事件是指設(shè)備運(yùn)行時(shí)可以被觸發(fā)的上行消息,如設(shè)備運(yùn)行的記錄信息,設(shè)備異常時(shí)發(fā)出的告警、故障信息等。事件可包含多個(gè)輸出參數(shù)。認(rèn)識(shí)物模型-3PART0202

第二部分

新建物模型【實(shí)驗(yàn)?zāi)康摹?/p>

(1)掌握基于OneJson數(shù)據(jù)協(xié)議的MQTT產(chǎn)品、設(shè)備創(chuàng)建流程。

(2)掌握物模型的創(chuàng)建流程。

(3)掌握整個(gè)流程中各類信息的解讀。

【實(shí)驗(yàn)設(shè)備】

(1)一臺(tái)PC,可連接Internet。

【實(shí)驗(yàn)要求】

在OneNET平臺(tái)注冊(cè)MQTT產(chǎn)品,數(shù)據(jù)協(xié)議采用OneJson,在該產(chǎn)品下注冊(cè)設(shè)備,設(shè)置物模型。

新建物模型--實(shí)驗(yàn)步驟一、新建MQTT產(chǎn)品

(1)登錄OneNET平臺(tái),進(jìn)入開(kāi)發(fā)者中心,單擊左側(cè)“產(chǎn)品開(kāi)發(fā)”。

(2)單擊“創(chuàng)建產(chǎn)品”按鈕,并填寫相關(guān)信息。接入?yún)f(xié)議選擇MQTT,數(shù)據(jù)協(xié)議選擇OneJson。(3)記錄新建產(chǎn)品的產(chǎn)品ID。新建物模型--實(shí)驗(yàn)步驟二、新建MQTT設(shè)備

(1)在該產(chǎn)品下,添加MQTT設(shè)備,設(shè)備名稱不能重復(fù)。

(2)選擇“設(shè)備列表”標(biāo)簽,在該設(shè)備右側(cè),出現(xiàn)數(shù)據(jù)流格式可以進(jìn)行的操作選項(xiàng):設(shè)備詳情、屬性、事件記錄、服務(wù)記錄、文件管理、設(shè)備調(diào)試和SIM卡查詢。

單擊“設(shè)備詳情”,記錄設(shè)備名稱、設(shè)備密鑰和產(chǎn)品ID。新建物模型--實(shí)驗(yàn)步驟三、功能定義

OneJson數(shù)據(jù)協(xié)議是物模型對(duì)應(yīng)的數(shù)據(jù)協(xié)議,在使用過(guò)程中,需要先定義物模型,再進(jìn)行功能定義(1)選擇“產(chǎn)品開(kāi)發(fā)”標(biāo)簽,在出現(xiàn)的界面中單擊“設(shè)置物模型”。

新建物模型--實(shí)驗(yàn)步驟三、功能定義

(2)在出現(xiàn)的界面中,單擊添加自定義功能點(diǎn)。(3)添加“溫度”和“濕度”兩個(gè)功能類型為屬性類型的功能點(diǎn)并保存。定義功能點(diǎn)時(shí),需要選擇功能類型、填寫功能名稱、標(biāo)識(shí)符、數(shù)據(jù)類型、取值范圍、讀寫類型等參數(shù)。其中,標(biāo)識(shí)符不能包含中文字符。這兩個(gè)功能點(diǎn)可以用來(lái)記錄運(yùn)行過(guò)程中產(chǎn)生的數(shù)據(jù),讀寫類型可以設(shè)置為讀寫。新建物模型--實(shí)驗(yàn)步驟三、功能定義

(4)功能類型不僅包含屬性類型,還包含服務(wù)類型。添加功能類型為服務(wù)類型的功能點(diǎn),名稱為“風(fēng)扇控制”,調(diào)用方式包括同步和異步,也可以設(shè)置輸入?yún)?shù)和輸出參數(shù)。此處,標(biāo)識(shí)符為功能點(diǎn)唯一標(biāo)識(shí)符,單個(gè)產(chǎn)品下唯一,也是后續(xù)調(diào)用服務(wù)時(shí)對(duì)應(yīng)的identifier參數(shù)。新建物模型--實(shí)驗(yàn)步驟三、功能定義

(5)除了屬性類型和服務(wù)類型,功能類型還包含事件類型。添加功能類型為事件類型的功能點(diǎn)“高溫預(yù)警”并保存。定義功能點(diǎn)時(shí),需要選擇功能類型、填寫功能名稱、標(biāo)識(shí)符、事件類型、輸出參數(shù)等信息。其中,標(biāo)識(shí)符不能包含中文字符。事件類型包含信息、告警、故障三大類。點(diǎn)擊添加參數(shù),可以看到添加輸出參數(shù)頁(yè)面。需要填寫參數(shù)名稱、標(biāo)識(shí)符、數(shù)據(jù)類型等信息,不同的數(shù)據(jù)類型,對(duì)應(yīng)的參數(shù)值設(shè)定不同。以數(shù)據(jù)類型int32為例,設(shè)置取值范圍、步長(zhǎng)和單位。新建物模型--實(shí)驗(yàn)步驟PART0303

第三部分

設(shè)備模擬器設(shè)備模擬器--實(shí)驗(yàn)步驟【實(shí)驗(yàn)?zāi)康摹?/p>

(1)掌握基于物模型的MQTT虛擬設(shè)備調(diào)試的方法。

(2)掌握整個(gè)流程中各類信息的解讀。

【實(shí)驗(yàn)設(shè)備】

(1)一臺(tái)PC,可連接Internet。

【實(shí)驗(yàn)要求】

物模型將終端設(shè)備實(shí)體進(jìn)行數(shù)字化描述,在云端實(shí)現(xiàn)設(shè)備虛擬化,可以基于云端虛擬設(shè)備直接進(jìn)行開(kāi)發(fā)。在實(shí)驗(yàn)一創(chuàng)建的產(chǎn)品和設(shè)備下,進(jìn)行虛擬設(shè)備調(diào)試,實(shí)現(xiàn)設(shè)備屬性上報(bào)、屬性期望值獲取和事件上報(bào)。一、虛擬設(shè)備登錄

(1)進(jìn)入OneNET開(kāi)發(fā)者中心,單擊“設(shè)備接入管理”——“設(shè)備管理”,單擊實(shí)驗(yàn)一創(chuàng)建的設(shè)備所對(duì)應(yīng)的“詳情”按鍵。

設(shè)備模擬器--實(shí)驗(yàn)步驟一、虛擬設(shè)備登錄

(2)在圖示的頁(yè)面中,單擊“設(shè)備調(diào)試”。(3)在“設(shè)備模擬器”頁(yè)面中,單擊“啟動(dòng)調(diào)試”。設(shè)備模擬器--實(shí)驗(yàn)步驟一、虛擬設(shè)備登錄

左側(cè)為已定義的屬性功能點(diǎn),右側(cè)為調(diào)試日志,數(shù)據(jù)格式為JSON。啟動(dòng)調(diào)試后,平臺(tái)啟動(dòng)虛擬設(shè)備,并將虛擬設(shè)備與平臺(tái)建立連接,右側(cè)為設(shè)備登錄的具體信息,具體包括以下幾部分內(nèi)容:

title:登錄,表示操作內(nèi)容為設(shè)備登錄;

timestamp:表示登錄時(shí)間;

message:表示登錄設(shè)備信息和鑒權(quán)信息,具體包括clientid(設(shè)備名稱)、username(產(chǎn)品id)、password(token)。在OneNET平臺(tái)“設(shè)備詳情”頁(yè)面中,會(huì)顯示設(shè)備狀態(tài)為“在線”。

設(shè)備模擬器--實(shí)驗(yàn)步驟二、屬性上報(bào)

屬性上報(bào)表示將設(shè)備實(shí)時(shí)運(yùn)行的參數(shù)等信息上傳至云平臺(tái),基于物模型,可以在無(wú)實(shí)物的狀態(tài)下,使用虛擬設(shè)備進(jìn)行模擬,并在設(shè)備調(diào)試頁(yè)面中進(jìn)行屬性上報(bào),具體步驟如下。

(1)在“設(shè)備調(diào)試”——“設(shè)備模擬器”——“屬性上報(bào)”頁(yè)面,勾選已經(jīng)配置的功能點(diǎn),以“濕度”功能為例,允許數(shù)值類型為float,數(shù)值范圍為0-100。填寫上報(bào)的濕度值60,單擊“屬性上報(bào)”。

設(shè)備模擬器--實(shí)驗(yàn)步驟二、屬性上報(bào)

(2)右側(cè)調(diào)試日志中顯示如圖所示的屬性上報(bào)和平臺(tái)響應(yīng)兩部分內(nèi)容,格式為JSON格式。設(shè)備模擬器--實(shí)驗(yàn)步驟二、屬性上報(bào)

屬性上報(bào)的信息包含以下幾部分:

title:屬性上報(bào),表示操作內(nèi)容為設(shè)備屬性的上報(bào);

timestamp:表示屬性上報(bào)時(shí)間;

message:表示屬性上報(bào)信息,具體又包括topic(屬性上報(bào)的主題)、data(屬性具體信息:id、version、params)。id為用戶自定義消息id號(hào);version為物模型版本號(hào);params為請(qǐng)求參數(shù),包含屬性上報(bào)時(shí)間和屬性值。設(shè)備模擬器--實(shí)驗(yàn)步驟二、屬性上報(bào)

平臺(tái)響應(yīng)的信息包含以下幾部分:

title:收到平臺(tái)響應(yīng);timestamp:表示接收到平臺(tái)響應(yīng)的時(shí)間;message:表示平臺(tái)響應(yīng)具體信息,包括topic(平臺(tái)響應(yīng)的主題)、data(響應(yīng)具體信息:id、code、msg)。id為用戶自定義消息id號(hào),與屬性上報(bào)的id一致,表示云平臺(tái)收到該條屬性上報(bào)的消息;code為響應(yīng)代碼,200為屬性上報(bào)成功;msg給出具體響應(yīng)結(jié)果,success表示屬性上報(bào)成功;如果上報(bào)失敗會(huì)有具體的錯(cuò)誤代碼和錯(cuò)誤信息。設(shè)備模擬器--實(shí)驗(yàn)步驟(3)在“產(chǎn)品開(kāi)發(fā)”——“設(shè)備開(kāi)發(fā)”頁(yè)面,單擊“Topic管理”,再單擊“物模型topic”,可以查看Topic權(quán)限和用途等信息。從圖中可以看到直連設(shè)備上報(bào)屬性的topic與步驟(2)中topic一致。

二、屬性上報(bào)

其中,與直連設(shè)備屬性上報(bào)相關(guān)的topic,如表所示。其中{pid}用產(chǎn)品ID替換,{device-name}用設(shè)備名稱替換。設(shè)備模擬器--實(shí)驗(yàn)步驟(4)單擊“屬性”標(biāo)簽,可以查看此時(shí)該設(shè)備濕度屬性下已經(jīng)新增了屬性值60,時(shí)間與屬性上報(bào)時(shí)間一致。

設(shè)備模擬器--實(shí)驗(yàn)步驟(5)屬性上報(bào)支持單個(gè)屬性值的上報(bào)和多個(gè)屬性值的同時(shí)上報(bào)。在“設(shè)備調(diào)試”——“屬性上報(bào)”頁(yè)面,勾選已經(jīng)配置的多個(gè)功能點(diǎn),按照要求填寫參數(shù),單擊“屬性上報(bào)”。右側(cè)調(diào)試日志中顯示如圖所示的多個(gè)屬性值上報(bào)和平臺(tái)響應(yīng)兩部分內(nèi)容。與單個(gè)屬性值上報(bào)相比,主要差異在于params參數(shù)值的設(shè)置,其余參數(shù)規(guī)則相似。單擊“屬性”標(biāo)簽,可以查看此時(shí)該設(shè)備濕度和溫度屬性下已經(jīng)新增了屬性值,時(shí)間與屬性上報(bào)時(shí)間一致。

設(shè)備模擬器--實(shí)驗(yàn)步驟三、屬性期望值獲取

在平臺(tái)設(shè)置屬性期望值信息后,平臺(tái)更新屬性期望值。當(dāng)設(shè)備在線后,可以主動(dòng)獲取屬性期望值。

(1)在“設(shè)備調(diào)試”——“設(shè)備模擬器”——“屬性期望值獲取”頁(yè)面,勾選已經(jīng)配置的功能點(diǎn),單擊“屬性期望值獲取”。

設(shè)備模擬器--實(shí)驗(yàn)步驟(2)右側(cè)調(diào)試日志中顯示如圖所示的屬性期望獲取和平臺(tái)響應(yīng)兩部分內(nèi)容,格式為JSON格式。

屬性期望獲取的信息包含以下幾部分:title:屬性期望獲?。?/p>

timestamp:表示發(fā)送屬性期望獲取的消息時(shí)間;

message:表示屬性上報(bào)信息,具體又包括topic(屬性期望獲取的主題)、data(具體信息:id、version、params)。圖中,id為用戶自定義消息id號(hào);version為物模型版本號(hào);params為請(qǐng)求參數(shù),包含標(biāo)識(shí)符為Hum和temp的兩個(gè)屬性。三、屬性期望值獲取

設(shè)備模擬器--實(shí)驗(yàn)步驟平臺(tái)響應(yīng)的信息包含以下幾部分:title:收到平臺(tái)響應(yīng);timestamp:表示接收到平臺(tái)響應(yīng)的時(shí)間;message:表示平臺(tái)響應(yīng)具體信息,包括topic(平臺(tái)響應(yīng)的主題)、data(響應(yīng)具體信息:msg、code、data、id)。圖中,msg給出具體響應(yīng)結(jié)果,success表示屬性期望值獲取成功;code為響應(yīng)代碼,200為屬性上報(bào)成功;data為返回的期望值信息,若未在云端設(shè)置過(guò)該屬性的期望值,或期望值屬性被清空,返回對(duì)象中不包含該屬性的標(biāo)識(shí)符;id為用戶自定義消息id號(hào),與屬性上報(bào)的id一致,表示云平臺(tái)收到該條屬性上報(bào)的消息。Hum屬性期望值為50,temp屬性期望值為25。三、屬性期望值獲取

設(shè)備模擬器--實(shí)驗(yàn)步驟(3)在“產(chǎn)品開(kāi)發(fā)”——“設(shè)備開(kāi)發(fā)”頁(yè)面,單擊“Topic管理”,再單擊“物模型topic”,可以查看Topic權(quán)限和用途等信息。從圖3-30中可以看到直連設(shè)備上報(bào)屬性的topic與步驟(2)中topic一致。

三、屬性期望值獲取

其中,與直連設(shè)備期望值相關(guān)的topic,如表所示。設(shè)備模擬器--實(shí)驗(yàn)步驟在物模型中,事件是設(shè)備運(yùn)行時(shí)可以被觸發(fā)的上行消息,與屬性在功能定位上不同。使用設(shè)備模擬器也可以進(jìn)行事件上報(bào)的模擬操作,具體步驟如下。(1)在“設(shè)備調(diào)試”——“設(shè)備模擬器”——“事件上報(bào)”頁(yè)面,選擇已建立的事件“高溫預(yù)警”,并在出現(xiàn)的輸出參數(shù)中按照定義規(guī)則填寫參數(shù)信息。四、事件上報(bào)設(shè)備模擬器--實(shí)驗(yàn)步驟(2)右側(cè)調(diào)試日志中顯示如圖所示的事件上報(bào)和平臺(tái)響應(yīng)兩部分內(nèi)容,格式為JSON格式。事件上報(bào)的信息包含以下幾部分:title:事件上報(bào);timestamp:表示事件上報(bào)時(shí)間;

message:表示事件上報(bào)信息,具體又包括topic(事件上報(bào)的主題)、data(事件具體信息:id、version、params)。圖中,id為用戶自定義消息id號(hào);version為物模型版本號(hào);params為請(qǐng)求參數(shù),包含事件標(biāo)識(shí)符、參數(shù)值。四、事件上報(bào)設(shè)備模擬器--實(shí)驗(yàn)步驟平臺(tái)響應(yīng)的信息包含以下幾部分:title:收到平臺(tái)響應(yīng);timestamp:表示接收到平臺(tái)響應(yīng)的時(shí)間;message:表示平臺(tái)響應(yīng)具體信息,包括topic(平臺(tái)響應(yīng)的主題)、data(響應(yīng)具體信息:id、code、msg)。圖3-32中,id為用戶自定義消息id號(hào),與事件上報(bào)的id一致,表示云平臺(tái)收到該事件上報(bào)的消息;code為響應(yīng)代碼,200為事件上報(bào)成功;msg給出具體響應(yīng)結(jié)果,success表示事件上報(bào)成功;如果上報(bào)失敗會(huì)有具體的錯(cuò)誤代碼和錯(cuò)誤信息。

四、事件上報(bào)設(shè)備模擬器--實(shí)驗(yàn)步驟(3)在“產(chǎn)品開(kāi)發(fā)”——“設(shè)備開(kāi)發(fā)”頁(yè)面,單擊“Topic管理”,再單擊“物模型topic”,可以查看Topic權(quán)限和用途等信息。從圖中可以看到直連設(shè)備上報(bào)屬性的topic與步驟(2)中topic一致。

四、事件上報(bào)其中,與直連設(shè)備事件上報(bào)相關(guān)的topic,如表所示。

其中{pid}用產(chǎn)品ID替換,{device-name}用設(shè)備名稱替換。

設(shè)備模擬器--實(shí)驗(yàn)步驟(4)單擊“事件記錄”標(biāo)簽,可以查看此時(shí)該設(shè)備下已經(jīng)新增了一條功能名稱為高溫預(yù)警的事件記錄,類型為告警,輸出參數(shù)為Temperature值為80。四、事件上報(bào)設(shè)備模擬器--實(shí)驗(yàn)步驟PART0404

第四部分

應(yīng)用模擬器應(yīng)用模擬器--實(shí)驗(yàn)步驟【實(shí)驗(yàn)?zāi)康摹?/p>

(1)掌握基于物模型的MQTT應(yīng)用模擬器的方法。

(2)掌握整個(gè)流程中各類信息的解讀。

【實(shí)驗(yàn)設(shè)備】

(1)一臺(tái)PC,可連接Internet。

【實(shí)驗(yàn)要求】

基于物模型的行業(yè)開(kāi)發(fā),不僅可以模擬設(shè)備接入,也可以進(jìn)行應(yīng)用模擬。在實(shí)驗(yàn)一創(chuàng)建的產(chǎn)品和設(shè)備下,進(jìn)行虛擬設(shè)備調(diào)試,采用應(yīng)用模擬器實(shí)現(xiàn)屬性設(shè)置、屬性獲取、屬性期望值設(shè)置和服務(wù)調(diào)用。

一、虛擬設(shè)備登錄

(1)進(jìn)入OneNET開(kāi)發(fā)者中心,單擊“設(shè)備接入管理”——“設(shè)備管理”,單擊實(shí)驗(yàn)一創(chuàng)建的設(shè)備所對(duì)應(yīng)的“詳情”按鍵。

(2)單擊“設(shè)備調(diào)試”,在調(diào)試頁(yè)面中單擊“啟動(dòng)調(diào)試”,實(shí)現(xiàn)虛擬設(shè)備登錄。

二、屬性設(shè)置

與屬性上報(bào)不同,屬性設(shè)置是從應(yīng)用模擬器向設(shè)備發(fā)送設(shè)置指令,具體操作如下。

(1)進(jìn)入OneNET開(kāi)發(fā)者中心,單擊“設(shè)備接入管理”——“設(shè)備管理”,單擊實(shí)驗(yàn)一創(chuàng)建的設(shè)備所對(duì)應(yīng)的“詳情”按鍵。

(2)單擊“設(shè)備調(diào)試”,在調(diào)試頁(yè)面中單擊“啟動(dòng)調(diào)試”,實(shí)現(xiàn)虛擬設(shè)備登錄。

(3)在如圖所示的“應(yīng)用模擬器”——“屬性設(shè)置”頁(yè)面中,勾選兩個(gè)功能點(diǎn),并填寫屬性值,單擊屬性設(shè)置。

應(yīng)用模擬器--實(shí)驗(yàn)步驟一、虛擬設(shè)備登錄

二、屬性設(shè)置

應(yīng)用模擬器--實(shí)驗(yàn)步驟(4)右側(cè)調(diào)試日志中顯示如圖所示的屬性設(shè)置和平臺(tái)響應(yīng)兩部分內(nèi)容,格式為JSON格式。

屬性設(shè)置的信息包含以下幾部分:

title:屬性設(shè)置;

message:表示屬性設(shè)置信息,具體又包括product_id(產(chǎn)品id)、device_name(設(shè)備名稱)、imei(國(guó)際移動(dòng)設(shè)備識(shí)別碼)、params(請(qǐng)求參數(shù))。Hum屬性設(shè)置為48,temp屬性設(shè)置為18。

timestamp:表示屬性設(shè)置時(shí)間;

應(yīng)用模擬器--實(shí)驗(yàn)步驟響應(yīng)結(jié)果的信息包含以下幾部分:

title:響應(yīng)結(jié)果,表示收到設(shè)備響應(yīng);

message:表示平臺(tái)響應(yīng)具體信息,包括code(執(zhí)行該操作后的反饋碼)、data(執(zhí)行操作后返回的業(yè)務(wù)數(shù)據(jù))、request_id(請(qǐng)求id)、msg(執(zhí)行操作后,返回的信息)。圖中,data包含code、data和msg分別表示設(shè)備端給出的響應(yīng)結(jié)果。表示屬性設(shè)置成功。

timestamp:表示接收到響應(yīng)的時(shí)間;

應(yīng)用模擬器--實(shí)驗(yàn)步驟(5)查詢“物模型topic”,與設(shè)置直連設(shè)備屬性相關(guān)的topic,如表所示。應(yīng)用模擬器--實(shí)驗(yàn)步驟(6)單擊“操作記錄”標(biāo)簽,可以查看此時(shí)該設(shè)備下已經(jīng)新增了一條“寫”操作。

單擊“詳情”,可以在圖中看到操作的具體詳情,包括屬性設(shè)置的輸入?yún)?shù)和設(shè)備端給出的反饋。(7)屬性獲取三、屬性期望值設(shè)置

(1)在如圖所示的在“應(yīng)用模擬器”——“屬性期望值設(shè)置”頁(yè)面中,勾選兩個(gè)功能點(diǎn),并填寫屬性期望值,單擊屬性期望值設(shè)置。

應(yīng)用模擬器--實(shí)驗(yàn)步驟三、屬性期望值設(shè)置

屬性期望值設(shè)置的信息包含以下幾部分:

title:屬性期望值設(shè)置;

message:表示屬性期望值設(shè)置信息,具體又包括product_id(產(chǎn)品id)、device_name(設(shè)備名稱)、imei(國(guó)際移動(dòng)設(shè)備識(shí)別碼)、params(請(qǐng)求參數(shù))。Hum屬性期望值設(shè)置為70,temp屬性期望值設(shè)置為50。

timestamp:表示屬性期望值設(shè)置時(shí)間;應(yīng)用模擬器--實(shí)驗(yàn)步驟應(yīng)用模擬器--實(shí)驗(yàn)步驟三、屬性期望值設(shè)置

響應(yīng)結(jié)果的信息包含以下幾部分:

title:響應(yīng)結(jié)果,表示收到設(shè)備響應(yīng);

message:表示平臺(tái)響應(yīng)具體信息,包括code(執(zhí)行該操作后的反饋碼)、data(執(zhí)行操作后返回的業(yè)務(wù)數(shù)據(jù))、request_id(請(qǐng)求id)、msg(執(zhí)行操作后,返回的信息)。data包含code、data和msg分別表示設(shè)備端給出的響應(yīng)結(jié)果。下圖表示屬性期望值設(shè)置成功。

timestamp:表示接收到響應(yīng)的時(shí)間;應(yīng)用模擬器--實(shí)驗(yàn)步驟三、屬性期望值設(shè)置

(3)在“設(shè)備模擬器”——“屬性期望值獲取”頁(yè)面中,勾選功能點(diǎn),單擊“屬性期望值獲取”,可以查詢到設(shè)置的屬性期望值信息。四、服務(wù)調(diào)用

(1)在如圖所示的“應(yīng)用模擬器”——“服務(wù)調(diào)用”頁(yè)面中,選擇實(shí)驗(yàn)一新建的服務(wù),并填寫輸入?yún)?shù),單擊“服務(wù)調(diào)用”。

應(yīng)用模擬器--實(shí)驗(yàn)步驟物聯(lián)網(wǎng)平臺(tái)支持同步調(diào)用和異步調(diào)用,同步調(diào)用超時(shí)時(shí)間10s,異步調(diào)用需在24小時(shí)內(nèi)回復(fù)。四、服務(wù)調(diào)用

應(yīng)用模擬器--實(shí)驗(yàn)步驟(2)右側(cè)調(diào)試日志中顯示如圖所示的服務(wù)調(diào)用和平臺(tái)響應(yīng)兩部分內(nèi)容,格式為JSON格式。

服務(wù)調(diào)用的信息包含以下幾部分:

title:服務(wù)調(diào)用;

message:表示服務(wù)調(diào)用信息,具體又包括product_id(產(chǎn)品id)、device_name(設(shè)備名稱)、identifier(標(biāo)識(shí)碼)、params(請(qǐng)求參數(shù))、imei(國(guó)際移動(dòng)設(shè)備識(shí)別碼)。圖中,對(duì)設(shè)備的輸入?yún)?shù)為SW設(shè)為1。

timestamp:表示服務(wù)調(diào)用時(shí)間;四、服務(wù)調(diào)用

應(yīng)用模擬器--實(shí)驗(yàn)步驟響應(yīng)結(jié)果的信息包含以下幾部分:

title:響應(yīng)結(jié)果,表示收到設(shè)備響應(yīng);

message:表示平臺(tái)響應(yīng)具體信息,包括code(執(zhí)行該操作后的反饋碼)、data(執(zhí)行操作后返回的業(yè)務(wù)數(shù)據(jù))、msg(執(zhí)行操作后,返回的信息)、request_id(請(qǐng)求id)。圖表示成功調(diào)用服務(wù);

timestamp:表示接收到響應(yīng)的時(shí)間;(3)查詢“物模型topic”,與平臺(tái)調(diào)用直連設(shè)備服務(wù)相關(guān)的topic,如表所示。

應(yīng)用模擬器--實(shí)驗(yàn)步驟(4)單擊“服務(wù)記錄”標(biāo)簽,可以查看此時(shí)該設(shè)備下已經(jīng)新增了一條“風(fēng)扇控制”的服務(wù)記錄。應(yīng)用模擬器--實(shí)驗(yàn)步驟單擊“詳情”,可以在圖中看到服務(wù)記錄的具體詳情。

物聯(lián)網(wǎng)云平臺(tái)開(kāi)發(fā)實(shí)踐(第2版)謝謝您的觀看!Thankyou!基于模擬器的MQTT協(xié)議調(diào)試物聯(lián)網(wǎng)云平臺(tái)開(kāi)發(fā)實(shí)踐(第2版)目錄CONTENTS01屬性上報(bào)02屬性設(shè)置03事件上報(bào)04服務(wù)調(diào)用

第一部分

屬性上報(bào)PART0101實(shí)驗(yàn)介紹【實(shí)驗(yàn)?zāi)康摹浚?)掌握MQTT協(xié)議屬性上報(bào)的流程和作用。(2)掌握整個(gè)流程中各類信息的解讀?!緦?shí)驗(yàn)設(shè)備】(1)一臺(tái)PC,可連接Internet。(2)MQTT.fx軟件?!緦?shí)驗(yàn)要求】在任務(wù)一實(shí)驗(yàn)一創(chuàng)建的數(shù)據(jù)格式為OneJson的設(shè)備下,設(shè)置物模型,自定義名稱為溫度和濕度的兩個(gè)屬性功能點(diǎn),采用MQTT.fx軟件實(shí)現(xiàn)設(shè)備屬性上報(bào)。采用OneJson格式實(shí)現(xiàn)遠(yuǎn)程設(shè)備的信息監(jiān)測(cè),主要通過(guò)屬性上報(bào)來(lái)實(shí)現(xiàn)。屬性是指設(shè)備支持的可讀或可設(shè)置的參數(shù)功能,一般用于描述設(shè)備運(yùn)行時(shí)的狀態(tài),用戶也可通過(guò)設(shè)置的請(qǐng)求方式來(lái)更改設(shè)備的運(yùn)行狀態(tài)。在遠(yuǎn)程監(jiān)測(cè)這類實(shí)際應(yīng)用中,可以通過(guò)屬性上報(bào)來(lái)實(shí)現(xiàn)。實(shí)驗(yàn)步驟一、建立連接(1)打開(kāi)MQTT.fx客戶端,進(jìn)入客戶端配置頁(yè)面。(2)設(shè)置參數(shù)如下:接入地址:。端口:8883。ClientID:填寫設(shè)備名稱。Username:填寫產(chǎn)品ID。Password:填寫計(jì)算得到的token。SSL/TLS選項(xiàng)卡:在該選項(xiàng)卡內(nèi)進(jìn)行加密設(shè)置。勾選EnableSSL/TLS,Protocol選擇TLSv1.2,選擇CAcertificatefile選項(xiàng),導(dǎo)入證書。(3)設(shè)置完畢,單擊OK按鈕。(4)在MQTT.fx客戶端首頁(yè)中,選擇localmosquitto,單擊Connect按鈕進(jìn)行連接。在連接后,確認(rèn)設(shè)備的在線狀態(tài)。(5)在OneNET平臺(tái)“設(shè)備管理”頁(yè)面中,會(huì)顯示設(shè)備在線狀態(tài)。實(shí)驗(yàn)步驟二、查詢物模型topic在“設(shè)備開(kāi)發(fā)”頁(yè)面,單擊“Topic管理”,再單擊“物模型topic”,可以查看Topic權(quán)限和用途等信息。其中,與直連設(shè)備屬性上報(bào)相關(guān)的topic。topic用途訂閱發(fā)布$sys/{pid}/{device-name}/thing/property/post直連設(shè)備上報(bào)屬性

√$sys/{pid}/{device-name}/thing/property/post/reply直連設(shè)備上報(bào)屬性響應(yīng)√其中{pid}用產(chǎn)品ID替換,{device-name}用設(shè)備名稱替換。實(shí)驗(yàn)步驟三、訂閱主題如圖3-47所示,在成功連接后,打開(kāi)MQTT.fx端首頁(yè),單擊上面的Subscribe按鈕,訂閱如下主題:$sys/{pid}/{device-name}/thing/property/post/reply當(dāng)直連設(shè)備上報(bào)屬性后,MQTT.fx軟件可以收到對(duì)應(yīng)的響應(yīng)消息。實(shí)驗(yàn)步驟四、屬性上報(bào)在MQTT.fx客戶端首頁(yè)單擊Publish按鈕,輸入$sys/{pid}/{device-name}/thing/property/post,輸入OneJson請(qǐng)求數(shù)據(jù),并單擊輸入框后面的Publish按鈕。實(shí)驗(yàn)步驟五、結(jié)果查詢打開(kāi)OneNET平臺(tái),單擊“設(shè)備管理”,進(jìn)入“屬性”頁(yè)面,可以看到功能名稱為“溫度”的屬性新增了數(shù)據(jù)25,功能名稱為“濕度”的屬性值為46。PART0202

第二部分

屬性設(shè)置【實(shí)驗(yàn)?zāi)康摹?/p>

(1)掌握MQTT協(xié)議屬性設(shè)置的流程和作用。

(2)掌握整個(gè)流程中各類信息的解讀。

【實(shí)驗(yàn)設(shè)備】

(1)一臺(tái)PC,可連接Internet。

(2)MQTT.fx軟件。

【實(shí)驗(yàn)要求】

采用OneJson格式實(shí)現(xiàn)設(shè)備的遠(yuǎn)程控制,可以通過(guò)設(shè)置該設(shè)備的屬性并下發(fā)來(lái)實(shí)現(xiàn),例如,倉(cāng)儲(chǔ)環(huán)境根據(jù)不同的存儲(chǔ)物品要求,遠(yuǎn)程設(shè)置環(huán)境溫度閾值,終端設(shè)備根據(jù)目標(biāo)溫度閾值和當(dāng)前實(shí)際溫度,控制風(fēng)扇等設(shè)備工作,使環(huán)境溫度達(dá)到目標(biāo)值。在實(shí)驗(yàn)一創(chuàng)建的數(shù)據(jù)格式為OneJson的設(shè)備下,進(jìn)行設(shè)備調(diào)試設(shè)置屬性參數(shù),并采用MQTT.fx軟件接收云平臺(tái)下發(fā)的屬性設(shè)置命令。屬性設(shè)置屬性上報(bào)一、建立連接

(1)打開(kāi)MQTT.fx客戶端,進(jìn)入客戶端配置頁(yè)面。

(2)設(shè)置參數(shù)如下:

接入地址:。

端口:8883。

ClientID:填寫設(shè)備名稱。

Username:填寫產(chǎn)品ID。

Password:填寫計(jì)算得到的token。

SSL/TLS選項(xiàng)卡:在該選項(xiàng)卡內(nèi)進(jìn)行加密設(shè)置。勾選EnableSSL/TLS,Protocol選擇TLSv1.2,選擇CAcertificatefile選項(xiàng),導(dǎo)入證書。

(3)設(shè)置完畢,單擊OK按鈕。

(4)在MQTT.fx客戶端首頁(yè)中,選擇localmosquitto,單擊Connect按鈕進(jìn)行連接。在連接后,確認(rèn)設(shè)備的在線狀態(tài)。

(5)在OneNET平臺(tái)“設(shè)備管理”頁(yè)面中,會(huì)顯示設(shè)備在線狀態(tài)。

屬性設(shè)置二、查詢物模型topic在“設(shè)備開(kāi)發(fā)”頁(yè)面,單擊“Topic管理”,再單擊“物模型topic”,其中,與直連設(shè)備屬性設(shè)置相關(guān)的topic。屬性設(shè)置三、訂閱主題在成功連接后,打開(kāi)MQTT.fx端首頁(yè),單擊上面的Subscribe按鈕,訂閱如下主題:$sys/{pid}/{device-name}/thing/property/set當(dāng)云平臺(tái)下發(fā)修改直連設(shè)備屬性的消息后,MQTT.fx軟件可以收到對(duì)應(yīng)的響應(yīng)消息。屬性設(shè)置四、下發(fā)屬性設(shè)置命令

在“應(yīng)用模擬器”——“屬性設(shè)置”頁(yè)面中,勾選功能點(diǎn)“濕度”,并填寫屬性值,單擊屬性設(shè)置。

在MQTT.fx軟件中,可以看到已經(jīng)接收到云平臺(tái)發(fā)送的消息。參數(shù)為{“temp”:30},表示屬性名稱為temp,具體屬性值設(shè)置為30。屬性設(shè)置五、發(fā)布“屬性設(shè)置響應(yīng)”

當(dāng)收到來(lái)自云平臺(tái)的屬性設(shè)置命令后,在MQTT.fx客戶端首頁(yè)單擊Publish按鈕,輸入$sys/{pid}/{device-name}/thing/property/set_reply,輸入OneJson請(qǐng)求數(shù)據(jù),并單擊輸入框后面的Publish按鈕。

{"id":"2","code":200,

"msg":“success”}PART0303

第三部分

事件上報(bào)【實(shí)驗(yàn)?zāi)康摹?/p>

(1)掌握MQTT協(xié)議事件上報(bào)的流程和作用。

(2)掌握整個(gè)流程中各類信息的解讀。

【實(shí)驗(yàn)設(shè)備】

(1)一臺(tái)PC,可連接Internet。

(2)MQTT.fx軟件。

【實(shí)驗(yàn)要求】

物模型基本功能有一類是事件,這類功能是指當(dāng)設(shè)備運(yùn)行過(guò)程中,觸發(fā)設(shè)定條件后,產(chǎn)生上行消息。如設(shè)備運(yùn)行過(guò)程中,溫度超過(guò)預(yù)設(shè)值,認(rèn)為設(shè)備異常,此時(shí)發(fā)出的告警、故障信息等就是事件。事件可包含多個(gè)輸出參數(shù)。

在實(shí)驗(yàn)一創(chuàng)建的數(shù)據(jù)格式為OneJson的設(shè)備下,查找自定義名稱為“高溫預(yù)警”的事件功能點(diǎn),采用MQTT.fx軟件實(shí)現(xiàn)設(shè)備事件上報(bào)。事件上報(bào)一、建立連接

(1)打開(kāi)MQTT.fx客戶端,進(jìn)入客戶端配置頁(yè)面。

(2)設(shè)置參數(shù)如下:

接入地址:。

端口:8883。

ClientID:填寫設(shè)備名稱。

Username:填寫產(chǎn)品ID。

Password:填寫計(jì)算得到的token。

SSL/TLS選項(xiàng)卡:在該選項(xiàng)卡內(nèi)進(jìn)行加密設(shè)置。勾選EnableSSL/TLS,Protocol選擇TLSv1.2,選擇CAcertificatefile選項(xiàng),導(dǎo)入證書。

(3)設(shè)置完畢,單擊OK按鈕。

(4)在MQTT.fx客戶端首頁(yè)中,選擇localmosquitto,單擊Connect按鈕進(jìn)行連接。在連接后,確認(rèn)設(shè)備的在線狀態(tài)。

(5)在OneNET平臺(tái)“設(shè)備管理”頁(yè)面中,會(huì)顯示設(shè)備在線狀態(tài)。

事件上報(bào)事件上報(bào)二、查詢物模型topic在“設(shè)備開(kāi)發(fā)”頁(yè)面,單擊“Topic管理”,再單擊“物模型topic”,查看Topic權(quán)限和用途等信息。其中,與直連設(shè)備上報(bào)事件相關(guān)的topic。事件上報(bào)三、訂閱主題在成功連接后,打開(kāi)MQTT.fx端首頁(yè),單擊上面的Subscribe按鈕,訂閱如下主題:

$sys/{pid}/{device-name}/thing/event/post/reply當(dāng)直連設(shè)備上報(bào)事件后,MQTT.fx軟件可以收到對(duì)應(yīng)的響應(yīng)消息。事件上報(bào)四、事件上報(bào)在MQTT.fx客戶端首頁(yè)單擊Publish按鈕,輸入$sys/{pid}/{device-name}/thing/event/post,輸入OneJson請(qǐng)求數(shù)據(jù),并單擊輸入框后面的Publish按鈕。

事件上報(bào)具體請(qǐng)求參數(shù)說(shuō)明如表所示。事件上報(bào)五、結(jié)果查詢

打開(kāi)OneNET平臺(tái),單擊“設(shè)備管理”,進(jìn)入“事件記錄”頁(yè)面,可以看到功能名稱為“高溫預(yù)警”功能點(diǎn)新增了一條告警事件,輸出參數(shù)為{“Temperature”:82}。

打開(kāi)MQTT.fx端首頁(yè),單擊上面的Subscribe按鈕,可以看到事件上傳的響應(yīng)結(jié)果PART0404

第四部分

服務(wù)調(diào)用【實(shí)驗(yàn)?zāi)康摹?/p>

(1)掌握MQTT協(xié)議服務(wù)調(diào)用的流程和作用。

(2)掌握整個(gè)流程中各類信息的解讀。

【實(shí)驗(yàn)設(shè)備】

(1)一臺(tái)PC,可連接Internet。

(2)MQTT.fx軟件。

【實(shí)驗(yàn)要求】

物模型基本功能有一類是服務(wù),這類功能是指終端設(shè)備被外部調(diào)用的能力,可設(shè)置輸入?yún)?shù)和輸出參數(shù)。在實(shí)驗(yàn)一創(chuàng)建的數(shù)據(jù)格式為OneJson的設(shè)備下,查找功能名稱為“風(fēng)扇控制”的服務(wù)功能點(diǎn),采用MQTT.fx軟件實(shí)現(xiàn)服務(wù)調(diào)用。服務(wù)調(diào)用/doc/v5/fuse/detail/903一、建立連接

(1)打開(kāi)MQTT.fx客戶端,進(jìn)入客戶端配置頁(yè)面。

(2)設(shè)置參數(shù)如下:

接入地址:。

端口:8883。

ClientID:填寫設(shè)備名稱。

Username:填寫產(chǎn)品ID。

Password:填寫計(jì)算得到的token。

SSL/TLS選項(xiàng)卡:在該選項(xiàng)卡內(nèi)進(jìn)行加密設(shè)置。勾選EnableSSL/TLS,Protocol選擇TLSv1.2,選擇CAcertificatefile選項(xiàng),導(dǎo)入證書。

(3)設(shè)置完畢,單擊OK按鈕。

(4)在MQTT.fx客戶端首頁(yè)中,選擇localmosquitto,單擊Connect按鈕進(jìn)行連接。在連接后,確認(rèn)設(shè)備的在線狀態(tài)。

(5)在OneNET平臺(tái)“設(shè)備管理”頁(yè)面中,會(huì)顯示設(shè)備在線狀態(tài)。

服務(wù)調(diào)用服務(wù)調(diào)用二、查詢物模型topic在“設(shè)備開(kāi)發(fā)”頁(yè)面,單擊“Topic管理”,再單擊“物模型topic”,查看Topic權(quán)限和用途等信息。其中,與平臺(tái)調(diào)用直連設(shè)備服務(wù)相關(guān)的topic。

其中{pid}用產(chǎn)品ID替換,{device-name}用設(shè)備名稱替換,{identifier}用功能點(diǎn)唯一標(biāo)識(shí)符替換。

服務(wù)調(diào)用二、查詢物模型topic其中{pid}用產(chǎn)品ID替換,{device-name}用設(shè)備名稱替換,{identifier}用功能點(diǎn)唯一標(biāo)識(shí)符替換。

服務(wù)調(diào)用三、訂閱主題

在成功連接后,打開(kāi)MQTT.fx端首頁(yè),單擊上面的Subscribe按鈕,訂閱如下主題:

$sys/{pid}/{device-name}/thing/service/{identifier}/invoke當(dāng)平臺(tái)調(diào)用直連設(shè)備的服務(wù)后,MQTT.fx軟件可以收到對(duì)應(yīng)的響應(yīng)消息。

四、服務(wù)調(diào)用

在“應(yīng)用模擬器”——“服務(wù)調(diào)用”頁(yè)面中,選擇任務(wù)一新建的服務(wù),并填寫輸入?yún)?shù),此處調(diào)用“風(fēng)扇控制”,發(fā)送開(kāi)關(guān)指令1,單擊“服務(wù)調(diào)用”。服務(wù)調(diào)用五、結(jié)果查詢

在MQTT.fx軟件中,可以查看到如圖所示的結(jié)果,表明軟件模擬的終端設(shè)備已經(jīng)接收到了云平臺(tái)下發(fā)的服務(wù)指令,開(kāi)關(guān)參數(shù)SW,參數(shù)的具體值為1。

服務(wù)調(diào)用OneNET平臺(tái),單擊“服務(wù)記錄”標(biāo)簽,可以查看此時(shí)該設(shè)備下已經(jīng)新增了一條“風(fēng)扇控制”的服務(wù)記錄。如果沒(méi)有設(shè)備訂閱該主題,“服務(wù)記錄”內(nèi)可以查看到示的錯(cuò)誤信息,錯(cuò)誤代碼為1022,表示訂閱不存在。

六、發(fā)送反饋在MQTT.fx軟件中,輸入如下主題,單擊Publish按鈕:

$sys/{pid}/{device-name}/thing/service/{identifier}/invoke_reply其中{pid}用產(chǎn)品ID替換,{device-name}用設(shè)備名稱替換,{identifier}用功能點(diǎn)唯一標(biāo)識(shí)符替換,在OneNET平臺(tái)可以看到對(duì)應(yīng)的調(diào)試結(jié)果。服務(wù)調(diào)用物聯(lián)網(wǎng)云平臺(tái)開(kāi)發(fā)實(shí)踐(第2版)謝謝您的觀看!Thankyou!基于python的MQTT協(xié)議物聯(lián)網(wǎng)云平臺(tái)開(kāi)發(fā)實(shí)踐(第2版)01屬性上報(bào)目錄CONTENTS02屬性設(shè)置03事件上報(bào)04服務(wù)調(diào)用屬性上報(bào)(Upload-para)PART0101【實(shí)驗(yàn)?zāi)康摹?/p>

(1)掌握使用MQTT協(xié)議基于物模型進(jìn)行屬性上報(bào)的Python移植方法。

(2)掌握Python的常用命令及代碼解讀。

【實(shí)驗(yàn)設(shè)備】

(1)一臺(tái)PC,可連接Internet。

(2)Python軟件、Pycharm編程環(huán)境。

【實(shí)驗(yàn)要求】

在任務(wù)一實(shí)驗(yàn)一創(chuàng)建的數(shù)據(jù)格式為OneJson的設(shè)備下,基于物模型中溫度和濕度兩個(gè)屬性功能點(diǎn),采用Python編程實(shí)現(xiàn)設(shè)備屬性上報(bào)。

屬性上報(bào)屬性上報(bào)二、屬性上報(bào)

1.選擇topic屬性上報(bào)需要找到對(duì)應(yīng)的系統(tǒng)topic,在模擬器進(jìn)行調(diào)試的過(guò)程中,已經(jīng)查閱過(guò)相關(guān)topic,發(fā)布數(shù)據(jù)采用如下topic:

$sys/{pid}/{device-name}/thing/property/post

2.構(gòu)建上報(bào)的屬性數(shù)據(jù)流

屬性上報(bào)的采用JSON數(shù)據(jù)流格式,以上報(bào)屬性值num至功能點(diǎn)temp、上報(bào)屬性值num1至功能點(diǎn)Hum

為例,構(gòu)建如下數(shù)據(jù)流:一、建立連接

按照上述步驟,建立客戶端與服務(wù)器的連接,并通過(guò)回調(diào)函數(shù)打印連接結(jié)果。{"id":"124","version":"1.0","params":{"temp":{"value":25.5},"Hum":{"value":60}}}屬性上報(bào)3.屬性上報(bào)

調(diào)用如下函數(shù),實(shí)現(xiàn)屬性上報(bào):publish(topic,payload,qos,retain)該函數(shù)包含4個(gè)參數(shù),需要重點(diǎn)設(shè)置前3項(xiàng)參數(shù)。

topic:表示發(fā)布信息的主題。

payload:表示要發(fā)布的具體信息。

qos:表示服務(wù)質(zhì)量,分別為0、1、2三種級(jí)別。

示例代碼如下:

client.publish(pub_topic,json.dumps(body),qos=0)屬性上報(bào)import…

#定義token計(jì)算函數(shù)

deftoken(product_id,access_key,auth_info=None)…

#定義回調(diào)函數(shù)

defon_connect(client,userdata,flags,reason_code,properties):

print(f"Connected!Result:{mqtt.connack_string(reason_code)}(Code:{reason_code})")

if__name__=='__main__':

host='6'

port=8883

access_key=‘xxxxx'#devicekey

auth_info=‘xxxxxxxx'#client_id

product_id=‘xxxxxxxx'#username

#計(jì)算token

api_token=token(product_id,access_key,auth_info)

print(api_token)

#client=mqtt.Client(client_id=auth_info,protocol=mqtt.MQTTv311)

client=mqtt.Client(

client_id=auth_info,

protocol=mqtt.MQTTv311,

callback_api_version=mqtt.CallbackAPIVersion.VERSION2

)

client.on_connect=on_connect

client.tls_set(ca_certs='serverCert.pem',cert_reqs=CERT_REQUIRED)

client.tls_insecure_set(True)

client.username_pw_set(username=product_id,password=api_token)

client.connect(host=host,port=port,keepalive=30)

client.loop_start()whileTrue:

num=22

num1=56

body={

"id":"124",

"version":"1.0",

"params":{

"temperature":{

"value":num

},

"humidity":{

"value":num1

}

}

}

pub_topic='$sys/%s/%s/thing/property/post'%(product_id,auth_info)

print(pub_topic)

print('fp:temperature->%s'%num)

print('fp:humidity->%s'%num1)

client.publish(pub_topic,json.dumps(body),qos=0)

time.sleep(5)onejson—屬性上報(bào)import…

#定義token計(jì)算函數(shù)

deftoken(product_id,access_key,auth_info=None):

defon_connect(client,userdata,flags,reason_code,properties):

print(mqtt.connack_string(reason_code)+'rc:%s'%reason_code)

if__name__=='__main__':

host='6'

port=8883

access_key=‘xxxx'#devicekey

auth_info=‘xxxx'#設(shè)備名稱

product_id=‘xxxx'#產(chǎn)品id

#計(jì)算token

api_token=token(product_id,access_key,auth_info)

print(api_token)

client=mqtt.Client(

client_id=auth_info,

protocol=mqtt.MQTTv311,

callback_api_version=mqtt.CallbackAPIVersion.VERSION2

)

client.on_connect=on_connect

client.on_message=on_message

client.tls_set(ca_certs='serverCert.pem',cert_reqs=CERT_REQUIRED)

client.tls_insecure_set(True)

client.username_pw_set(username=product_id,password=api_token)

client.connect(host=host,port=port,keepalive=30)

client.loop_start()whileTrue:

time.sleep(1)

num=20

body={

"id":123,

"dp":{

"temperature":[{

"v":num,

}]

}

}

pub_topic='$sys/%s/%s/dp/post/json'%(product_id,auth_info)

print(pub_topic)

print('dp:temperature->%s'%num)

client.publish(pub_topic,json.dumps(body),qos=0)

time.sleep(30)

body={

"id":"124",

"version":"1.0",

"params":{

"temperature":{

"value":num

},

"humidity":{

"value":num1

}

}

}數(shù)據(jù)流--發(fā)布信息pub_topic='$sys/%s/%s/thing/property/post'%(product_id,auth_info)第一條信息表示token,第二條信息表示發(fā)布數(shù)據(jù)的系統(tǒng)topic,第三、四條信息表示功能點(diǎn)標(biāo)識(shí)符和屬性值,第五條信息表示連接成功。進(jìn)入OneNET平臺(tái),在“設(shè)備接入管理”頁(yè)面中,選擇設(shè)備管理,并單擊該設(shè)備對(duì)應(yīng)的“屬性”,即可看到上報(bào)的屬性。

屬性上報(bào)res=products/O1wlcBxQXO/devices/HT&sign=bv5pA9xhmwmz9kUgpnKyFpgIsBY%3D&et=1712736146&method=sha1&version=2018-10-31$sys/O1wlcBxQXO/HT/thing/property/postfp:temp->22fp:Hum->56ConnectionAccepted.rc:0屬性設(shè)置get_setget_settingPART0202【實(shí)驗(yàn)?zāi)康摹?/p>

(1)掌握使用MQTT協(xié)議基于物模型接收云平臺(tái)屬性設(shè)置的Python移植方法。

(2)掌握Python的常用命令及代碼解讀。

【實(shí)驗(yàn)設(shè)備】

(1)一臺(tái)PC,可連接Internet。

(2)Python軟件、Pycharm編程環(huán)境。

【實(shí)驗(yàn)要求】

在任務(wù)一實(shí)驗(yàn)一創(chuàng)建的數(shù)據(jù)格式為OneJson的設(shè)備下,采用Python編程接收云平臺(tái)對(duì)物模型中“溫度”功能點(diǎn)的屬性設(shè)置指令,并打印“TemperatureSetting:”和接收到的設(shè)置值;當(dāng)收到的“濕度”功能點(diǎn)的屬性設(shè)置指令,打印“HumiditySetting:”和接收到的設(shè)置值;當(dāng)收到其他信息,打印“Error”。

屬性設(shè)置一、建立連接

按照上述步驟,建立客戶端與服務(wù)器的連接,并通過(guò)回調(diào)函數(shù)打印連接結(jié)果。

二、查詢物模型topic在“設(shè)備開(kāi)發(fā)”頁(yè)面,單擊“Topic管理”,再單擊“物模型topic”,其中,與直連設(shè)備屬性設(shè)置相關(guān)的topic。

三、訂閱主題

1.選擇topic為了能在底層程序端接收云平臺(tái)屬性設(shè)置的指令,可訂閱如下topic:

$sys/{pid}/{device-name}/thing/property/set

上述topic表示接收系統(tǒng)“屬性設(shè)置”指令。

2.訂閱topic

調(diào)用如下函數(shù),實(shí)現(xiàn)訂閱主題:

subscribe(topic,qos)該函數(shù)包含兩個(gè)參數(shù),如下所述。

topic:表示訂閱的主題。

qos:表示服務(wù)質(zhì)量,分別為0、1、2三種級(jí)別。

示例代碼如下:

client.subscribe('$sys/%s/%s/thing/property/set'%(product_id,auth_info),qos=0)屬性設(shè)置四、定義消息回調(diào)函數(shù)

在收到客戶端訂閱主題的消息后,通常會(huì)調(diào)用on_message()函數(shù)來(lái)打印接收到的反饋信息。

client.on_message=on_message

在調(diào)用前,會(huì)對(duì)該函數(shù)的具體執(zhí)行內(nèi)容進(jìn)行定義,部分代碼如下:defon_message(client,userdata,msg):print('ON_MESSAGE:'+msg.topic+"",msg.payload)

上述代碼表示接收到訂閱主題推送的消息后,打印消息的主題和內(nèi)容。屬性設(shè)置get_setif__name__=='__main__':

host='6'

port=8883

access_key='xxxxxx'#devicekey

auth_info=‘xxxxx'#client_id

product_id='xxxxx'#username

#計(jì)算token

api_token=token(product_id,access_key,auth_info)

print(api_token)

#client=mqtt.Client(client_id=auth_info,protocol=mqtt.MQTTv311)

client=mqtt.Client(

client_id=auth_info,

protocol=mqtt.MQTTv311,

callback_api_version=mqtt.CallbackAPIVersion.VERSION2

)

client.on_connect=on_connect

client.on_message=on_message

client.tls_set(ca_certs='serverCert.pem',cert_reqs=CERT_REQUIRED)

client.tls_insecure_set(True)

client.username_pw_set(username=product_id,password=api_token)

client.connect(host=host,port=port,keepalive=30)

client.loop_start()

whileTrue:

time.sleep(1)import…

#定義token計(jì)算函數(shù)

deftoken(product_id,access_key,auth_info=None)…#定義回調(diào)函數(shù)

defon_connect(client,userdata,flags,reason_code,properties):…defon_message(client,userdata,msg):

print('ON_MESSAGE:'+msg.topic+"",msg.payload)

if'$sys/%s/%s/thing/property/set'%(product_id,auth_info)inmsg.topic:

msg1=str(msg.payload)

msg2=json.loads(msg1[2:-1])

params=msg2.get("params")

key=list(params.keys())

value=params.get(key[0])

ifkey[0]=="temperature":

print("temperatureSetting:",value)

elifkey[0]=="humidity":

print("humiditySetting:",value)

else:

print("Error")

time.sleep(5)

運(yùn)行上述代碼,從OneNET云平臺(tái)應(yīng)用模擬器中選取功能點(diǎn)“溫度”,屬性設(shè)置值設(shè)為30,單擊屬性設(shè)置,得到如下運(yùn)行結(jié)果:

第一條信息表示token,第二條信息表示連接成功,第三條信息表示收到的平臺(tái)下發(fā)的內(nèi)容,具體包括topic和具體平臺(tái)下發(fā)的內(nèi)容,表示屬性名稱為temp、具體的屬性設(shè)置值為30,第四條表示屬性設(shè)置響應(yīng)的topic,第五條是屬性設(shè)置的響應(yīng)消息,第六條表示根據(jù)接收到的屬性設(shè)置值,軟件端按照功能要求執(zhí)行的操作具體內(nèi)容,此處可以根據(jù)打開(kāi)燈、打開(kāi)風(fēng)扇等具體功能要求進(jìn)行個(gè)性化定義。

屬性設(shè)置get_setting運(yùn)行結(jié)果res=products/O1wlcBxQXO/devices/HT&sign=MD2adLGB102WbLLY11fO%2BKkeXw0%3D&et=1713002009&method=sha1&version=2018-10-31ConnectionAccepted.rc:0ON_MESSAGE:$sys/O1wlcBxQXO/HT/thing/property/setb'{"id":"1","version":"1.0","params":{"temp":30}}'TemperatureSetting:30從OneNET云平臺(tái)應(yīng)用模擬器中選取功能點(diǎn)“濕度”,屬性設(shè)置值設(shè)為25,單擊屬性設(shè)置,得到如下運(yùn)行結(jié)果:

第一條信息表示收到的平臺(tái)下發(fā)的內(nèi)容,具體包括topic和具體平臺(tái)下發(fā)的內(nèi)容,表示屬性名稱為Hum、具體的屬性設(shè)置值為25,第二條表示屬性設(shè)置響應(yīng)的topic,第三條表示屬性設(shè)置的響應(yīng)消息,第四條表示根據(jù)接收到的屬性設(shè)置值,軟件端按照功能要求執(zhí)行的操作具體內(nèi)容,此處可以根據(jù)打開(kāi)燈、打開(kāi)風(fēng)扇等具體功能要求進(jìn)行個(gè)性化定義。屬性設(shè)置get_setting運(yùn)行結(jié)果ON_MESSAGE:$sys/O1wlcBxQXO/HT/thing/property/setb'{"id":"2","version":"1.0","params":{"Hum":25}}'HumiditySetting:25事件上報(bào)upload_thPART0303【實(shí)驗(yàn)?zāi)康摹?/p>

(1)掌握使用MQTT協(xié)議基于物模型進(jìn)行事件上報(bào)的Python移植方法。

(2)掌握Python的常用命令及代碼解讀。

【實(shí)驗(yàn)設(shè)備】

(1)一臺(tái)PC,可連接Internet。

(2)Python軟件、Pycharm編程環(huán)境。

【實(shí)驗(yàn)要求】

在任務(wù)一實(shí)驗(yàn)一創(chuàng)建的數(shù)據(jù)格式為OneJson的設(shè)備下,進(jìn)行高溫事件的上報(bào)。

事件上報(bào)一、建立連接

按照上述步驟,建立客戶端與服務(wù)器的連接,并通過(guò)回調(diào)函數(shù)打印連接結(jié)果。

事件上報(bào)二、事件上報(bào)

1.選擇topic

事件上報(bào)需要找到對(duì)應(yīng)的系統(tǒng)topic,在模擬器進(jìn)行調(diào)試的過(guò)程中,已經(jīng)查閱過(guò)相關(guān)topic,發(fā)布數(shù)據(jù)采用如下topic:

$sys/{pid}/{device-name}/thing/event/post2.構(gòu)建上報(bào)的事件數(shù)據(jù)流

事件上報(bào)的采用JSON數(shù)據(jù)流格式,以上報(bào)高溫事件為例,按照上傳事件至功能點(diǎn)“heat”,參數(shù)“Temperature”的值為90,構(gòu)建如下數(shù)據(jù)流:

事件上報(bào)3.事件上報(bào)

調(diào)用如下函數(shù),實(shí)現(xiàn)屬性上報(bào):

4.訂閱反饋

訂閱上報(bào)事件響應(yīng)主題,當(dāng)云平臺(tái)收到上報(bào)的事件后,向客戶端發(fā)送反饋,客戶端訂閱相關(guān)主題后,可以收到反饋信息。示例代碼如下:

client.subscribe('$sys/%s/%s/thing/event/post/reply'%(product_id,auth_info),qos=0)publish(topic,payload,qos,retain)import…

#定義token計(jì)算函數(shù)

deftoken(product_id,access_key,auth_info=None)…

#定義回調(diào)函數(shù)

defon_connect(client,userdata,flags,rc):

#打印連接狀態(tài)

print(mqtt.connack_string(rc)+'rc:%s'%rc)

ifrc==0:

client.subscribe('$sys/%s/%s/thing/event/post/reply'%(product_id,auth_info),qos=0)

defon_message(client,userdata,msg):

print('ON_MESSAGE:'+msg.topic+"",msg.payload)

if__name__=='__main__':

host='6'

port=8883

access_key='RFFOamJDYTY2eEYwWWRyejY5R1ZFTU5YQWVwY01jUDI='#devicekey

auth_info='HT'#client_id

product_id='O1wlcBxQXO'#username

#計(jì)算token

api_token=token(product_id,access_key,auth_info)

print(api_token)

client=mqtt.Client(client_id=auth_info,protocol=mqtt.MQTTv311)

client.on_connect=on_connect

client.on_message=on_message

client.tls_set(ca_certs='serverCert.pem',cert_reqs=CERT_REQUIRED)

client.tls_insecure_set(True)

client.username_pw_set(username=product_id,password=api_token)

client.connect(host=host,port=port,keepalive=30)

client.loop_start()

whileTrue:

body={

"id":"123",

"params":{

"heat":{

"value":{

“temperature":90

}

}

}

}

pub_topic='$sys/%s/%s/thing/event/post'%(product_id,auth_info)

print(pub_topic)

print('Heat:alarm')

client.publish(pub_topic,json.dumps(body),qos=0)

time.sleep(50)運(yùn)行上述代碼,得到如下運(yùn)行結(jié)果:第一條信息表示token,第二條信息表示上報(bào)事件的系統(tǒng)topic,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論