适用于: IoT Edge 1.1
重要
IoT Edge 1.1 终止支持日期为 2022 年 12 月 13 日。 有关此产品、服务、技术或 API 支持方式的信息,请查看 Microsoft产品生命周期 。 有关更新到最新版本的 IoT Edge 的详细信息,请参阅 更新 IoT Edge。
在本文中,我们使用机器学习训练数据模拟向 Azure IoT 中心发送遥测数据的设备。 如简介中所述,本教程使用 Turbofan 引擎降级模拟数据集 来模拟来自一组飞机引擎的数据进行训练和测试。
在我们的实验方案中,我们知道:
- 数据由多个多变量时序组成。
- 每个数据集划分为训练和测试子集。
- 每条时序数据都来自不同的引擎。
- 每个发动机都以不同程度的初始磨损和制造变化开始。
在本教程中,我们使用一个数据集(FD003)的训练数据子集。
实际上,每个引擎都是独立的 IoT 设备。 假设你没有可用的联网的涡轮风扇引擎集合,我们将为这些设备构建软件替代品。
模拟器是一个 C# 程序,它使用 IoT 中心 API 以编程方式向 IoT 中心注册虚拟设备。 然后,从 NASA 提供的数据子集读取每个设备的数据,并使用模拟的 IoT 设备将其发送到 IoT 中心。 本教程的此部分的所有代码都可以在存储库的 DeviceHarness 目录中找到。
DeviceHarness 项目是一个以 C# 编写的 .NET Core 项目,其中包含四个类:
- 程序: 负责处理用户输入和整体协调的执行入口点。
- TrainingFileManager: 负责读取和分析所选数据文件。
- CycleData: 表示转换为消息格式的文件中的单个数据行。
- TurbofanDevice: 负责创建一个与单个设备(时间序列)相对应的 IoT 设备,并将数据传输到 IoT 中心。
本文中所述的任务需要大约 20 分钟才能完成。
与此步骤中工作等效的实际应用可能由设备开发人员和云开发人员执行。
本教程此部分,您将学习如何:
- 将外部项目合并到开发环境中。
- 使用示例 DeviceHarness 项目生成模拟的 IoT 设备数据。
- 在 IoT 中心查看生成的数据。
先决条件
本文是有关在 IoT Edge 上使用 Azure 机器学习的教程的系列教程的一部分。 本系列中的每个文章都基于上一篇文章中的工作。 如果已直接访问本文,请先查看本系列的 第一篇文章。
配置 Visual Studio Code 并生成 DeviceHarness 项目
打开开发虚拟机的远程桌面会话。
在 Visual Studio Code 中,打开
C:\source\IoTEdgeAndMlSample\DeviceHarness
文件夹。由于首次在此计算机上使用扩展,因此某些扩展将更新并安装其依赖项。 系统可能会提示你更新扩展。 如果是,请选择“ 重载窗口”。
如果输出窗口中显示 OmniSharp 错误,则需要卸载 C# 扩展。
系统会提示为 DeviceHarness 添加所需的资产。 选择 “是 ”以添加它们。
- 通知可能需要几秒钟才能显示。
- 如果错过了此通知,请检查右下角的钟形图标。
选择 “还原 ”以还原包依赖项。
如果未收到这些通知,请关闭 Visual Studio Code,在中删除 bin 和 obj 目录
C:\source\IoTEdgeAndMlSample\DeviceHarness
,打开 Visual Studio Code,然后重新打开 DeviceHarness 文件夹。通过触发一次构建、Ctrl + Shift + B 或 终端>运行构建任务来验证环境是否已正确设置。
系统会提示选择要运行的生成任务。 选择“生成”。
构建运行并输出成功消息。
您可以通过选择 终端>配置默认构建任务...,并从显示的提示中选择 构建 来将此构建设为默认构建任务。
连接到 IoT 中心并运行 DeviceHarness
现在我们项目正在构建,请连接到 IoT 中心以访问连接字符串并查看数据生成进度。
在 Visual Studio Code 中登录到 Azure
通过打开命令面板
Ctrl + Shift + P
或 查看>命令面板,在 Visual Studio Code 中登录到 Azure 订阅。搜索 Azure:登录 命令。
此时会打开浏览器窗口并提示输入凭据。 重定向到成功页面后,可以关闭浏览器。
连接到 IoT 中心并检索中心连接字符串
在 Visual Studio Code 资源管理器的底部,选择 Azure IoT 中心 窗格以展开它。
在展开的框架中,单击 “选择 IoT 中心”。
出现提示时,选择 Azure 订阅,然后选择 IoT 中心。
单击 Azure IoT 中心右侧的...以查看更多操作。 选择 “复制 IoT 中心连接字符串”。
运行 DeviceHarness 项目
选择 “查看>终端 ”以打开 Visual Studio Code 终端。
如果未看到提示,请按 Enter。
在终端中输入
dotnet run
。当系统提示输入 IoT 中心连接字符串时,请粘贴在上一节复制的连接字符串。
在 Azure IoT 中心设备 帧中,单击“刷新”按钮。
请注意,设备将添加到 IoT 中心,设备显示为绿色,以指示通过该设备发送数据。 设备将消息发送到 IoT 中心后,它们断开连接并显示为蓝色。
可以通过右键单击任何设备并选择 “开始监视内置事件终结点”来查看发送到中心的消息。 消息将显示在 Visual Studio Code 的输出窗格中。
单击 “Azure IoT 中心 输出”窗格并选择“ 停止监视内置事件终结点”来停止监视。
让应用程序运行到完成,这需要几分钟时间。
检查 IoT 中心是否有活动
DeviceHarness 发送的数据将发送到 IoT 中心,可在其中在 Azure 门户中进行验证。
打开 Azure 门户 并导航到为本教程创建的 IoT 中心。
在左侧窗格菜单中的 “监视”下,选择“ 指标”。
在图表定义页上,单击“ 指标 ”下拉列表,向下滚动列表,然后选择“ 路由:传递到存储的数据”。 图表应显示将数据路由到存储时的峰值。
验证 Azure 存储中的数据
我们刚刚发送到 IoT 中心的数据已路由到我们在上一篇文章中创建的存储容器。 让我们看看存储帐户中的数据。
在 Azure 门户中导航到存储帐户。
从存储帐户导航器中,选择“存储资源管理器”(预览版)。
在存储资源管理器中,选择 “Blob 容器”,然后点击
devicedata
。在内容窗格中,单击与 IoT 中心名称相对应的文件夹,然后依次点击年份、月份、日期和小时。 你将看到多个文件夹,这些文件夹表示写入数据时的分钟数。
单击其中一个文件夹,查找与分区对应的标记为 00 和 01 的数据文件。
这些文件以 Avro 格式编写。 双击其中一个文件,打开另一个浏览器选项卡并部分呈现数据。 如果系统提示你打开程序中的文件,则可以选择 VS Code,它将正确呈现。
现在无需尝试读取或解释数据;我们将在下一篇文章中执行此作。
清理资源
本教程是一组的一部分,其中每篇文章都基于上一篇文章中完成的工作。 请等待清理所有资源,直到完成最终教程。
后续步骤
在本文中,我们使用 .NET Core 项目创建一组虚拟 IoT 设备,并通过它们将数据发送到 IoT 中心,并将其发送到 Azure 存储容器。 此项目模拟实际方案,其中物理 IoT 设备将数据发送到 IoT 中心,然后发送到特选存储。 此数据包括传感器读数、作设置、故障信号和模式等。 收集足够的数据后,我们将使用它来训练预测设备的剩余使用寿命(RUL)的模型。 我们将在下一篇文章中演示此机器学习。
继续阅读下一篇文章,使用数据训练机器学习模型。