你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure CLI 计划并广播作业

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

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

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

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

注意

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

先决条件

  • Azure CLI。 还可以使用 Azure Cloud Shell (即在浏览器或 Windows 终端等应用中运行的交互式 CLI shell)运行本文中的命令。 如果使用 Cloud Shell,则无需安装任何内容。 如果要在本地使用 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}"
占位符
{HubName} IoT 中心的名称。
{JobName} 计划作业的名称。 作业名称具有唯一性,因此每次运行此命令时,请选择不同的作业名称。
{MethodName} 直接方法的名称。
{MethodPayload} 要提供给直接方法的任何有效负载。 如果不需要有效负载,请使用 null
{DeviceQuery} 一个查询,用于定义作业要针对的一个或多个设备。 例如,单个设备作业可以使用以下查询条件:deviceId = 'myExampleDevice'

提示

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

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

你可以使用作业来更新设备孪生的所需属性。

使用 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}"
占位符
{HubName} IoT 中心的名称。
{JobName} 计划作业的名称。 作业名称具有唯一性,因此每次运行此命令时,请选择不同的作业名称。
{JSONTwinPatch} 你想要用来更新设备孪生所需属性的 JSON 代码片段。 例如,{"properties":{"desired": {"BuildingNo": 45}}}
{DeviceQuery} 一个查询,用于定义作业要针对的一个或多个设备。 例如,单个设备作业可以使用以下查询条件:deviceId = 'myExampleDevice'

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