针对 Azure IoT 中心设备管理,使用适用于 Azure CLI 的 IoT 扩展

End-to-end diagram

在本文介绍如何在开发计算机上通过各种管理选项使用适用于 Azure CLI 的 IoT 扩展。 适用于 Azure CLI 的 IoT 扩展是一个开放源代码 IoT 扩展,它增强了 Azure CLI 的功能。 Azure CLI 包含用于与 Azure 资源管理器和管理终结点进行交互的命令。 例如,可使用 Azure CLI 创建 Azure VM 或 IoT 中心。 CLI 扩展使 Azure 服务能够扩展 Azure CLI,从而可访问其他特定于服务的功能。 IoT 扩展为 IoT 开发人员提供了针对所有 IoT 中心、IoT Edge 和 IoT 中心设备预配服务功能的命令行访问权限。

管理选项 任务
直接方法 让设备执行操作,如开始或停止发送消息或重新启动设备。
孪生所需属性 让设备进入特定状态,例如将 LED 设置为绿色,或将遥测发送间隔设置为 30 分钟。
孪生报告属性 获取报告的设备状态。 例如,设备报告 LED 现在正在闪烁。
孪生标记 将设备特定的元数据存储在云中。 例如,存储在自动售货机的部署位置。
设备孪生查询 查询所有设备孪生以检索符合任意条件的设备孪生,例如确定可供使用的设备。

有关这些选项的差异和使用指导的更详细说明,请参阅设备到云通信指南云到设备通信指南

设备孪生是存储设备状态信息(元数据、配置和条件)的 JSON 文档。 IoT 中心为连接到它的每台设备保留一个设备孪生。 有关设备孪生的详细信息,请参阅设备孪生入门

注意

在开始本教程前,请完成 Raspberry Pi 联机模拟器教程或其中一个设备教程。 例如,可转到将 Raspberry Pi 与 Node.js 配合使用。 在这些文章中,你将设置 Azure IoT 设备和 IoT 中心,并部署一个在设备上运行的示例应用程序。 该应用程序会将收集的传感器数据发送到 IoT 中心。

注意

本文使用最新版本的 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

注意

本文所述的功能只能用于 IoT 中心的标准层。 有关 IoT 中心基本层和标准/免费层的详细信息,请参阅选择适合你的解决方案的 IoT 中心层

先决条件

  • 请完成 Raspberry Pi 联机模拟器教程或其中一个设备教程。 例如,可转到将 Raspberry Pi 与 Node.js 配合使用教程或发送遥测快速入门中的一个教程。 这些文章阐述下列要求:

    • 一个有效的 Azure 订阅。
    • 已在订阅中创建一个 Azure IoT 中心。
    • 一个可向 Azure IoT 中心发送消息的客户端应用程序。
  • 在学习本教程期间,确保设备与客户端应用程序均处于运行状态。

  • Python 2.7x 或 Python 3.x

  • Azure CLI。 如需进行安装,请参阅安装 Azure CLI。 Azure CLI 版本必须至少是 2.0.70 或更高版本。 请使用 az -version 验证版本。

    注意

    本文使用最新版本的 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

  • 安装 IoT 扩展。 最简单的方法是运行 az extension add --name azure-iotIoT 扩展自述文件介绍了该扩展的多种安装方法。

登录到 Azure 帐户

通过运行以下命令登录到 Azure 帐户:

az login

直接方法

az iot hub invoke-device-method --device-id <your device id> \
  --hub-name <your hub name> \
  --method-name <the method name> \
  --method-payload <the method payload>

设备孪生所需属性

通过运行以下命令将所需属性间隔设置为 3000:

az iot hub device-twin update -n <your hub name> \
  -d <your device id> --set properties.desired.interval=3000

可从设备读取此属性。

设备孪生报告属性

通过运行以下命令获取报告的设备属性:

az iot hub device-twin show -n <your hub name> -d <your device id>

其中一个孪生报告属性为 $metadata.$lastUpdated,它显示设备应用上次更新其报告属性集的时间。

设备孪生标记

通过运行以下命令显示设备的标记和属性:

az iot hub device-twin show --hub-name <your hub name> --device-id <your device id>

通过运行以下命令向设备添加字段角色 = 温度和湿度:

az iot hub device-twin update \
  --hub-name <your hub name> \
  --device-id <your device id> \
  --set tags='{"role":"temperature&humidity"}'

设备孪生查询

通过运行以下命令查询角色标记 =“温度和湿度”的设备:

az iot hub query --hub-name <your hub name> \
  --query-command "SELECT * FROM devices WHERE tags.role = 'temperature&humidity'"

通过运行以下命令查询除角色标记 =“温度和湿度”的设备以外的所有设备:

az iot hub query --hub-name <your hub name> \
  --query-command "SELECT * FROM devices WHERE tags.role != 'temperature&humidity'"

后续步骤

现在,已了解如何监视设备到云的消息,以及在 IoT 设备与 Azure IoT 中心之间发送云到设备的消息。

若要继续了解 Azure IoT 中心入门知识并浏览所有扩展的 IoT 方案,请参阅: