zoukankan      html  css  js  c++  java
  • 使用Python开发IOT Edge应用(1)

    在之前的文章中,给大家介绍了Azure IOT Edge服务以及部署,包括利用开源的容器注册表服务和IOT Edge进行,现在Azure容器注册表(ACR)在中国已经上线预览了,所以针对于Azure IOT Edge的主要服务组件已经准备好了,整个的系统就可以快速部署起来了:

    接下来的问题就在于,针对于Azure IOT Edge V2的示例代码比较少,尤其是Python,Java等等,对于很多开源开发人员来说并不方便快速上手,例如我们最常测试的tempSensor是用.net本文主要介绍如何使用python语言,Azure容器注册表,开发和部署Edge V2的模拟边界设备。

    创建容器注册表

     

    目前预览版本的容器注册表暂时只支持中国北区,当然你可以使用Azure界面创建容器注册表,但对于开发人员来说,可能命令行更快速吧:)

    1. 首先需要安装azure CLI,支持Linux/Mac/Windows,版本为2.0.27以上

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

    例如我当前版本是:

    1. 设置登陆环境,并登陆你的Azure账号,

    az cloud set -n AzureChinaCloud

    az login

     

    3. 创建资源组,创建容器注册表,容器注册表名称为stevendemoacr,目前预览版本只能在中国北部创建:

    az group create --name steveniotdemogroup --location chinanorth

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

    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模块依赖,方便我们进行快速开发

     

  • 相关阅读:
    自己写的一些公共js方法
    node(03)--利用 HTTP 模块 URl 模块 PATH 模块 FS 模块创建一个 WEB 服务器
    node(03 fs文件模块)
    node (02 CommonJs 和 Nodejs 中自定义模块)顺便讲讲module.exports和exports的区别 dependencies 与 devDependencies 之间的区别
    node.js (01http 模块 url 模块)
    Ubuntu 16.04 下python2和python3及对应的pip的方法
    MySQL划重点-查询-聚合
    MySQL划重点-查询-条件
    MySQL命令
    使用Navicat for Mysql连接装在虚拟机Ubuntu16.04上的mysql服务器
  • 原文地址:https://www.cnblogs.com/cloudapps/p/9356230.html
Copyright © 2011-2022 走看看