1. 程式人生 > >玩轉華為物聯網IoTDA服務系列三-自動售貨機銷售分析場景示例

玩轉華為物聯網IoTDA服務系列三-自動售貨機銷售分析場景示例

場景簡介

       通過收集自動售貨機系統的銷售資料,EI資料分析售貨銷量狀況。

        該場景主要描述的是裝置可以通過MQTT協議與物聯網平臺進行互動,應用側可以到物聯網平臺訂閱裝置側變化的通知,使用者可以在控制檯或通過應用側介面建立資料轉發規則,把裝置上報的屬性轉發給其他華為雲服務。

        核心知識點:產品模型、編輯碼外掛、訂閱推送、屬性上報、MQTT協議、資料轉發規則。

場景流程

流程解釋:

        

  • 1、建立自動售貨機產品:物聯網平臺以產品為粒度管理批量裝置。使用者可以通過平臺提供的API介面或控制檯建立產品。

  • 2、上傳產品模型:產品模型是定義一種裝置的基本屬性和命令。產品模型可以通過控制檯,也可以匯入公共產品庫的模型。該場景沒有編解碼外掛,是因為裝置是基於安卓作業系統開發的,能夠通過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轉儲的資料。

  1. 登入華為雲官方網站,訪問MapReduce服務。

  2. 單擊“立即購買”,建立叢集,以下配置僅為樣例。

    注:下圖以新版自定義購買介面為例,需要在“購買叢集”介面點選右上角的“點選體驗新版”,然後選擇“自定義購買”。

引數名稱

說明

軟體配置

當前區域

保持預設。

叢集名稱

自定義或保持預設。

叢集版本

保持預設。

叢集型別

分析叢集。元件勾選Spark,系統會自動勾選Hive和Tez。“Hive使用外部資料來源儲存元資料”保持關閉。

Kerberos認證

關閉。

使用者名稱

固定為“admin”不可修改。

密碼

自定義。

確認密碼

硬體配置

計費模式

按實際使用需求選擇,本示例中選擇“按需計費”。

網路配置

全部保持預設。

例項

為節省實驗費用,可修改分析Core的例項數量為1,其餘保持預設值。密碼自定義。

高階配置均保持預設。

3.叢集建立成功後,等待15到30分鐘,叢集狀態變更為“執行中”則表示建立成功。

建立OBS桶

  1. 登入華為雲官方網站,訪問物件儲存服務。

  2. 單擊“管理控制檯”進入物件儲存服務管理控制檯。

  3. 單擊頁面右上角的“建立桶”,根據需求選擇桶規格後,單擊“立即建立”。

建立資料接入通道和轉儲任務

建立通道並配置轉儲任務,實現將裝置管理服務傳入DIS的資料轉發至MRS。

  1. 登入華為雲官方網站,訪問資料接入服務。

  2. 單擊“立即購買”,購買接入通道,以下配置僅為樣例。

引數名稱

說明

區域

保持預設。

通道名稱

自定義或保持預設。

通道型別

保持預設值“普通”。

分割槽數量

按需填寫。

生命週期

源資料型別

選擇“JSON”。

自動擴縮容

保持關閉。

Schema開關

高階配置

保持預設。

3.通道購買成功後,進入DIS控制檯“接入管理 > 通道管理”頁面。

4.單擊需要檢視的通道名稱,進入所選通道的管理頁面,選擇“轉儲管理”頁籤。

5.單擊“新增轉儲任務”按鈕。

6.在彈出的“新增轉儲任務”頁面配置轉儲相關配置項。

引數名稱

說明

源資料型別

預設為通道源資料型別

轉儲服務型別

選擇“MRS”。

任務名稱

自定義,如“iot_to_mrs”。

轉儲檔案格式

選擇“Text”。

MRS叢集

選擇已建立成功的MRS叢集。

HDFS路徑

選擇轉儲檔案要儲存的路徑,建議選擇“/user”。

轉儲檔案目錄

自定義轉儲檔案存放的資料夾名稱,本示例中為“temp”。

偏移量

選擇“最新”。

資料轉儲週期

本示例中修改為“60”。

資料臨時桶

選擇已建立的OBS桶。

資料臨時目錄

自定義,本示例中為“temp”。

7.單擊“立即建立”。

配置裝置接入服務

在裝置接入服務中建立產品模型、註冊裝置並設定資料轉發規則,實現當裝置上報資料時將資料轉發至DIS。

  1. 登入華為雲官方網站,訪問裝置接入服務。

  2. 單擊“立即使用”進入裝置接入控制檯。

  3. 單擊“規則 > 建立規則 > 資料轉發”,首次建立對接到DIS服務的規則時,平臺會根據對接的雲服務和區域彈出對應的雲服務訪問授權視窗。

4.單擊左側導航欄的“產品”,單擊右上角下拉框,選擇新建產品所屬的資源空間。

注:本文中使用的產品模型和裝置僅為示例,您可以使用自己的產品模型和裝置進行操作。

5.單擊右上角的“建立產品”,建立一個基於MQTT協議的產品,填寫引數後,單擊“確認”。

基本資訊

產品名稱

自定義,如MQTT_Device

協議型別

選擇“MQTT”

資料格式

選擇“JSON”

廠商名稱

自定義

功能定義

選擇模型

請參考步驟6匯入模型即可。

所屬行業

根據實際情況進行填寫。

裝置型別

6.在功能定義頁面,單擊“上傳模型檔案”,單擊Profile.zip,獲取產品模型檔案樣例。

7.進入“裝置 > 設備註冊”頁面,單擊“註冊裝置”,參考下表填寫引數。

引數名稱

說明

所屬產品

選擇在步驟5中建立的產品。

裝置標識碼

裝置唯一物理標識,如IMEI、MAC地址等,用於裝置在接入物聯網平臺時攜帶該標識資訊完成接入鑑權。

  • 原生MQTT裝置:自定義,英文字母和數字的組合字串。通過註冊成功後生成的“裝置ID”(與裝置標識碼一一對應)和“裝置金鑰”接入平臺。

  • NB-IoT裝置、整合SDK的裝置:NB-IoT裝置上的IMEI或MAC地址。裝置通過註冊時填寫的“裝置標識碼”和“金鑰”接入平臺。

裝置名稱

自定義。

裝置認證型別

選擇“金鑰”。

金鑰

裝置金鑰,可自定義,不填寫物聯網平臺會自動生成。

填寫完成後單擊“確定”,請注意儲存註冊成功返回的“裝置ID”和“裝置金鑰”。

8.單擊左側導航欄的“規則”,單擊右上角的“建立規則”,選擇“資料轉發”。

9.填寫規則內容,規則名稱自定義,“資料型別”選擇“JSON”,轉發至“資料接入服務(DIS)”,“區域”選擇您開通OBS的區域,“通道”選擇您建立的桶,填寫完成後單擊“建立規則”。

配置資料視覺化服務

配置資料視覺化服務,新建資料報表檢視。

  1. 登入華為雲官方網站,訪問資料視覺化服務。

  2. 單擊“進入控制檯”。

    注:若您未開通DLV服務,可單擊“體驗試用”獲取30天的基礎版免費試用。

  3. 訪問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”。

執行程式路徑

  1. 點選下載jar包並上傳至OBS桶。

  2. 回到新增作業頁面,單擊“OBS”後單擊“瀏覽”選擇剛剛上傳的jar檔案。

執行程式引數

左側選擇“--class”,右側輸入“com.huawei.bigdata.spark.examples.SalesStatistics”。

執行程式引數

輸入“AK SK inputpath outputpath”。

  • 其中AK SK填寫華為雲賬號的AK、SK,獲取方法可參考AK和SK的獲取方法。

  • inputpath填寫檔案輸入路徑,在本樣例中為DIS的轉儲路徑,如“/user/temp”。

  • outputpath填寫檔案輸出路徑,在本樣例中為已申請的OBS桶內的output資料夾(無需提前在OBS建立資料夾,MRS會自動建立),如“s3a://{OBS桶名稱}/output”。

服務配置引數

無需填寫。

配置完成後單擊“確定”啟動作業。

5.作業完成後,可在OBS桶內看到output資料夾,裡面有四個資料夾,每個資料夾內有一個“_SUCCESS”檔案和一個“part”開頭的csv檔案。

注:本實驗的樣例程式分析資料時會將UTC時間轉換為本地時間,因此資料分析結果中的日期與時間段數值會和上報時的數值不一致。

6.登入華為雲官方網站,訪問資料視覺化服務。

7.單擊“進入控制檯”。

8.單擊“我的資料 > 新建資料連線” ,在“新建資料連線”頁面左側的資料庫型別中,選擇“CSV檔案”,按照下表的資料規劃填寫配置後單擊“確定”。重複本步驟建立4個數據連線。

引數名

說明

名稱

建立4個數據連線,分別命名為:

  • salesByDate

  • salesByTime

  • salesByCategory

  • salesByArea

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.全部圖表配置完成後,單擊頁面右上角的 可預覽報表,示例如下圖。

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

新增華為IoT小助手(微訊號:huawei-iot,回覆“部落格園”)獲取此物聯網免費學習課程