设置Azure IoT Edge模块的开发环境和Hello World
分类: Azure物联网 ◆ 标签: #Azure #IoT Edge # ◆ 发布于: 2023-06-14 21:32:44

我们之前学习的文章都是理解什么是Azure IoT Edge
, 跟着学习了如何安装Azure IoT Edge runtime
, 以及如何部署Azure IoT Edge
设备,同时也学习了如何使用自动部署来部署Azure IoT Edge
的模块,同时我们也理解了Azure IoT Edge
提供的两个系统模块的用途以及分工。但是我们一直没有学习如何进行Azure IoT Edge
的模块开发,本站开始学习一下Azure IoT Edge
模块是如何开发的。
从之前的学习中我们理解了Azure IoT Edge
模块就是使用容器封装好的一个镜像,我们开发好这个镜像之后可以上传到某个容器镜像库里,然后通过该库对我们自行开发的模块进行部署到IoT Edge
设备上,这个部分我们前面已经是学习过了。
工欲善其事必先利其器,要开发Azure IoT Edge
的模块,我们首先需要准备好开发环境,在本节,我们主要使用的工具/环境如下:
- 用于开发的开发机器:windows 10/windows 11 均可以。
- Docker Desktop 版本,选择基于
Linux
的容器。 - 微软的编辑器:
Visual Studio Code
以及插件Azure
,Azure IoT Tools
。
那么我先来设置自己的开发环境。
安装Docker Desktop
我们从官网就可以下载到Docker Desktop
了,下载地址是:https://docs.docker.com/desktop/windows/install/, 您可以从这个网络学习到如何在Windows
上安装Docker
。
安装Visual Studio Code
我们简短的使用如下的步骤来安装Visual Studio Code
:
- 从这里下载
VS code
和安装: https://code.visualstudio.com/ - 安装成功后,启动
VS Code
, 选择view
->Extensions
- 搜索插件
Azure IoT Tools
, 该插件还会依赖安装Azure
插件。 - 插件安装完成后,选择
View
->Command Palette
, 或者直接用快捷键:Ctrl + Shift + P
也可以打开Command Palette
模式。 - 在命令输入板(
Command Palette
),输入:Azure:Sign into Azure Cloud
, 选择你所在的Azure 区域,例如Azure China
, 跟着命令登录成功。 - 继续使用快捷键打开
Command Palette
, 然后输入:Azure IoT Hub: Select IoT Hub
选择你所在的订阅的IoT Hub。 - 在
Explorer
面板(一般是左侧面板最上面第一个图标就是Explorer
, 也可以使用快捷键:Ctrl + Shift + E
) - 在
Explorer
面板上可以找到Azure IoT Hub
的面板,找到你所在的设备和hub, 如下图:
创建一个Container registry
您可以直接使用Docker
的Docker hub
, 也可以像本章一样使用Azure
提供的Container registry
。
采用如下的步骤创建一个Container registry
:
- 登录到
Azure
- 搜索
Container registry
- 按照提示创建成功后,找到overview页面,然后选择
Access Keys
, 启用Admin User
, 如下图:
到这里算是开发环境准备好了,现在我们需要尝试使用这套开发环境来进行一个简单的Hello World
的模块开发。
新项目的开发
按照上面的配置,配置好了环境之后,一定要记得启动Docker for Desktop
。
然后打开Vs Code
, 使用快捷键Ctrl + Shift + P
打开Command Palette
, 输入:Azure IoT Edge: New IoT Edge Solution
, 然后跟着弹出的窗口提示创建一个新的IoT Edge 方案
:
步骤 | Value |
---|---|
选择文件夹(Select folder ) | 选择您的开发机器上使用哪个目录保存Azure IoT Edge 的项目 |
给您的项目起一个名字(Provide a solution name ) | 给自己的项目起一个名字就好了,这一步,例如Demo1Solution |
选择一个模型模板(Select module template ) | 我们这个项目选择Choose C# Module |
给你要开发的模块起一个名字(Provide a module name ) | 我们这个快速项目就接受默认的名字好了SampleModule |
提供一个docker的注册库(Provide Docker image repository for the module ) | 我们之前创建Azure Container Registry |
如下图:
设置Azure IoT Edge runtime
的版本号
在Vs Code
上使用快捷键Ctrl + Shift + P
打开Command Palette
, 输入Azure IoT Edge: Set Default IoT Edge Runtime Version
, 选择你需要的版本,目前建议1.2
和1.1
。
设置目标机器的架构
在Vs Code
上使用快捷键Ctrl + Shift + P
打开Command Palette
, 输入Azure IoT Edge: Set Default Target Platform for Edge Solution
, 我们这里选择amd64
。
设置你的容器镜像服务器的登录账号
在Vs Code
里打开文件.env
, 如下所示:
CONTAINER_REGISTRY_USERNAME_docker=你的用户名 CONTAINER_REGISTRY_PASSWORD_docker=你的登录密码
至此您的第一个项目就算是创建好了,如下图:
这里有一些需要注意的文件和目录:
.vscode
目录是vs code
用于启动配置项目插件等等, 例如文件launch.json
用于定义调试模块。modules
, 包含我们要开发的模块的所有文件,一个模块一个文件夹.env
: 该文件保存容器镜像库的登录信息,可以和Azure IoT Edge
设备分享,用于下载模块的镜像。- 文件
deployment.debug.template.json
和deployment.template.json
文件帮助用户用于定义部署文件。
到这一步我们已经有了一个开发环境,并且也有了一个用于测试的项目,您可以尝试采用如下的步骤来发布:
- 使用
View->Terminal
或者是快捷键打开一个终端。 - 在终端里输入:
docker login -u <ACR username> -p <ACR password> <ACR login server>
- 在终端里输入:
az acr login -n <ACR registry name>
- 在右侧找到文件
deployment.template.json
, 然后右键Build and Push IoT Edge Solution
, 如下图就可以将这个项目发布到您的容器库中。
另外在机器上启动docker, 并且由于项目目录有.devcontianer, VS Code会建议你从remote-container里打开项目,这个会需要一段时间,不过这个很好用。
至此全部结束了,下一节,我们学习如何开发一个自定义的Azure IoT Edge
模块。