使用 Azure CLI 计划和广播作业

使用 Azure CLI 来计划和跟踪更新数百万台设备的作业。 使用作业可以:

  • 更新所需属性
  • 更新标记
  • 调用直接方法

从概念上讲,作业会包装其中一项操作,并跟踪针对一组设备的执行进度。 设备孪生查询定义作业与之交互的设备集。 例如,后端应用可使用作业重启 10,000 台设备(由设备孪生查询指定并计划在将来执行)。 该应用程序随后可以在其中每个设备接收和执行重新启动方法时跟踪进度。

若要详细了解任务如何帮助管理批量设备操作,请参阅 在多台设备上计划任务

注意

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

先决条件

  • Azure CLI。 还可以使用本地 shell 运行本文中的命令,或在 Windows 终端之类的应用中运行这些命令。 如果要在本地使用 CLI,本文需要 Azure CLI 2.36 版本或更高版本。 运行 az --version 即可查找版本。 要在本地安装或升级 Azure CLI,请参阅 安装 Azure CLI

  • Azure 订阅中的 IoT 中心。 如果还没有中心,则可以按照创建 IoT 中心中的步骤进行操作。

计划作业以调用直接方法

可以使用作业在一个或多个设备上调用 直接方法

使用 az iot hub job create 命令,将以下占位符替换为相应的值。 该命令计划一个作业,该作业在目标设备上调用方法名称。

az iot hub job create --hub-name {HubName} --job-id {JobName} \
                      --job-type scheduleDeviceMethod \
                      --method-name {MethodName} --method-payload {MethodPayload} \
                      --query-condition "{DeviceQuery}"
Placeholder 价值
{HubName} IoT 中心的名称。
{JobName} 计划作业的名称。 作业名称具有唯一性,因此每次运行此命令时,请选择不同的作业名称。
{MethodName} 直接方法的名称。
{MethodPayload} 任何要提供给直接方法的有效负载。 如果不需要有效负载,请使用 null
{DeviceQuery} 一个查询,用于定义要针对作业的设备或设备。 例如,单个设备作业可以使用以下查询条件: deviceId = 'myExampleDevice'

提示

计划调用直接方法的作业 az iot hub job create 命令时,必须为 --method-name--method-payload 可选参数指定值。 对于不接受有效负载的直接方法,请为 null 参数指定 --method-payload

计划作业以更新设备孪生属性

可以使用作业更新 设备孪生 的期望属性。

使用 az iot hub job create 命令,将以下占位符替换为相应的值。 在此示例中,我们会计划作业以将模拟设备所需的孪生属性值 BuildingNo 设置为 45。

az iot hub job create --hub-name {HubName} --job-id {JobName} \
                      --job-type scheduleUpdateTwin \
                      --twin-patch '{JSONTwinPatch}' \
                      --query-condition "{DeviceQuery}"
Placeholder 价值
{HubName} IoT 中心的名称。
{JobName} 计划作业的名称。 作业名称具有唯一性,因此每次运行此命令时,请选择不同的作业名称。
{JSONTwinPatch} 用于更新设备孪生期望属性的 JSON 代码片段。 例如,{"properties":{"desired": {"BuildingNo": 45}}}
{DeviceQuery} 一个查询,用于定义要针对作业的设备或设备。 例如,单个设备作业可以使用以下查询条件: deviceId = 'myExampleDevice'

了解如何使用 Azure IoT SDK 以编程方式实现 作业:计划和广播作业