Microsoft Azure IoT Hub應(yīng)用 – 第三部分:使用云服務(wù)收集商業(yè)智能
1). 簡(jiǎn)介
這是關(guān)于 IoT 應(yīng)用開發(fā)系列文章中的第三篇也是最后一篇。本文著重說明基于Azure云服務(wù)來提供易于理解的數(shù)據(jù)可視化和商業(yè)智能。Toradex Colibri VF61模塊 + Iris底板繼續(xù)作為本次演示的嵌入式系統(tǒng)。圖 1 回顧展示了本系列文章所介紹應(yīng)用整體框圖。
圖1:應(yīng)用框圖
如果讀者想要了解更多關(guān)于本項(xiàng)目,以及如何發(fā)送數(shù)據(jù)到云端,可以參考這個(gè)系列的前兩篇文章。
第一篇:向云端發(fā)送數(shù)據(jù)http://c.gongkong.com/taorui/a67726.html
第二篇:連接傳感器以及 IoT 車輛http://c.gongkong.com/Toradex/a68634.html
Azure是Microsoft提供的云服務(wù)平臺(tái),提供了多種應(yīng)用如數(shù)據(jù)庫,虛擬機(jī),應(yīng)用服務(wù),機(jī)器學(xué)習(xí),數(shù)據(jù)流分析,媒體和CDN服務(wù),大數(shù)據(jù)解決方案,以及其他眾多應(yīng)用。Azure服務(wù)主要為Iaas 和PaaS – 分別對(duì)應(yīng)Infrastructure as a Service 和 Platform as a service。IoT Hub在之前已經(jīng)設(shè)置從設(shè)備獲取消息,因此從現(xiàn)在起它的使用是透明的,但是還有另外兩個(gè)Azure服務(wù)需要被使用來滿足項(xiàng)目目標(biāo)定義。
Stream Analytics是一個(gè)用于近乎實(shí)時(shí)處理數(shù)據(jù)并將結(jié)果輸出到儀表板,產(chǎn)生告警,導(dǎo)入數(shù)據(jù)庫,對(duì)比當(dāng)前數(shù)據(jù)流和歷史數(shù)列等等功能的Azure服務(wù)。它的一些優(yōu)點(diǎn)一是易于使用,只需要一些點(diǎn)擊配置就可以讓它工作;二是它使用類SQL語言來進(jìn)行數(shù)據(jù)過濾;三是高靈活性,系統(tǒng)管理者可以根據(jù)項(xiàng)目需要配置數(shù)據(jù)流量范圍從1MB/s到1GB/s;最后是低成本,服務(wù)部署是免費(fèi)的,只是按照使用量付費(fèi)。
Power BI并不是一個(gè)Azure服務(wù),而是一個(gè)Microsoft云服務(wù),主要面向商業(yè)智能和數(shù)據(jù)可視化。雖然它并不不是Azure服務(wù),但是可以通過Stream Analytics使用它的元數(shù)據(jù)。Power BI通過在儀表板顯示相關(guān)在線數(shù)據(jù)序列信息使管理者可以利用這些信息來做決策或者洞察本質(zhì)。事實(shí)上儀表板會(huì)持續(xù)刷新以便最快速度解決問題和獲取機(jī)會(huì)。
現(xiàn)在,本項(xiàng)目所需的云服務(wù)已經(jīng)介紹完畢,下面我們介紹如何配置這些服務(wù)。
2). 配置Stream Analytics 和Power BI
現(xiàn)在IoT Hub已經(jīng)從嵌入式系統(tǒng)獲得數(shù)據(jù),并將這些數(shù)據(jù)提供給Stream Analytics,因此我們首先來配置Stream Analytics。在Azure portal中,選擇+New > Internet of Things > Stream Analytics job,如圖2所示。然后Job name必須填寫,另外IoT Hub要使用的resource group和location必須設(shè)置。
圖 2: 創(chuàng)建Stream Analytics job
成功部署后,可以直接通過portal主頁來訪問,結(jié)果顯示如下圖3。Job Topology 部分展示一些信息和輸入配置,Query描述以及輸出配置– 這些會(huì)在本文后續(xù)一一解釋。Monitoring部分是可配置的,用于顯示如輸入和輸出事件數(shù)量隨時(shí)間變化,數(shù)據(jù)轉(zhuǎn)換錯(cuò)誤,亂序事件和其他選項(xiàng)等信息。然后還有一個(gè)Settings選項(xiàng)卡可做一些額外的調(diào)整配置。
圖 3: Stream Analytics 主面板
為了將IoT Hub配置為輸入,點(diǎn)擊Inputs并選擇add選項(xiàng),然后一個(gè)新input選項(xiàng)卡會(huì)打開,如下圖4所示。Input alias可以隨意填寫,Source必須選擇為IoT Hub,然后IoT Hub,Shared Access Policy Name 和Shared Access Policy Key須填寫對(duì)應(yīng)的IoT Hub信息(如何獲取這些信息請(qǐng)參考本系列文章的第一部分);其他選項(xiàng)可以保留默認(rèn)配置即可。
圖 4: Stream Analytics 輸入設(shè)置
在設(shè)置Power BI為輸出之前,由于其并不是Azure服務(wù)的一部分,我們首先需要?jiǎng)?chuàng)建一個(gè)賬號(hào)??梢缘顷慞ower BI網(wǎng)站完成創(chuàng)建并且基本版本是免費(fèi)的。注冊(cè)完成后,頁面會(huì)跳轉(zhuǎn)到Power BI 界面,不過我們需要先配置Stream Analytics輸出后再來配置Power BI。
我們只能在management Azure port進(jìn)行操作并通過recent特性連接兩個(gè)服務(wù)。打開后,從所有條目列表中選擇Stream Analytics ,然后打開outputs 選項(xiàng)卡,在頁面下方點(diǎn)擊add output 按鈕。最后在最近打開的窗口里面選擇Power BI,如下圖5所示。
圖 5: Stream Analytics 輸出選擇
如需要,如下圖6所示點(diǎn)擊Authorize Now來授權(quán)連接。登陸到Power BI鏈接的Microsoft賬戶。
圖 6: 授權(quán) Power BI 做為 Stream Analytics 輸出
然后如下圖7所示,選擇output alias, dataset name 和 table name,如果你愿意也可以都保持一致?,F(xiàn)在Stream Analytics 輸出已經(jīng)配置為發(fā)送數(shù)據(jù)到Power BI。
圖 7: 配置 Stream Analytics 輸出
3). Stream Analytics 查詢: 篩選數(shù)據(jù)提供給 Power BI
既然Stream Analytics使用類SQL語言來定義其行為,我們可以將其作為一個(gè)數(shù)據(jù)篩選器使用,即輸入信息只有滿足特定條件時(shí)候才輸出。為了闡述這個(gè)可能性,在這個(gè)例程中查詢完成兩個(gè)不同的工作:首先為了減小輸出數(shù)據(jù)工作量,通過使用tumbling window,將輸入數(shù)據(jù)組織為10s window。舉例說明,如果嵌入式系統(tǒng)每1秒鐘發(fā)送數(shù)據(jù)給IoT Hub,那么每10個(gè)輸入目標(biāo)中只有1個(gè)會(huì)被發(fā)送給Power BI。但是問題是哪一個(gè)會(huì)被選擇?發(fā)送給多數(shù)據(jù)會(huì)不會(huì)更好?
回答第一個(gè)問題,數(shù)據(jù)可以通過不同集合方式組織,如求和,平均值,標(biāo)準(zhǔn)差,最大值,出現(xiàn)概率或其他排序方式。詳細(xì)說明可以參考這里。關(guān)于第二個(gè)問題,使用window的好處是如果輸出應(yīng)用有接受數(shù)據(jù)的限制,使用window可以保證在不超過應(yīng)用限制的前提下保證數(shù)據(jù)完整性。在本文特定的項(xiàng)目中只有一個(gè)嵌入式設(shè)備發(fā)送數(shù)據(jù)到云端,這個(gè)可能不是問題,但是如果有大量設(shè)備連接或者少量設(shè)備但發(fā)送大量數(shù)據(jù)的情況,使用window則是一個(gè)非常好的選擇。
第二個(gè)主要工作是通過發(fā)送符合下面狀態(tài)的數(shù)據(jù)到輸出端– 不論是駕駛者太靠近另一輛車,突然剎車或者翻車,來識(shí)別駕駛者的危險(xiǎn)行為甚至事故。這些狀態(tài)是否有用取決于誰在查看Power BI儀表板:例如如果管理者想要學(xué)習(xí)車溫度和另一輛車距直接的關(guān)聯(lián),這些條件設(shè)置就不會(huì)很有用,因此IoT開發(fā)者必然要問:我需要什么樣的輸出?
已經(jīng)部署的查詢代碼請(qǐng)見如下。注意在SELECT字段處,max,min和avg功能用于組織window變量,另外一些變量重新命名了;count函數(shù)用于記錄假設(shè)的事故或危險(xiǎn)情況發(fā)生數(shù)量。INTO字段指定數(shù)據(jù)應(yīng)采用什么輸出,這個(gè)必須和之前配置好的output alias一致。From字段同樣設(shè)置好需要使用的input。 GROUP BY 字段定義了window時(shí)間和未分組變量,如識(shí)別字符串。WHERE字段則為危險(xiǎn)情況篩選。同樣注意這個(gè)篩選器雖然是一個(gè)簡(jiǎn)單模型,但可以通過使用更多對(duì)比變量和其他精細(xì)數(shù)學(xué)模型來改進(jìn)為實(shí)際使用場(chǎng)景。
---------------------------
---------------------------
最后可以通過Azure portal界面進(jìn)入Stream Analytics 工作頁面后點(diǎn)擊start開始。通常會(huì)需要幾十秒到幾分鐘時(shí)間來啟動(dòng)。
4). 創(chuàng)建Power BI 儀表板
為了創(chuàng)建一個(gè)Power BI儀表板,首先需要確認(rèn)所有需要的系統(tǒng)已經(jīng)運(yùn)行:Stream Analytics 工作,IoT Hub 和Toradex 嵌入式系統(tǒng)。然后通過瀏覽器登陸Power BI,左邊欄會(huì)顯示Datasets菜單,Stream Analytics輸出數(shù)據(jù)會(huì)在這里自動(dòng)顯示(只有當(dāng)Stream Analytics篩選器至少發(fā)出一個(gè)數(shù)據(jù)后才會(huì)顯示)。選擇這個(gè),如下圖8所示。
圖 8: 創(chuàng)建一個(gè) Power BI 儀表板
現(xiàn)在可以選擇一個(gè)數(shù)據(jù)可視化選項(xiàng),如一個(gè)線狀圖表或者一個(gè)表格。本文使用柱狀圖來顯示危險(xiǎn)狀態(tài)和事故可視化數(shù)據(jù),同時(shí)用一個(gè)儀表來指示有多少這種狀況發(fā)生。除了可以選擇標(biāo)準(zhǔn)樣式,也可以自定義或者從community customized models下載。
下面我們來創(chuàng)建一個(gè)堆疊柱狀圖為例。如下圖9(a),Axis 欄設(shè)置為mytimestamp,Legend欄設(shè)置為caridentifier,然后value欄設(shè)置為distance;當(dāng)然legend和title是可編輯的,另外添加一個(gè)數(shù)值為0.5的參考線以便于更直觀的發(fā)現(xiàn)和另外一輛車的車距已經(jīng)太小,如圖9(b)所示。圖10展示了翻車和突然剎車事件的圖表和事故統(tǒng)計(jì)的儀表。在進(jìn)入下一步驟之前,我們需要先保存當(dāng)前報(bào)告。
圖 9: 創(chuàng)建圖表并添加(a)數(shù)值和 (b)圖形
圖 10: Power BI 報(bào)告
如果想要這些圖表實(shí)時(shí)更新,需要將他們每一個(gè)都添加到儀表板。不過報(bào)告本身需要重新加載頁面才能刷新數(shù)據(jù)(至少至文本完成時(shí)還是這樣)。首先,從左邊欄創(chuàng)建一個(gè)新的儀表板,如之前的圖8所示。然后進(jìn)入報(bào)告后,在每個(gè)圖表的右上角有個(gè)pin visual選項(xiàng),用這個(gè)可以將圖表添加到儀表板。
下圖11展示了從車獲取的數(shù)據(jù)結(jié)果,實(shí)施方案如下:為了獲取真是的汽車數(shù)據(jù),遙控汽車被放到了一臺(tái)真實(shí)汽車?yán)锩?。為了滿足Stream Analytics的篩選條件,橫向加速度被采用來模擬重力,因?yàn)槠涫冀K為負(fù)值;車加速度就是真是加速度數(shù)據(jù);因?yàn)檫b控車是放在真是汽車?yán)锩?,因此車距基本上始終小于0.5m。另外,整個(gè)系統(tǒng)并未裝備3G或者Sigfox,而是通過手機(jī)作為WIFI路由使用。在圖片下面,還有一個(gè)視頻展示實(shí)時(shí)儀表板,溫度圖表創(chuàng)建以及從儀表板快照生成PDF文檔。
圖 11: 最終的 Power BI 儀表板
http://player.youku.com/player.php/sid/XMTczMTM3MzEzNg==/v.swf
到此本系列關(guān)于如何創(chuàng)建一個(gè)端到端的IoT應(yīng)用的文章已經(jīng)結(jié)束。當(dāng)然,本文只是給想關(guān)注這個(gè)領(lǐng)域的讀者一個(gè)概覽,或者對(duì)想對(duì)IoT初步了解的讀者一個(gè)指南,因?yàn)檫€有很多的可能性以及Toradex嵌入式系統(tǒng)適合的方案在這里并沒有列出。希望本系列文章是有幫助的,同時(shí)在這里要感謝來自巴西的 Grupo Viceri 團(tuán)隊(duì)提供Azure和商業(yè)智能方面的經(jīng)驗(yàn),最終使得這個(gè)IoT汽車項(xiàng)目可以順利合作完成。以后再見!
提交
Verdin AM62 LVGL 移植
基于 NXP iMX8MM 測(cè)試 Secure Boot 功能
隆重推出 Aquila - 新一代 Toradex 計(jì)算機(jī)模塊
Verdin iMX8MP 調(diào)試串口更改
NXP iMX8MM Cortex-M4 核心 GPT Capture 測(cè)試