

AWS FleetWise 物联网不再向新客户开放。现有的 AWS 物联网 FleetWise 客户可以继续使用该服务。[上的《互联移动指南》 AWS提供了有关如何为](https://aws.amazon.com/solutions/guidance/connected-mobility-on-aws/)互联移动解决方案开发和部署模块化服务的指导，这些解决方案可用于实现与 AWS 物联网同等的功能 FleetWise。

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

# 使用状态模板激活和停用状态数据收集
<a name="start-stop-data-ingestion"></a>

**重要**  
目前对某些 AWS 物联网 FleetWise 功能的访问受到限制。有关更多信息，请参阅 [AWS AWS 物联网中的区域和功能可用性 FleetWise](fleetwise-regions.md)。

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

**重要**  
在开始之前，请确保您已经创建了[状态模板](state-templates.md)，并将其及其更新策略与车辆相关联。

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

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

**Topics**
+ [使用 `CreateCommand` API](#start-stop-ingestion-create-command)
+ [示例：激活状态模板](#start-stop-ingestion-activate-template)
+ [示例：停用状态模板](#start-stop-ingestion-deactivate-template)

## 使用 `CreateCommand` API
<a name="start-stop-ingestion-create-command"></a>

在 “`AWS-IoTFleetwise`” 命名空间中创建命令资源，并在为状态模板创建或发送命令资源时使用以下参数：
+ `$stateTemplate.name`— 要对其执行操作的状态模板的名称。必须先将状态模板应用于车辆，然后才能执行操作。有关更多信息，请参阅 [将物 AWS 联网 FleetWise 状态模板与车辆关联](state-templates.md#apply-state-templates)。
+ `$stateTemplate.operation`— 要对状态模板执行的操作。为此参数使用以下值之一：
  + `activate`— Edge Agent 开始根据`stateTemplateUpdateStrategy`您在将状态模板应用于车辆时指定的（变更或定期）向云端发送信号更新。有关更多信息，请参阅 [将物 AWS 联网 FleetWise 状态模板与车辆关联](state-templates.md#apply-state-templates)。

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

    收到`activate`命令后，设备应立即根据更新策略发送状态模板中指定的信号。 AWS 物联网 FleetWise 建议，当设备收到激活命令时，它发送的第一条消息应包含状态模板中所有信号的快照。后续消息应根据更新策略发送。
  + `deactivate`— 边缘代理停止向云端发送信号更新。
  + `fetchSnapshot`— 无论`stateTemplateUpdateStrategy`您在将状态模板应用于车辆时指定了什么，Edge Agent 都会发送状态模板中定义的信号的一次性快照。
+ （可选）`$stateTemplate.deactivateAfterSeconds`-状态模板在指定时间后自动停用。只有当参数的值为 “激活” 时，才能使用`$stateTemplate.operation`此参数。如果未指定此参数，或者此参数的值为 0，则 Edge Agent 会一直向云端发送信号更新，直到收到状态模板的 “停用” 操作。状态模板永远不会自动停用。

  最小值：0，最大值：4294967295。

**注意**  
API 会根据已处于活动状态的模板的激活请求返回成功。
针对已处于停用状态的模板发出的停用请求，API 会返回成功。
您最近在状态模板上提出的请求是生效的请求。例如，如果您请求在一小时内停用状态模板，然后再次请求在四小时内停用该模板，则四小时的停用将生效，因为这是最新的请求。

**重要**  
在以下任何一种情况下都可能发生验证异常：  
提供了一个状态模板，该模板不`ASSOCIATED`包含在车辆上。
有人请求激活状态模板，但该模板尚未出现在车辆`DEPLOYED`上。
有人向状态模板发出了请求，但它在车辆`DELETED`上。

## 示例：激活状态模板
<a name="start-stop-ingestion-activate-template"></a>

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

1. 

**创建命令资源**

   必须先创建命令资源，然后才能向车辆发送命令。向车辆发送命令时，您可以为必填参数指定替代值。有关更多信息，请参阅 [创建命令资源](create-manage-remote-command-cli.md#create-remote-command-cli)。
**重要**  
`$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"}
       } 
   ]'
   ```

1. 

**开始在车辆上执行命令**

   创建命令后，将命令发送到车辆。如果您在创建命令资源时没有为必填参数指定值，则必须立即指定它们。有关更多信息，请参阅 [发送命令 (AWS CLI)](send-monitor-remote-command-cli.md#send-remote-command-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>}}
   ```

1. 

**检索状态模板操作的状态**

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

   ```
   aws iot get-command-execution --execution-id {{<EXECUTION_ID>}} 
   ```

## 示例：停用状态模板
<a name="start-stop-ingestion-deactivate-template"></a>

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

1. 

**创建命令资源**

   必须先创建命令资源，然后才能向车辆发送命令。向车辆发送命令时，您可以为必填参数指定替代值。有关更多信息，请参阅 [创建命令资源](create-manage-remote-command-cli.md#create-remote-command-cli)。

   ```
   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"}
       }    
   ]'
   ```

1. 

**开始在车辆上执行命令**

   创建命令后，将命令发送到车辆。如果您在创建命令资源时没有为必填参数指定值，则必须立即指定它们。有关更多信息，请参阅 [发送命令 (AWS CLI)](send-monitor-remote-command-cli.md#send-remote-command-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>}}
   ```

1. 

**检索状态模板操作的状态**

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

   ```
   aws iot get-command-execution  --execution-id {{<EXECUTION_ID>}} 
   ```