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

 

使用Python建立IOT Edge模塊(續)

 

4. 打開main.py程序,在目前的Azure IOT Edge demo程序庫裏面沒有用python開發的模擬程序模塊,只有一個filter模塊,常常用來作測試的tempSensor是用.net來寫的,我在這裏寫了一個python版本的設備模擬程序,源代碼能夠從個人Github庫裏下載: html

https://github.com/kingliantop/AzureIOTEdgeSample/tree/master/PythonDeviceSolution python

代碼部分,定義溫度和溼度做爲基本信息: git

# Define the JSON message to send to IoT Hub. github

TEMPERATURE = 20.0 docker

HUMIDITY = 60 json

MSG_TXT = "{\"temperature\": %.2f,\"humidity\": %.2f}" ubuntu

增長證書部分,避免安全認證報錯: windows

def set_certificates(self): 安全

isWindows = sys.platform.lower() in ['windows', 'win32'] 服務器

if not isWindows:

CERT_FILE = os.environ['EdgeModuleCACertificateFile']

print("Adding TrustedCerts from: {0}".format(CERT_FILE))

 

# this brings in x509 privateKey and certificate

file = open(CERT_FILE)

try:

self.client.set_option("TrustedCerts", file.read())

print ( "set_option TrustedCerts successful" )

except IoTHubClientError as iothub_client_error:

print ( "set_option TrustedCerts failed (%s)" % iothub_client_error )

 

file.close()

在消息發送層面,你能夠看到消息實際上是發送到了上行隊列,而不是直接發送到IOT Hub,而後消息會由Edge runtime負責發送:

# Send the message.

print( "Steven demo sending message: %s" % message.get_string() )

hub_manager.forward_event_to_output("temperatureOutput", message, 0)

5. 使用VSCode插件構建Edge solution,其實最主要作的就是作docker build和docker push,把打包的鏡像推送到ACR,方便IOT Edge設備部署,選擇deployment.template.json單擊右鍵,選擇Build IOT Edge Solution,該插件會完成相應操做,打包鏡像並推送到容器註冊表:

 

 

以此類推,你能夠構建PythonFilter程序,代碼能夠從以下地址下載,或則會本身生成:

https://github.com/kingliantop/AzureIOTEdgeSample/tree/master/PythonFilterSolution

從容器註冊表部署到IOT Edge設備

  1. 建立IOT Hub服務,設置你的邊界設備等步驟在我以前的文章中已經有詳細介紹,再次再也不贅述。目前IOT Edge處於預覽階段,我建議使用我以前博客中的方法安裝配置,而不是如今最新的文檔。

http://www.javashuo.com/article/p-rzuwzoxr-hb.html

sudo apt-get install python-pip

sudo pip install --upgrade pip

sudo pip install -U azure-iot-edge-runtime-ctl

 

sudo iotedgectl setup --connection-string " HostName=steveniothub.azure-devices.cn;DeviceId=myubuntudevice;SharedAccessKey=Kr5Y7gSGKT7GWQF3tkvdm/3QyhKHrfTmTz81EYzv4bc=" --nopass

sudo iotedgectl start

  1. 爲你的邊界設備配置容器註冊表的訪問密碼,這一部分很是重要,不然會出現部署錯誤,由於你不設置容器註冊表密碼的時候,邊界設備不會知道你的容器註冊表的訪問地址:

    # 首先獲取你的容器註冊表的用戶名密碼

    az acr list -o table

az acr credential show –name stevenacrdemo

或者也能夠在容器註冊表的管理界面,訪問祕鑰部分,啓用管理員用戶,得到用戶名,密碼和登陸服務器:

# 登陸容器註冊表

sudo iotedgectl login --address stevendemoacr.azurecr.cn --username stevendemoacr --password vFjKAE2G2PoDsQWPLfu+M9xwQfnK9l4u

 

  1. 部署IOT Edge模塊,name部分是模塊名稱,Image URI是你的容器註冊表中模塊的路徑,保存,所有next,而後提交便可:

    稍等一段時間,能夠看到module部署狀態變成了running

     

  2. 在邊界設備上使用docker logs監控pythonSensor模塊狀態,也可使用VSCodeIOT Hub插件進行監控消息,能夠看到一切正常:

     

相關文章
相關標籤/搜索