Azure IoT Edge on Windows 10 IoT Core


        在今年的Build大會上,微軟推出了Azure IoT Edge的第一個版本(https://github.com/Azure/iot-edge )。該版本的主要特點就是將計算能力由Azure端推送至邊緣設備Azure IoT Edge,減少了數據在雲端傳輸耗費的時間,加快響應時間。舉例來說,Azure IoT Edge設備可以作為網關設備,進行數據的預處理和分析,以減少IoTHub數據傳輸的延遲時間。同時,該版本支持多種現場總線的設備將數據接入Azure IoT Edge設備,再由Azure IoT Edge設備統一與Azure IoTHub進行數據交互。

        在今年11月份的Connect大會上,微軟宣布對Azure IoT Edge公開預覽版(文檔鏈接為:https://docs.microsoft.com/en-us/azure/iot-edge ),已在美國中西部、北歐和東亞地區上線,其他區域也將分批開通。Azure IoT Edge支持Windows、Linux、x64與ARM等平台與架構,可使用基於Docker的Linux或Windows容器。支持C#、C與Python等開發語言。微軟同時也發布了適用於Azure IoT Edge的AI套件,以協助開發人員進行邊緣AI的應用開發(https://github.com/Azure/ai-toolkit-iot-edge)。

        本文將以運行Windows 10 IoT Core的MinnowBoard MAX為例,詳細講述Windows 10 IoT Core(Build 16299)的安裝、Docker的部署、Python和Iotedgectl工具的安裝、IoT Edge Device的創建、Module的部署與運行。

1. 在MinnowBoard MAX上安裝Windows 10 IoT Core(Build 16299)

        MinnowBoard MAX是相對而言比較老的板子了,其處理器是Intel Atom的E8325,雙核1.3G的主頻,可以運行64位的系統。要在MinnowBoard MAX運行Windows 10 IoT Core Build 16299(因為運行Azure IoT Edge運行時的最低系統版本是16299),需要進行固件更新、系統鏡像燒寫和Bios設置這三個步驟。

1.1 固件更新

        固件更新需要到Intel的官網下載下載最新文件,鏈接地址為:https://firmware.intel.com/projects/minnowboard-max,筆者寫文章時,其最新的版本為0.97,如下圖所示,

clip_image002

        然后,請參考《Windows 10 IoT Serials 1 - 針對Minnow Board MAX的Windows 10 IoT開發環境搭建》一文的第3部分文檔,更新固件。需要注意的是,目前微軟發布的針對Minnow Board MAX的Windows 10 IoT Core就是64位的,所以,更新的固件也要選擇64位版本的。也就是說,需要用的文件是兩個64位固件相關的文件,如下圖所示。

clip_image004

1.2 系統鏡像燒寫

        系統鏡像燒寫,最簡單的方法就是下載官方的Windows 10 IoT Core Dashboard 軟件,點擊設置新設備,選擇設備類型、OS版本、設備名稱,設置要密碼,點擊下載並安裝。

clip_image006

        注意,這里一定要下載16299版本以上的OS。

1.3 BIOS設置

        系統鏡像燒寫完成以后,需要設置Minnow Board MAX的BIOS,主要修改的是Boot的順序。具體方法可以參考參考《Windows 10 IoT Serials 1 - 針對Minnow Board MAX的Windows 10 IoT開發環境搭建》一文的第5部分文檔,依次完成對“Manager -> System Setup -> South Cluster Configuration -> LPSS & SCC Configuration”和“Boot Mainenance Manager-> Boot Options > Change Boot Order”的設置。

2. Docker的部署

        系統安裝完成之后,給Minnow Board MAX連接網線,上電。第一次運行的時候,會經歷一些設置,所以速度相對較慢。系統運行以后,實用PowerShell工具連接局域網內的Minnow Board MAX設備,具體可以參考這個文檔《login remotely with PowerShell》。注意,這里實用的用戶名和密碼就是之前燒寫系統鏡像時候設置的。

        之后,逐步運行以下指令:

        Invoke-WebRequest https://master.dockerproject.org/windows/x86_64/docker-17.06.0-dev.zip -o temp.zip

        Expand-Archive .\temp.zip $env:ProgramFiles -f

        Remove-Item .\temp.zip

        $env:Path += ";$env:programfiles\docker"

        SETX /M PATH "$env:Path"

        dockerd --register-service

        start-service docker

        以上腳本運行之后,會在Minnow Board MAX設備上安裝Docker,設置環境變量,並啟動Docker服務。

3. IoT Edge運行時的安裝

        在PowerShell中,運行以下腳本:

        Invoke-Expression (Invoke-WebRequest -useb https://aka.ms/iotedgewin)

        注意,該指令會按照腳本文件執行,如果不做更改的話,會提示以下錯誤。

clip_image008

        即下載安裝的Docker版本是17.06,但是,打開下載的PowerShell腳本會發現,里面的要求是17.09,所以,需要下載該腳本文件,並對其中的第38行的DockerVersion進行修改,將17.09改為17.06,如下圖所示。

clip_image010

        修改之后,通過文件共享、FTP等方式,將該文件傳輸到Minnow Board MAX設備上,如C盤根目錄,之后,通過PowerShell執行以下指令:

        C:\Install-IotEdgeRequirements.ps1

        這樣,就通過PowerShell來執行本地的腳本文件了,這個過程中,會下載Python和IoTedgectl工具,根據網絡連接的情況,可能會占用較長的時間。如果下載和安裝正確的話,會通過PowerShell返回提示,如下圖所示。

clip_image012

        另外,可以通過iotedgectl help命令查看其能夠接受的命令。

        現在,我們需要通過Docker將IoTedge Agent 和 IoTedge Hub這兩個模塊 Pull到本地,即在PowerShell中分別運行:

        docker pull microsoft/azureiotedge-agent:1.0-preview

        docker pull microsoft/azureiotedge-hub:1.0-preview

        如果一切安裝正常的話,到這一步就完成安裝了。

4. IoT Edge Device的創建

        目前,IoT Edge Device是通過Azure IoTHub來通信的,所以,需要在Azure訂閱上創建一個IoTHub,具體可以參考《Create an IoT hub using the Azure portal》。注意,免費的F1級別已經足夠。

創建IoTHub之后,可以選擇IoT Edge (preview) -Add IoT Edge Device,如下圖所示:

clip_image014

        輸入名稱,以“MinnowBoard”為例,點擊OK。

        等待創建完成之后,進入設備信息頁面,拷貝其連接的Connection String,如下圖所示。

clip_image016

5. IoT Edge Runtime的部署與配置

        IoT Edge runtime由兩個模塊組成,即IoT Edge agent和IoT Edge hub。IoT Edge agent負責部署並監控部署到IoT Edge設備上的Modules。IoT Edge hub負責部署的Modules之間的通信、以及設備和IoTHub總線的通信。

        其配置同樣通過PowerShell執行:

        iotedgectl setup --connection-string "{device connection string}" --auto-cert-gen-force-no-passwords

        其中的"{device connection string}"由上面第4步中保存的Connection String來代替。

        之后,就可以通過以下指令開始運行:

        iotedgectl start

        同時,可以通過以下指令來檢查IoT Edge agent是否已經運行:

        docker ps

clip_image018

6. 部署一個Module

        Azure IoT Edge其中一個重要的特性就是支持雲端動態部署Module到IoT Edge Device端。每個Module都是在容器中運行的程序包。Module支持Azure Service,如Azure Functions, Azure Stream Analytics和 Azure Machine Learning;也支持用戶自定義的Module,可以用Java, .NET Core 2.0, Node.js, C, and Python等多種語言實現。

        這里,我們利用微軟已寫好的Module進行部署,該Module會每隔5秒鍾產生溫濕度、大氣壓的數據,並上傳到IoTHub。具體步驟如下:

        首先,在Azure Portal中,導航到剛剛創建的IoTHub,依次點擊“IoT Edge (preview)”-“Set Modules”-“Add IoT Edge Module”,在彈出的設置頁面中,點擊Add IoT Edge Module,如下圖所示。

clip_image020

        輸入名稱和“Image URI”,其中“Image URI”設置為:

        microsoft/azureiotedge-simulated-temperature-sensor:1.0-preview

        其他的設置為默認,如下圖所示。

clip_image022

        后續的設置為默認,最后點擊Submit提交。回到設備頁面之后,發現下面的Deployed Module中,mytemp已經開始運行。

clip_image024

7. 監控數據

        監控IoT Edge Device設備與IoTHub交互的數據,可以實用Azure Device Explorer工具,該工具在Github上有下載:https://github.com/Azure/azure-iot-sdk-csharp/releases

        目前最新的版本是1.4.1。下載安裝之后,在Configuration頁面輸入IoTHub的連接字符串,點擊Update:

clip_image026

        之后,就可以在Data頁面中,選擇設備,進行數據監控了,如下圖所示。

clip_image028

        至此,我們已經在MinnowBoard上完成了Windows 10 IoT Core(Build 16299)的安裝,進行了Docker的部署和Python、Iotedgectl工具的安裝,同時,在Azure Portal上完成了IoT Edge Device的創建、Module的部署與運行。同時,通過Azure Device Explorer工具監控Edge Device和Azure IoTHub數據的交互。

 

參考鏈接:

1. Azure IoT Edge V1:https://github.com/Azure/iot-edge

2. Azure IoT Edge V2:https://docs.microsoft.com/en-us/azure/iot-edge

3. Azure IoT Edge AI Kits:https://github.com/Azure/ai-toolkit-iot-edge

4. Windows 10 IoT Serials 1 - 針對Minnow Board MAX的Windows 10 IoT開發環境搭建

5. MinnowBoard固件更新:https://firmware.intel.com/projects/minnowboard-max

6. Windows IoT Core鏡像燒寫工具: Windows 10 IoT Core Dashboard

7. Azure IoTHub創建:Create an IoT hub using the Azure portal

8. Azure Device Explorer工具下載:https://github.com/Azure/azure-iot-sdk-csharp/releases


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM