玩轉華為物聯網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,回復“博客園”)獲取此物聯網免費學習課程。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?