View a markdown version of this page

使用状态模板激活和停用状态数据收集 - AWS 物联网 FleetWise

AWS FleetWise 物联网不再向新客户开放。现有的 AWS 物联网 FleetWise 客户可以继续使用该服务。上的《互联移动指南》 AWS提供了有关如何为互联移动解决方案开发和部署模块化服务的指导,这些解决方案可用于实现与 AWS 物联网同等的功能 FleetWise。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用状态模板激活和停用状态数据收集

重要

目前对某些 AWS 物联网 FleetWise 功能的访问受到限制。有关更多信息,请参阅 AWS AWS 物联网中的区域和功能可用性 FleetWise

以下各节介绍如何使用状态模板激活和停用数据提取。 AWS CLI

重要

在开始之前,请确保您已经创建了状态模板,并将其及其更新策略与车辆相关联。

您必须激活状态模板,这样 Edge Agent 才能向云端发送信号更新。

要使用状态模板执行这些操作,请先创建命令资源,然后在车辆上开始执行命令。以下部分介绍如何使用此 API 以及如何激活和停用数据提取。

使用 CreateCommand API

在 “AWS-IoTFleetwise” 命名空间中创建命令资源,并在为状态模板创建或发送命令资源时使用以下参数:

  • $stateTemplate.name— 要对其执行操作的状态模板的名称。必须先将状态模板应用于车辆,然后才能执行操作。有关更多信息,请参阅 将物 AWS 联网 FleetWise 状态模板与车辆关联

  • $stateTemplate.operation— 要对状态模板执行的操作。为此参数使用以下值之一:

    • activate— Edge Agent 开始根据stateTemplateUpdateStrategy您在将状态模板应用于车辆时指定的(变更或定期)向云端发送信号更新。有关更多信息,请参阅 将物 AWS 联网 FleetWise 状态模板与车辆关联

      此外,您可以定义自动状态模板停用时间,以便在指定时间段后停止更新。如果未提供自动停用时间,则状态模板将继续发送更新,直到发出停用呼叫。

      收到activate命令后,设备应立即根据更新策略发送状态模板中指定的信号。 AWS 物联网 FleetWise 建议,当设备收到激活命令时,它发送的第一条消息应包含状态模板中所有信号的快照。后续消息应根据更新策略发送。

    • deactivate— 边缘代理停止向云端发送信号更新。

    • fetchSnapshot— 无论stateTemplateUpdateStrategy您在将状态模板应用于车辆时指定了什么,Edge Agent 都会发送状态模板中定义的信号的一次性快照。

  • (可选)$stateTemplate.deactivateAfterSeconds-状态模板在指定时间后自动停用。只有当参数的值为 “激活” 时,才能使用$stateTemplate.operation此参数。如果未指定此参数,或者此参数的值为 0,则 Edge Agent 会一直向云端发送信号更新,直到收到状态模板的 “停用” 操作。状态模板永远不会自动停用。

    最小值:0,最大值:4294967295。

注意
  • API 会根据已处于活动状态的模板的激活请求返回成功。

  • 针对已处于停用状态的模板发出的停用请求,API 会返回成功。

  • 您最近在状态模板上提出的请求是生效的请求。例如,如果您请求在一小时内停用状态模板,然后再次请求在四小时内停用该模板,则四小时的停用将生效,因为这是最新的请求。

重要

在以下任何一种情况下都可能发生验证异常:

  • 提供了一个状态模板,该模板不ASSOCIATED包含在车辆上。

  • 有人请求激活状态模板,但该模板尚未出现在车辆DEPLOYED上。

  • 有人向状态模板发出了请求,但它在车辆DELETED上。

示例:激活状态模板

要激活状态模板,请先创建一个命令资源。然后,您可以向要激活状态模板的车辆发送以下命令。此示例说明如何在创建命令时为参数指定默认值。这些参数及其值用于启动命令执行以激活状态模板。

  1. 创建命令资源

    必须先创建命令资源,然后才能向车辆发送命令。向车辆发送命令时,您可以为必填参数指定替代值。有关更多信息,请参阅 创建命令资源

    重要

    $stateTemplate.name并且必须以字符串数据类型提供$stateTemplate.operation参数。如果提供了任何其他数据类型,或者缺少这两个参数中的任何一个,则命令执行失败并出现验证异常。必须将$stateTemplate.deactivateAfterSeconds参数作为Long数据类型提供。

    aws iot create-command \ --description "This command activates a state template on a vehicle" --command-id ActivateStateTemplate \ --display-name "Activate State Template" \ --namespace AWS-IoTFleetWise \ --mandatory-parameters '[ { "name": "$stateTemplate.name", "defaultValue": {"S": "ST123"} }, { "name": "$stateTemplate.operation", "defaultValue": {"S": "activate"} }, { "name": "$stateTemplate.deactivateAfterSeconds", "defaultValue": {"L": "120"} } ]'
  2. 开始在车辆上执行命令

    创建命令后,将命令发送到车辆。如果您在创建命令资源时没有为必填参数指定值,则必须立即指定它们。有关更多信息,请参阅 发送命令 (AWS CLI)

    重要

    确保使用特定于账户的 AWS IoT 任务数据平面 API 端点进行 API 操作。

    aws iot-jobs-data start-command-execution \ --endpoint-url <endpoint-url> \ --command-arn arn:aws:iot:region:111122223333:command/ActivateStateTemplate \ --target-arn arn:aws:iot:region:111122223333:thing/<VEHICLE_NAME>
  3. 检索状态模板操作的状态

    开始执行命令后,您可以使用 GetCommandExecution API 来检索状态模板。

    aws iot get-command-execution --execution-id <EXECUTION_ID>

示例:停用状态模板

要停用状态模板,请先创建一个命令资源。然后,您可以向要停用状态模板的车辆发送以下命令。此示例说明如何在创建命令时为参数指定默认值。这些参数及其值将在开始执行命令时使用,以停用状态模板。

  1. 创建命令资源

    必须先创建命令资源,然后才能向车辆发送命令。向车辆发送命令时,您可以为必填参数指定替代值。有关更多信息,请参阅 创建命令资源

    aws iot create-command \ --description "This command deactivates a state template on a vehicle" --command-id DeactivateStateTemplate \ --display-name "Deactivate State Template" \ --namespace AWS-IoTFleetWise \ --mandatory-parameters '[ { "name": "$stateTemplate.name", "defaultValue": {"S": "ST123"} }, { "name": "$stateTemplate.operation", "defaultValue": {"S": "deactivate"} } ]'
  2. 开始在车辆上执行命令

    创建命令后,将命令发送到车辆。如果您在创建命令资源时没有为必填参数指定值,则必须立即指定它们。有关更多信息,请参阅 发送命令 (AWS CLI)

    aws iot-jobs-data start-command-execution \ --endpoint-url <endpoint-url> \ --command-arn arn:aws:iot:region:111122223333:command/DeactivateStateTemplate \ --target-arn arn:aws:iot:region:111122223333:thing/<VEHICLE_NAME>
  3. 检索状态模板操作的状态

    开始执行命令后,您可以使用 GetCommandExecution API 来检索状态模板。

    aws iot get-command-execution --execution-id <EXECUTION_ID>