使用适用于 Azure CLI 的 IoT 扩展进行 Azure IoT 中心设备管理

端到端关系图

本文介绍如何在开发计算机上将适用于 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 联机模拟器 教程或设备教程之一。 例如,可以使用 node.js转到 Raspberry Pi 。 在这些文章中,你将设置 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 with 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>

通过运行以下命令,将字段 role = 温度&湿度 添加到设备中:

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

设备孪生查询

运行以下命令,查询具有角色标签 = “temperature&humidity” 的设备:

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

运行以下命令,查询除具有角色标记 = “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 方案,请参阅以下内容: