使用Python開發IOT Edge應用(1)

在以前的文章中,給你們介紹了Azure IOT Edge服務以及部署,包括利用開源的容器註冊表服務和IOT Edge進行,如今Azure容器註冊表(ACR)在中國已經上線預覽了,因此針對於Azure IOT Edge的主要服務組件已經準備好了,整個的系統就能夠快速部署起來了: python

接下來的問題就在於,針對於Azure IOT Edge V2的示例代碼比較少,尤爲是Python,Java等等,對於不少開源開發人員來講並不方便快速上手,例如咱們最常測試的tempSensor是用.net本文主要介紹如何使用python語言,Azure容器註冊表,開發和部署Edge V2的模擬邊界設備。 git

建立容器註冊表

 

目前預覽版本的容器註冊表暫時只支持中國北區,固然你可使用Azure界面建立容器註冊表,但對於開發人員來講,可能命令行更快速吧:) github

  1. 首先須要安裝azure CLI,支持Linux/Mac/Windows,版本爲2.0.27以上

https://docs.microsoft.com/zh-cn/cli/azure/install-azure-cli?view=azure-cli-latest docker

例如我當前版本是: 服務器

  1. 設置登錄環境,並登錄你的Azure帳號,

az cloud set -n AzureChinaCloud cookie

az login 工具

 

3. 建立資源組,建立容器註冊表,容器註冊表名稱爲stevendemoacr,目前預覽版本只能在中國北部建立: 測試

az group create --name steveniotdemogroup --location chinanorth spa

az acr create --resource-group steveniotdemogroup --name stevendemoacr --sku Basic .net

4.登陸到Azure管理界面,能夠看到容器註冊表建立成功,默認配額10GB

5. 登陸到容器註冊表

az acr login --name stevendemoacr --resource-group steveniotdemogroup

注意:若是你的登陸出現問題,或者hang在這裏,請注意檢查一下你的.docker/config.jsdon文件,頗有啃呢個你之前登陸過其餘註冊服務器,裏面的登陸服務器是錯誤的,修改爲正確的容器註冊表服務器便可。

6. 先作一個測試,本地拉下來一個image

docker pull microsoft/aci-helloworld

# 得到容器註冊表的登陸服務器

az acr list --resource-group steveniotdemogroup --query "[].{acrLoginServer:loginServer}" --output table

# 查看當前容器註冊表中的鏡像,應該爲空

az acr repository list --name stevendemoacr --output table

# 標記,並推送咱們拉下來的本地helloworld鏡像到容器註冊表

docker tag microsoft/aci-helloworld stevendemoacr.azurecr.cn/aci-helloworld:v1

docker push stevendemoacr.azurecr.cn/aci-helloworld:v1

# 查看容器註冊表中的鏡像

7. 最後爲方便後續部署,啓用管理員,用戶名就是註冊表名稱,密碼能夠經過以下方式得到

az acr update --name stevendemoacr --admin-enabled true

az acr credential show --name stevendemoacr --query "passwords[0].value"

使用Python建立IOT Edge模塊

 

  1. 打開Visual Studio Code,安裝IOT Edge插件,同時打開終端,安裝項目建立模版工具cookiecutter,這個開源工具是幫助開發人員快速生成IOT Edge代碼模版的:

pip install --upgrade --user cookiecutter

 

在Mac上若是你使用的是Anconda,可使用以下命令安裝:

conda install -c conda-forge cookiecutter

2. 在VSCode中,打開命令控制面板,搜索"Azure IOT Edge:New IOT Edge Solution",按照提示選擇,輸入solution名稱,選擇Python solution模版,在指定容器註冊表的時候,使用你的容器註冊表地址,例如本例中就是stevendemoacr.azurecr.cn,替換localhost:5000而後回車進行建立,實際上Edge插件執行的是以下命令:

cookiecutter --no-input https://github.com/Azure/cookiecutter-azure-iot-edge-module module_name=StevenPythonModule image_repository=stevendemoacr.azurecr.cn/stevenpythonmodule --checkout master

 

注意:因爲Click組件的python3的問題,你有可能會碰到相似於"python 3 was configured to use ascii as encoding for the environment"的錯誤,致使整個執行錯誤終止,解決辦法是在你的環境變量裏面加上LANG=zh_CN.UTF-8的聲明便可。

 

3. 生成的項目是VS Code工做區,以下圖所示,在生成的項目裏面找到.env文件,輸入以前得到你的容器註冊表的用戶名和密碼,相似以下字段:

 

CONTAINER_REGISTRY_USERNAME_stevendemoacr=stevendemoacr

CONTAINER_REGISTRY_PASSWORD_stevendemoacr= vFjKAE2G2PoDsQWPgfrnbfr

查看生成的工做區項目結構:

 

能夠看到該項目自動建立了sample code,Dockerfile以及模塊定義和python模塊依賴,方便咱們進行快速開發

相關文章
相關標籤/搜索