本节中,我们实际开发一个Linux Module,您将了解如下内容:

1. Visual studio Code 工具准备;

2. 使用VS Code 和IoT Edge 扩展 附带的模板快速开发Edge Module;

3. 了解Module Client;

4. 了解消息在Module 间的路由;

5. 编译并Push Edge Solution 到ACR中;

6. 在VS Code中远程部署Module 到Edge设备中;

本文参考官方文档:https://docs.azure.cn/zh-cn/iot-edge/tutorial-develop-for-linux

 

视频讲解:

您可以在B站观看视频讲解:https://www.bilibili.com/video/av94572682/

或在本站观看:

 

图文讲解(步骤比较多,仅划重点):

1. 准备VS code开发环境,请参考:

下载安装Visual Studio Code:https://code.visualstudio.com/

下载相关的扩展:

设置Azure 扩展为中国区Azure(如果使用世纪互联版本,则需要本步骤):

登录Azure 账号:

 

2. 创建Edge Module Solution

打开VS, 输入 ctrl+shift+p

输入 Azure IoT Edge: New IoT Edge Solution

 

选择代码存储路径后,设置解决方案名称,这里保持默认:

本例中选择C#模板

 

输入模块名称,本例输入的是MyFirstModule:

修改 localhost:5000为实际的ACR地址:

3. 关键代码

打开 Program.cs 文件,该文件位于 modules/MyFirstModule/ 文件夹中

SetInputMessageHandlerAsync 方法会设置一个输入队列,用来接收传入消息。 查看此方法,并了解它如何初始化名为 input1 的输入队列。

 

SendEventAsync 方法会处理收到的消息,并设置一个输出队列,用来传递这些消息。 查看此方法,可以看到它会初始化名为 output1 的输出队列。

 

打开 deployment.template.json 文件

IoT Edge 中心模块的功能之一是在部署中的所有模块之间路由消息。 查看 routes 属性中的值。 第一个路由 SampleModuleToIoTHub 使用通配符 ( * ) 指示 SampleModule 模块中的任何输出队列传出的任何消息。 这些消息进入 $upstream(用于指示 IoT 中心的保留名称)。 第二个路由 sensorToSampleModule 接收来自 SimulatedTemperatureSensor 模块的消息,并将它们路由到在 MyFirstModule 代码中初始化的 input1 输入队列。

4.  设置 ACR 用户名和密码:

5. 生成并推送解决方案

登录到ACR

docker login -u <ACR username> -p <ACR password> <ACR login server>

 

“生成并推送”命令会启动三项操作。 首先,它在解决方案中创建名为 config 的新文件夹,用于保存基于部署模板和其他解决方案文件中的信息生成的完整部署清单。 其次,它会运行 docker build,以基于目标体系结构的相应 dockerfile 生成容器映像。 然后,它会运行 docker push,以将映像存储库推送到容器注册表。

结束之后,可以在ACR中查看已经push上来的镜像:

 

6. 部署模块到Edge Device

在VS Code 左侧的 IoT Hub的Edge 设备上右键

 

部署可能持续一段时间,稍后分别在Edge 设备和 控制台查看部署结果:

 

7. 开始监控D2C消息

在Edge设备上,右键选择”开始监视内置事件终结点“

可以看到设备发送到云端的消息,如下图:

 

至此,本节内容结束,本节中仍然使用了 “SimulatedTemperatureSensor“ 这个微软官方的示例Module,如果想了解该Module的源码,请参照:https://github.com/Azure/iotedge/tree/master/edge-modules/SimulatedTemperatureSensor

 

 

Azure IoT Edge 入门系列其他文章,请见《Azure 智能边缘 之 Azure IoT Edge 十分钟入门系列文章目录