玩轉華為物聯網IoTDA服務系列三-自動售貨機銷售分析場景示例
- 2020 年 6 月 11 日
- 筆記
場景簡介
通過收集自動售貨機系統的銷售數據,EI數據分析售貨銷量狀況。
該場景主要描述的是設備可以通過MQTT協議與物聯網平台進行交互,應用側可以到物聯網平台訂閱設備側變化的通知,用戶可以在控制台或通過應用側介面創建數據轉發規則,把設備上報的屬性轉發給其他華為雲服務。
核心知識點:產品模型、編輯碼插件、訂閱推送、屬性上報、MQTT協議、數據轉發規則。
場景流程

流程解釋:
-
2、上傳產品模型:產品模型是定義一種設備的基本屬性和命令。產品模型可以通過控制台,也可以導入公共產品庫的模型。該場景沒有編解碼插件,是因為設備是基於Android作業系統開發的,能夠通過MQTT協議與平台進行交互。
-
3、批量註冊自動售貨機設備:平台提供了應用側API介面可以註冊設備,也可以通過控制台批量註冊。註冊設備時獲取的設備ID,是設備側與平台交互的唯一標識。
-
4、創建自動售貨機設備狀態變化的訂閱:售貨管理系統可以在平台創建設備變化的通知訂閱,需要把callback url即應用回調地址傳給平台,平台後續會推送通知到該url。
-
5、設備建鏈:MQTT設備是指通過MQTT協議,不論是集成了華為IoT Device SDK,還是原生MQTT協議接入,只要是json數據格式傳輸給平台,平台就無需使用編解碼插件。如果是二進位上傳,則需要先做編解碼插件的開發。MQTT是長連接,需要先建鏈才能進行數據傳輸,可以通過安全加密方式8883埠接入(推薦),也可以通過非安全加密方式1883埠接入。
-
6、推送自動售貨機設備激活通知:平台會根據之前應用訂閱的回調地址,把自動售貨機設備上線的通知類型通過HTTP/HTTPS推送回去。
-
7、創建數據轉發規則:售貨管理系統可以通過API介面創建規則,也可以通過控制台創建,指定過濾指定的屬性,給指定的通道轉發數據。
-
8、開通DIS通道/MRS服務:華為公有雲上有豐富的SaaS服務和PaaS服務,供您結合自己的業務需要進行組合使用。DIS服務提供高效採集、傳輸、分發能力,支援多種IoT協議,可以開通該服務,通過IoTDA規則引擎,把自動售貨機設備的數據轉發給DIS,然後再利用諸如MRS服務,實現自動售貨銷量狀況數據分析。
-
9、自動售貨機屬性上報:設備側可以通過SDK或MQTT原生協議接入平台,屬性上報銷售資訊。這裡值得注意的是,設備側上報的數據,是通過屬性上報,與消息上報最大的區別在於是否經過產品模型。屬性上報的內容與格式都要跟產品模型定義保持一致。具體概念介紹可以參閱「物模型」。
-
10、按規則數據轉發:平台收到設備上報的屬性後,規則引擎會進行過濾(不論屬性還是消息,平台都會做規則過濾),把設定好的屬性值轉發到指定的DIS通道,然後再通過DIS的介面,由MRS去消費DIS的數據,實現對銷量的分析。
最佳實踐
場景說明
物聯網解決方案中,作為數據主體的「物」可能數量會非常大,產生的數據已經無法通過傳統的數據處理服務進行處理。如何分析與利用這龐大的物聯網設備數據對物聯網企業來說又是一個新的挑戰。
華為雲物聯網平台提供規則引擎能力,支援將數據上報的數據轉發至華為雲其他雲服務,可實現將海量數據通過數據接入服務(DIS)轉發至MapReduce服務(MRS),對數據進行處理後再由數據可視化服務(DLV)讀取數據呈現為可視化報表,實現數據的一站式採集、處理和分析。

在本示例中,我們實現下述場景:
自動售貨機每次銷售商品後上報銷售商品種類、數量、時間和所屬區域到物聯網平台,物聯網平台將數據通過數據接入服務轉發至MapReduce服務,MapReduce服務處理數據並寫為統計文件,數據可視化服務從統計文件讀取數據展現為四個維度的銷售報表。
創建MapReduce集群
創建集群,用於存儲和處理DIS轉儲的數據。
-
登錄華為雲官方網站,訪問MapReduce服務。
-
單擊「立即購買」,創建集群,以下配置僅為樣例。
註:下圖以新版自定義購買介面為例,需要在「購買集群」介面點擊右上角的「點擊體驗新版」,然後選擇「自定義購買」。

|
參數名稱 |
說明 |
|---|---|
|
軟體配置 |
|
|
當前區域 |
保持默認。 |
|
集群名稱 |
自定義或保持默認。 |
|
集群版本 |
保持默認。 |
|
集群類型 |
分析集群。組件勾選Spark,系統會自動勾選Hive和Tez。「Hive使用外部數據源存儲元數據」保持關閉。 |
|
Kerberos認證 |
關閉。 |
|
用戶名 |
固定為「admin」不可修改。 |
|
密碼 |
自定義。 |
|
確認密碼 |
|
|
硬體配置 |
|
|
計費模式 |
按實際使用需求選擇,本示例中選擇「按需計費」。 |
|
網路配置 |
全部保持默認。 |
|
實例 |
為節省實驗費用,可修改分析Core的實例數量為1,其餘保持默認值。密碼自定義。 |
|
高級配置均保持默認。 |
|
3.集群創建成功後,等待15到30分鐘,集群狀態變更為「運行中」則表示創建成功。
創建OBS桶
-
登錄華為雲官方網站,訪問對象存儲服務。
-
單擊「管理控制台」進入對象存儲服務管理控制台。
-
單擊頁面右上角的「創建桶」,根據需求選擇桶規格後,單擊「立即創建」。

創建數據接入通道和轉儲任務
創建通道並配置轉儲任務,實現將設備管理服務傳入DIS的數據轉發至MRS。
-
登錄華為雲官方網站,訪問數據接入服務。
-
單擊「立即購買」,購買接入通道,以下配置僅為樣例。

|
參數名稱 |
說明 |
|---|---|
|
區域 |
保持默認。 |
|
通道名稱 |
自定義或保持默認。 |
|
通道類型 |
保持默認值「普通」。 |
|
分區數量 |
按需填寫。 |
|
生命周期 |
|
|
源數據類型 |
選擇「JSON」。 |
|
自動擴縮容 |
保持關閉。 |
|
Schema開關 |
|
|
高級配置 |
保持默認。 |
3.通道購買成功後,進入DIS控制台
4.單擊需要查看的通道名稱,進入所選通道的管理頁面,選擇「轉儲管理」頁簽。
5.單擊「添加轉儲任務」按鈕。

6.在彈出的「添加轉儲任務」頁面配置轉儲相關配置項。

|
參數名稱 |
說明 |
|---|---|
|
源數據類型 |
默認為通道源數據類型 |
|
轉儲服務類型 |
選擇「MRS」。 |
|
任務名稱 |
自定義,如「iot_to_mrs」。 |
|
轉儲文件格式 |
選擇「Text」。 |
|
MRS集群 |
選擇已創建成功的MRS集群。 |
|
HDFS路徑 |
選擇轉儲文件要存儲的路徑,建議選擇「/user」。 |
|
轉儲文件目錄 |
自定義轉儲文件存放的文件夾名稱,本示例中為「temp」。 |
|
偏移量 |
選擇「最新」。 |
|
數據轉儲周期 |
本示例中修改為「60」。 |
|
數據臨時桶 |
選擇已創建的OBS桶。 |
|
數據臨時目錄 |
自定義,本示例中為「temp」。 |
7.單擊「立即創建」。
配置設備接入服務
在設備接入服務中創建產品模型、註冊設備並設置數據轉發規則,實現當設備上報數據時將數據轉發至DIS。
-
登錄華為雲官方網站,訪問設備接入服務。
-
單擊「立即使用」進入設備接入控制台。
-
單擊

4.單擊左側導航欄的「產品」,單擊右上角下拉框,選擇新建產品所屬的資源空間。
註:本文中使用的產品模型和設備僅為示例,您可以使用自己的產品模型和設備進行操作。
5.單擊右上角的「創建產品」,創建一個基於MQTT協議的產品,填寫參數後,單擊「確認」。

|
基本資訊 |
|
|
產品名稱 |
自定義,如MQTT_Device |
|
協議類型 |
選擇「MQTT」 |
|
數據格式 |
選擇「JSON」 |
|
廠商名稱 |
自定義 |
|
功能定義 |
|
|
選擇模型 |
請參考步驟6導入模型即可。 |
|
所屬行業 |
根據實際情況進行填寫。 |
|
設備類型 |
|
6.在功能定義頁面,單擊「上傳模型文件」,單擊Profile.zip,獲取產品模型文件樣例。

7.進入

|
參數名稱 |
說明 |
|---|---|
|
所屬產品 |
選擇在步驟5中創建的產品。 |
|
設備標識碼 |
設備唯一物理標識,如IMEI、MAC地址等,用於設備在接入物聯網平台時攜帶該標識資訊完成接入鑒權。
|
|
設備名稱 |
自定義。 |
|
設備認證類型 |
選擇「密鑰」。 |
|
密鑰 |
設備密鑰,可自定義,不填寫物聯網平台會自動生成。 |
填寫完成後單擊「確定」,請注意保存註冊成功返回的「設備ID」和「設備密鑰」。
8.單擊左側導航欄的「規則」,單擊右上角的「創建規則」,選擇「數據轉發」。
9.填寫規則內容,規則名稱自定義,「數據類型」選擇「JSON」,轉發至「數據接入服務(DIS)」,「區域」選擇您開通OBS的區域,「通道」選擇您創建的桶,填寫完成後單擊「創建規則」。

配置數據可視化服務
配置數據可視化服務,新建數據報表視圖。
-
登錄華為雲官方網站,訪問數據可視化服務。
-
單擊「進入控制台」。
註:若您未開通DLV服務,可單擊「體驗試用」獲取30天的基礎版免費試用。
-
訪問DLV控制台「我的大屏」頁面,新建一個大屏。

4.選擇空白模板,輸入大屏名稱後,單擊「創建大屏」。
5.單擊

6.在右側「數據」面板修改靜態數據中「value」的值為「每日銷量」。
7.在大屏內拖動標題到左上角,並拉伸成合適的形狀。

8.單擊

9.拖動圖表到標題下面並拉伸成合適的形狀。

10.重複以上步驟再添加一個標題為「時間段銷量」柱狀圖,一個標題為「種類銷量」的餅狀圖,一個標題為「地區銷量」的區域排行圖,並根據自己的需要設置圖表的樣式。最終效果類似下圖。

11.單擊頁面右上角的返回按鈕退出編輯頁面。
驗證操作
1.首先控制設備上報10條數據。
-
您可以使用配置設備接入服務時註冊的真實設備接入平台,上報數據。
-
您也可以使用模擬器模擬設備上報數據,操作方法請參考通過MQTT.fx體驗設備接入。
上報數據的樣例如下,請自行修改參數的取值模擬真實設備數據:
樣例1
{
"msgType": "deviceReq",
"data": [{
"serviceId": "sales",
"serviceData": {
"category": "soda",
"number": "1",
"area": "SZLH",
"timeStamp": "20190425T091157Z"
}
}]
}
上述樣例表示UTC時間2019年4月25日9點11分57秒深圳羅湖的自動販賣機銷售了一支蘇打飲料。
樣例2
{
"msgType": "deviceReq",
"data": [{
"serviceId": "sales",
"serviceData": {
"category": "juice",
"number": "2",
"area": "SZFT"
"timeStamp": "20190426T170005Z"
}
}]
}
上述樣例表示UTC時間2019年4月26日17點05秒深圳福田的自動販賣機銷售了兩支果汁飲料。
本文以上報下表的數據為例。
|
category |
number |
area |
timeStamp |
|---|---|---|---|
|
soda |
1 |
SZLH |
20190425T091157Z |
|
juice |
1 |
SZFT |
20190425T121511Z |
|
sport |
1 |
SZLH |
20190425T172433Z |
|
juice |
2 |
SZFT |
20190426T170005Z |
|
soda |
1 |
SZNS |
20190426T190905Z |
|
juice |
1 |
SZNS |
20190427T085959Z |
|
juice |
2 |
SZLH |
20190427T111111Z |
|
soda |
3 |
SZFT |
20190428T182215Z |
|
sport |
1 |
SZLH |
20190429T205901Z |
|
soda |
1 |
SZLG |
20190430T225045Z |
2.登錄MRS管理控制台,選擇「集群列表 > 現有集群」,單擊集群名進入集群管理頁面。

3.單擊頁面上方的「文件管理」,再單擊「HDFS文件列表」,進入轉儲文件目錄(例如「temp」)查看是否存在轉儲的數據文件。
註:DIS會將數據合併轉發,所以此處的文件數量和上報的數據條數可能會不一致。

4.單擊頁面上方的「作業管理」,在「作業」頁簽中單擊「添加」,配置作業資訊。本示例中創建一個spark類型的作業,實現分析設備上報數據,分別按日期、時間段、種類、區域統計銷量,將分析結果輸出為CSV文件並保存至OBS。

|
參數名稱 |
說明 |
|---|---|
|
作業類型 |
選擇「SparkSubmit」。 |
|
作業名稱 |
自定義,如「test」。 |
|
執行程式路徑 |
|
|
運行程式參數 |
左側選擇「--class」,右側輸入「com.huawei.bigdata.spark.examples.SalesStatistics」。 |
|
執行程式參數 |
輸入「AK SK inputpath outputpath」。
|
|
服務配置參數 |
無需填寫。 |
配置完成後單擊「確定」啟動作業。
5.作業完成後,可在OBS桶內看到output文件夾,裡面有四個文件夾,每個文件夾內有一個「_SUCCESS」文件和一個「part」開頭的csv文件。
註:本實驗的樣常式序分析數據時會將UTC時間轉換為本地時間,因此數據分析結果中的日期與時間段數值會和上報時的數值不一致。

6.登錄華為雲官方網站,訪問數據可視化服務。
7.單擊「進入控制台」。
8.單擊「我的數據 > 新建數據連接」 ,在「新建數據連接」頁面左側的資料庫類型中,選擇「CSV文件」,按照下表的數據規劃填寫配置後單擊「確定」。重複本步驟建立4個數據連接。

|
參數名 |
說明 |
|---|---|
|
名稱 |
建立4個數據連接,分別命名為:
|
|
Access Key |
填寫華為雲帳號的AK、SK,獲取方法可參考AK和SK的獲取方法。 |
|
Secret Access Key |
|
|
文件來源 |
選擇「OBS文件」。 |
|
文件路徑 |
4個連接分別選擇步驟5的output文件夾內和連接同名的文件夾內的csv文件。 |
9.返回「我的大屏」頁簽,單擊配置數據可視化服務時創建的大屏右下的編輯按鈕進入編輯頁面。
10.選中「每日銷量」表,在右側數據面板選擇數據類型為「CSV文件」,數據連接選擇步驟8添加的數據連接「salesByDate」。
11.根據響應數據的屬性名稱配置欄位映射。
配置 「x」為 「saleDate」, 「y」為 「saleNumber」。

12.選中「時間段銷量」表,在右側數據面板選擇數據類型為「CSV文件」,數據連接選擇步驟8添加的數據連接「salesByTime」。
13.根據響應數據的屬性名稱配置欄位映射。
配置 「x」為 「saleTime」, 「y」為 「saleNumber」。

14.選中「種類銷量」表,在右側數據面板選擇數據類型為「CSV文件」,數據連接選擇步驟8添加的數據連接「salesByCategory」。
15.根據響應數據的屬性名稱配置欄位映射。
配置 「s」為 「category」, 「y」為 「saleNumber」,並設置各個分類的名稱(本示例中為「soda」,「juice」,「sport」)和圖例的顏色。

16.選中「地區銷量」表,在右側數據面板選擇數據類型為「CSV文件」,數據連接選擇步驟8添加的數據連接「salesByArea」。
17.根據響應數據的屬性名稱配置欄位映射。
配置 「num」為 「saleNumber」。

18.全部圖表配置完成後,單擊頁面右上角的
可預覽報表,示例如下圖。

至此,通過該文檔的學習,您應該對自動售貨機銷售分析場景有了一定的了解。接下來,可以在系列後續文章中,可以學習到更多的物聯網業務場景。

