摘要:該場景主要描述的是設備可以通過MQTT協議與物聯網平台進行交互,用戶可以在控制台產品詳情中自定義Topic,通過應用側接口或控制台創建數據轉發規則,把設備上報的消息轉發給其他華為雲服務,供應用側用戶主動去消費。
場景簡介
已對接存量設備的網關,不用遷移就可以實現對既有設備和新設備的兼容控制。
該場景主要描述的是設備可以通過MQTT協議與物聯網平台進行交互,用戶可以在控制台產品詳情中自定義Topic,通過應用側接口或控制台創建數據轉發規則,把設備上報的消息轉發給其他華為雲服務,供應用側用戶主動去消費。
核心知識點:產品模型、消息上報、消息下發、MQTT協議、數據轉發規則、自定義Topic。
場景流程
流程解釋:
1.創建網關產品:物聯網平台是以產品為粒度管理批量設備,產品的創建與管理,可以通過平台提供的API接口或控制台
2.自定義topic:您可以在產品詳情中自定義topic,該產品下的所有設備都將可以通過自定義topic,與平台間進行數據上下行交互。
3.注冊網關設備:平台提供了應用側API接口可以之策設備,也可以通過控制台注冊。注冊的設備ID,是設備側與平台交互的唯一標識。這里是用手機APP進行應用側接口調用注冊,就如前面概念串聯時提到的,應用側不局限於web服務端。
4.創建數據轉發規則:網關APP可以通過API接口創建規則,也可以通過控制台創建,指定過濾指定的屬性,給指定的通道轉發數據。
5.開通DIS通道/OBS服務:華為公有雲上有豐富的SaaS服務和PaaS服務,供您結合自己的業務需要進行組合使用。DIS服務提供高效采集、傳輸、分發能力,支持多種IoT協議,OBS服務提供海量、安全、高可靠、低成本的數據存儲能力,可以開通該兩個服務(或之一),通過IoTDA規則引擎,把網關的數據轉發給DIS/OBS。
6.設備建鏈:MQTT設備是指通過MQTT協議接入的設備,不論是集成了華為IoT Device SDK,還是原生MQTT協議接入,只要是json數據格式傳輸給平台,平台就無需使用編解碼插件。如果是二進制上傳,則需要先做編解碼插件的開發。MQTT是長連接,需要先建鏈才能進行數據傳輸,可以通過安全加密方式8883端口接入(推薦),也可以通過非安全加密方式1883端口接入。
7.訂閱消息下發Topic:MQTT設備與平台建立長連接后,可以訂閱平台下行的topic,實現對平台下發消息的實時監聽。
8.網關消息上報:網關設備把數據透傳到平台,由平台不做任何處理按規則轉發給DIS/OBS等存儲通道。消息跟屬性的主要區別是不用指定產品模型,平台對上報的消息不做處理(包括存儲和快照都沒有),僅做純數據轉發。
9.按規則數據轉發:平台收到設備上報的屬性后,規則引擎會進行過濾(不論屬性還是消息,平台都會做規則過濾),把設定好的消息值轉發到指定的DIS通道,放到消息隊列中。或者轉發到OBS做對象存儲。
10.消費消息數據:由於平台對消息僅做透傳,而且APP無法配置訂閱通知的callback url,所以將設備上報的數據通過消息轉儲到DIS/OBS,再由APP調用DIS/OBS的接口或集成SDK,消費設備數據,進而實現對網關設備上報消息的接收。
11.消息下發:網關APP通過應用側接口下發消息,平台同樣不會做任何的處理,消息下發是異步的,不用等到設備側網關的響應。
12.消息下發:平台通過消息下發的下行topic把消息透傳給網關。這個需要前面網關設備訂閱了消息下發的topic,否則接收不到平台下行消息。
最佳實踐
場景說明
自定義Topic功能用於MQTT協議設備接入物聯網平台的場景,支持設備消息上報、平台消息下發的Topic進行自定義。根據Topic不同,應用側可實現不同的業務邏輯處理,也適用於應用側和設備側之間,設備無法按照產品模型中定義的屬性或命令進行數據上報的場景。
本示例中,應用服務器收到設備上報Topic為室內溫度的數據,判斷是否開啟或關閉室內空調。
新增自定義Topic
具體操作細節請參考新增自定義Topic。
1、在產品詳情頁中,選擇“可選配置”頁簽,點擊“新增自定義topic”按鈕。
2、在彈出的頁面中,選擇設備操作權限,填寫topic名稱。
3、點擊“確認”,完成新增自定義topic。
自定義Topic添加成功后,您可以在自定義topic列表執行修改和刪除操作。
MQTT設備消息上報
1、登錄控制台,進入指定設備詳情頁,啟動消息跟蹤。
2、以MQTT.fx模擬器(請參考設備快速接入)為例,模擬設備上報自定義Topic消息。
使用IoT Device SDK或原生MQTT協議接入的設備,需要在設備程序中,設置設備上報的自定義Topic名稱。
3、登錄控制台,在設備詳情消息跟蹤頁面,查看設備上報的自定義Topic消息。
4、應用側通過數據轉發的方式,獲取MQTT設備上報的自定義Topic消息。更多數據轉發方式,請參考數據轉發。您也可以參考最佳實踐案例數據轉發到OBS長期存儲。
MQTT設備消息下發
應用側收到MQTT設備上報的自定義Topic消息后,需要進行相應的業務處理。本示例通過自定義Topic,下發開啟室內空調指令。
MQTT設備需要先訂閱自定義Topic,才可以接收應用側下發的自定義Topic消息。
- 確保創建自定義Topic時,設備操作權限包含“訂閱”功能,詳細操作請參考設備操作權限。
- 使用IoT Device SDK或者原生MQTT協議接入的設備,需要在設備程序中,設置設備訂閱的自定義Topic名稱。
1、本文使用postman工具模擬應用側調用下發設備消息接口,下發開啟室內空調的命令。
2、調用查詢設備消息接口,查看下發命令是否成功。
至此,通過該文檔的學習,您應該對智能網關和自定義Topic場景有了一定的了解。接下來,可以在系列后續文章中,可以學習到更多的物聯網業務場景。