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