快速入门:将遥测数据从设备发送到 IoT 中心并使用 Azure CLI 监视该数据
IoT 中心是一项 Azure 服务,用于将大量遥测数据从 IoT 设备引入云中进行存储或处理。 在此无代码快速入门中,请使用 Azure CLI 创建 IoT 中心和模拟设备。 将设备遥测发送到中心,并在设备上发送消息、调用方法和更新属性。 还将使用 Azure 门户可视化设备指标。 本文显示基本工作流,适用于使用 CLI 与 IoT 中心应用程序交互的开发人员。
先决条件
- 如果没有 Azure 订阅,可以在开始前创建一个试用帐户。
- Azure CLI。 可以使用在浏览器或 Windows 终端等应用中运行的交互式 CLI shell 运行本快速入门中的所有命令。 如果希望在本地使用 CLI,本快速入门需要 Azure CLI 2.36 或更高版本。 运行
az --version
即可查找版本。 若要安装或升级,请参阅安装 Azure CLI。
登录到 Azure 门户
登录 Azure 门户。
准备两个 CLI 会话
接下来,请准备两个 Azure CLI 会话。 如果使用本地 CLI 客户端,将运行单独的 CLI 实例。 使用单独的 CLI 会话来完成以下任务:
- 第一个会话模拟与 IoT 中心通信的 IoT 设备。
- 第二个会话要么监视第一个会话中的设备,要么发送消息、命令和属性更新。
若要运行命令,请选择“复制”以复制本快速入门中的代码块,将其粘贴到 shell 会话中,然后运行它 。
Azure CLI 要求你登录到 Azure 帐户。 Azure CLI Shell 会话与 IoT 中心之间的所有通信都经过身份验证和加密。 因此,本快速入门无需你在真实设备上使用的额外身份验证(如连接字符串)。
在第一个 CLI 会话中,运行 az extension add 命令。 命令将 Azure CLI 的 Azure IoT 扩展添加到 CLI shell。 IoT 扩展会将 IoT 中心、IoT Edge 和 IoT 设备预配服务 (DPS) 特定的命令添加到 Azure CLI。
az extension add --name azure-iot
安装 Azure IOT 扩展后,无需在任何 CLI 会话中再次安装。
注意
本文使用最新版本的 Azure IoT 扩展(称为
azure-iot
)。 旧版本称为azure-cli-iot-ext
。只应同时安装有一个版本。 可以使用命令az extension list
来验证当前安装的扩展。使用
az extension remove --name azure-cli-iot-ext
可删除扩展的旧版本。使用
az extension add --name azure-iot
可添加扩展的新版本。若要查看已安装了哪些扩展,请使用
az extension list
。打开第二个 CLI 会话。 如果在本地使用 CLI,请打开第二个 CLI 实例。
创建 IoT 中心
在本部分中,使用 Azure CLI 创建资源组和 IoT 中心。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。 IoT 中心充当中央消息中心,用于 IoT 应用程序与设备之间的双向通信。
在第一个 CLI 会话中,运行 az group create 命令以创建资源组。 以下命令在 chinanorth 位置创建名为 MyResourceGroup 的资源组。
az group create --name MyResourceGroup --location chinaeast
在第一个 CLI 会话中,运行 Az PowerShell module iot hub create 命令以创建 IoT 中心。 创建 IoT 中心需要几分钟时间。
YourIotHubName。 使用你为 IoT 中心选择的名称,在以下命令中替换此占位符和周围的大括号。 IoT 中心名称必须在 Azure 中全局唯一。 无论你在何处看到占位符,都请使用本快速入门的其余部分中的 IoT 中心名称。
az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
创建和监视设备
在本部分中,将在第一个 CLI 会话中创建模拟设备。 模拟设备将设备遥测数据发送到 IoT 中心。 在第二个 CLI 会话中监视事件和遥测。
若要创建和启动模拟设备,请执行以下操作:
在第一个 CLI 会话中,运行 az iot hub device-identity create 命令。 此命令创建模拟设备标识。
YourIotHubName。 将下面的占位符替换为你为 IoT 中心选择的名称。
simDevice: 在本快速入门的其余部分中,可以直接将此名称用于模拟设备。 或者,也可使用其他名称。
az iot hub device-identity create -d simDevice -n {YourIoTHubName}
在第一个 CLI 会话中,运行 az iot device simulate 命令。 此命令会启动模拟设备。 设备将遥测数据发送到 IoT 中心,并从其中接收消息。
YourIotHubName。 将下面的占位符替换为你为 IoT 中心选择的名称。
az iot device simulate -d simDevice -n {YourIoTHubName}
若要监视设备,请执行以下操作:
在第二个 CLI 会话中,运行 az iot hub monitor-events 命令。 此命令持续监视模拟设备。 输出显示遥测,例如模拟设备发送到 IoT 中心的事件和属性状态变化。
YourIotHubName。 将下面的占位符替换为你为 IoT 中心选择的名称。
az iot hub monitor-events --output table -p all -n {YourIoTHubName}
在第二个 CLI 会话中监视模拟设备后,按 Ctrl+C 以停止监视。 使第二个 CLI 会话保持打开状态,以在后续步骤中使用。
使用 CLI 发送消息
本部分会将消息发送到模拟设备。
在第一个 CLI 会话中,确认模拟设备是否仍在运行。 如果设备已停止运行,请运行以下命令以重启设备:
YourIotHubName。 将下面的占位符替换为你为 IoT 中心选择的名称。
az iot device simulate -d simDevice -n {YourIoTHubName}
在第二个 CLI 会话中,运行 az iot device c2d-message send 命令。 此命令会将云到设备消息从 IoT 中心发送到模拟设备。 该消息包含一个字符串和两个键值对。
YourIotHubName。 将下面的占位符替换为你为 IoT 中心选择的名称。
az iot device c2d-message send -d simDevice --data "Hello World" --props "key0=value0;key1=value1" -n {YourIoTHubName}
(可选)可以使用 Azure 门户发送云到设备的消息。 为此,请浏览到 IoT 中心的概述页,依次选择“IoT 设备”、模拟设备和“发送到设备的消息” 。
在第一个 CLI 会话中,确认模拟设备是否已收到消息。
使用 CLI 以调用设备方法
在本部分中,你将在模拟设备上调用直接方法。
与之前一样,在第一个 CLI 会话中确认模拟设备是否正在运行。 如果没有,请重启设备。
在第二个 CLI 会话中,运行 az iot hub invoke-device-method 命令。 在此示例中,设备没有预先存在的方法。 命令在模拟设备上调用示例方法名并返回有效负载。
YourIotHubName。 将下面的占位符替换为你为 IoT 中心选择的名称。
az iot hub invoke-device-method --mn MySampleMethod -d simDevice -n {YourIoTHubName}
在第一个 CLI 会话中,确认输出是否显示方法调用。
使用 CLI 更新设备属性
在本部分中,你将通过设置属性值更新模拟设备的状态。
与之前一样,在第一个 CLI 会话中确认模拟设备是否正在运行。 如果没有,请重启设备。
在第二个 CLI 会话中,运行 az iot hub device-twin update 命令。 此命令将属性更新为与模拟设备相对应的 IoT 中心设备孪生上的所需状态。 在本例中,命令设置示例温度条件属性。
重要
如果在 CLI shell 中使用 PowerShell,请使用以下命令的 PowerShell 版本。 PowerShell 要求对 JSON 有效负载中的字符进行转义。
YourIotHubName。 将下面的占位符替换为你为 IoT 中心选择的名称。
az iot hub device-twin update -d simDevice --desired '{"conditions":{"temperature":{"warning":98, "critical":107}}}' -n {YourIoTHubName}
az iot hub device-twin update -d simDevice --desired '{\"conditions\":{\"temperature\":{\"warning\":98, \"critical\":107}}}' -n {YourIoTHubName}
在第一个 CLI 会话中,确认模拟设备是否输出属性更新。
在第二个 CLI 会话中,运行 az iot hub device-twin show 命令。 此命令报告对设备属性的更改。
YourIotHubName。 将下面的占位符替换为你为 IoT 中心选择的名称。
az iot hub device-twin show -d simDevice --query properties.reported -n {YourIoTHubName}
在门户中查看消息传递指标
使用 Azure 门户可以管理 IoT 中心和设备的所有方面。 在引入来自设备的遥测数据的典型 IoT 中心应用程序中,你可能想要监视设备或查看设备遥测数据中的指标。
若要在 Azure 门户中可视化消息传递指标,请执行以下操作:
在门户的左侧导航菜单中选择“所有资源” 。 此选项卡会列出订阅中的所有资源,包括你创建的 IoT 中心。
选择你创建的 IoT 中心上的链接。 门户将显示中心的概述页。
在 IoT 中心的左窗格中选择“指标” 。
在“范围”字段中,输入 IoT 中心名称。
在“指标命名空间”字段中,选择“IoT 中心标准指标”。
在“指标”字段中,选择“已使用的消息总数”。
将鼠标指针悬停在设备发送消息的时间线区域上。 某个时间点的消息总数显示在时间线的左下角。
(可选)使用“指标”下拉列表显示模拟设备上的其他指标 。 例如,“C2D 消息传递已完成”或“设备总数(预览)” 。
清理资源
如果不再需要本快速入门中创建的 Azure 资源,可以使用 Azure CLI 将其删除。
如果你继续学习下一篇建议的文章,可以保留并重复使用已创建的资源。
重要
删除资源组的操作不可逆。 资源组以及包含在其中的所有资源将被永久删除。 请确保不会意外删除错误的资源组或资源。
若要按名称删除资源组,请执行以下操作:
运行 az group delete 命令。 此命令将删除创建的资源组、IoT 中心和设备注册。
az group delete --name MyResourceGroup
运行 az group list 命令,确认资源组是否已删除。
az group list
后续步骤
在本快速入门中,你使用 Azure CLI 创建 IoT 中心和模拟设备、发送并监视遥测、调用方法、设置所需属性以及清理资源。 使用 Azure 门户可视化了设备上的消息传递指标。
如果你是设备开发人员,建议执行的下一步骤是查看使用适用于 C 的 Azure IoT 设备 SDK 的遥测快速入门。或者,查看使用首选语言或 SDK 的可用 Azure IoT 中心遥测快速入门文章之一。
若要了解如何从后端应用程序控制模拟设备,请继续阅读下一快速入门教程。