1. 程式人生 > 實用技巧 >騰雲駕物—使用Azure IoT Hub接收樹莓派感測資料展現到Power BI

騰雲駕物—使用Azure IoT Hub接收樹莓派感測資料展現到Power BI

一直用業餘時間零零碎碎地學習一些IoT的東西,也想把了解到的一些東西組成一個系統來看看IoT能玩些什麼。最近微軟的文件也更新了,有了一個非常不錯的例子,通過樹莓派收集感測器資料,傳遞給Azure的IoT Hub訊息,再經過初步的處理傳給Power BI,形成直觀好看的報表。這個例子很能說明未來的應用,與人/物連線的邊緣計算收集和初步處理資料,雲平臺彙集、重構和展現資料,再回到與人/物連線的邊緣計算裝置。

很有代表性的一個場景,簡單的示意圖如下:

image

整個事情有這麼些步驟:

1、把感測器連線到樹莓派,讓感測器工作起來

2、申請一個Azure賬號,啟用IoT Hub服務,把樹莓派連線到IoT Hub服務

3、啟用Stream Analytics服務,讓從樹莓派傳輸到IoT Hub的資料,傳遞給Power BI

4、啟用Power BI對資料進行展現

為了隨時能做這個實驗,我選擇使用線上的樹莓派模擬器來做IoT裝置。後續有時間再上物理的感測器和樹莓派。

樹莓派模擬器是樹莓派虛擬化?看著很像啊,其實不是啦。為了便於沒有樹莓派硬體的情況下,能夠很簡單的開始測試使用Azure的IoT Hub等物聯網服務,微軟做了一個線上的樹莓派加感測器的模擬器。算起來應該是第一批使用者了,並且從GitHub(https://github.com/Azure-Samples/raspberry-pi-web-simulator

)上看像是紫竹園區的兄弟參與寫的哦!所以非常有必要支援一下寫一筆。

要使用樹莓派模擬器只需要開啟:https://azure-samples.github.io/raspberry-pi-web-simulator/站點。

image

模擬器已經自帶了模擬的感測器。當前暫時還不能修改感測器啥的,不過我想以後應該能用不同的感測器或者電路吧。右邊淺黃區域就是程式碼區,都省了自己寫程式碼的工作了。當然,可以對程式碼做一些調整修改。右邊淺灰區域是顯示程式碼輸出的區域。程式碼執行時可以看到輸出。

image

測試的目的是把資料傳出去處理,所以需要註冊一個Azure賬號並建立IoT Hub,然後再IoT Hub中建立一個裝置。Azure IoT Hub會給每個裝置分配主金鑰和副金鑰。點選裝置就能夠檢視並複製這個裝置的主金鑰。即使是樹莓派的模擬器,也需要使用金鑰來連線IoT Hub並進行資訊的收發。

image

複製金鑰之後,在程式碼區把[You……]那一串替換成裝置的主金鑰,就可以執行程程式碼了。執行時,能夠在控制檯區域顯示如下訊息:

輸出 - 從 Raspberry Pi 傳送到 IoT 中心的感測器資料

可以看到,模擬器模擬了帶有溫度、溼度、氣壓的感測器BME280。這個感測器將在測試物理感測器和樹莓派時再介紹。這裡先略過。

以上步驟也可以檢視詳細說明:https://docs.microsoft.com/zh-cn/azure/iot-hub/iot-hub-raspberry-pi-web-simulator-get-started

完成感測器及邊緣裝置的配置之後,就需要對上傳到Azure IoT Hub的資料進行處理了。可以配置內部終結點的使用者組,讓後續的服務可以讀取IoT Hub上的資料。

image

為了把資料匯入到Power BI,需要使用Stream Analysitcs服務。按照介紹,這個服務有點類似橋樑,能夠把不同來源的資訊和資料處理後轉發給儲存,或者展現到儀表板,或者用來觸發應用工作流。

image

為了讓資料自動的從IoT Hub匯入到Power BI,需要為Stream Analytics服務配置一個數據輸入和一個數據輸出,以及對資料執行處理的查詢。輸入的源可以是事件中心、Blob儲存或IoT Hub,輸出的目標可以是SQL資料庫、Blob儲存、事件中心、服務匯流排、Power BI等各種。我們的目標輸出是Power BI,所以需要提供Power BI訂閱的憑據。執行這個流分析作業的時候,會自動在Power BI中建立目標的資料集。

imageimageimage

這裡有一個坑。新建輸入、輸出的時候,命名規則是可以接受“-”,“_”的,但是,在編寫查詢的時候,格式要求不允許這兩種符號。結果我只好刪了重建重新截圖。

image

有了輸入輸出,有了用於處理資料的查詢,就可以對流分析作業進行測試。

imageimage

測試不會真的寫入目標,會從源資料抽取部分用於測試,然後按照查詢展現要寫到目標的資料。可以在測試之後再根據結果決定是否正式啟用流分析作業。

image

在啟動流分析作業之前,測試的Power BI裡是一片空白。啟動流分析作業之後,出現了新的資料集。利用這個資料集,就可以進行報表的設計。image

設計好的報表,就能夠很直觀的看到從樹莓派上的感測器獲得的溫度和溼度資料了,即使這是個模擬器~

image

回到Azure,能夠在IoT Hub的指標上看到傳輸到IoT Hub的資料量。模擬器預設的程式碼是2000 ms傳送一次資料,所以每分鐘的指標就是30次。同樣在流分析作業的指標上,也能夠看到資料吞吐的情況,接近每分鐘30次。

imageimage

順便說一句,VS Code的各種外掛真不錯。Azure外掛套件中就有對IoT的支援,可以直接使用IoT Hub的Policy的ID連線到Azure IoT Hub,進行裝置的查詢和各種訊息處理,例如傳送C2D/D2C的訊息等等。

image

看上去挺複雜的一次IoT測試,很簡單就這麼完成了。會有更有意思的東西在前面等著我們學習的~

IoT的終結點參考:https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-endpoints#list-of-built-in-iot-hub-endpoints

流分析作業的查詢參考:https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-stream-analytics-query-patterns


轉載於:https://blog.51cto.com/haohu/2064756