

AWS IoT FleetWise 不再向新客戶開放。現有的 AWS IoT FleetWise 客戶可以繼續使用 服務。[上的連線行動性指南 AWS](https://aws.amazon.com/solutions/guidance/connected-mobility-on-aws/)提供如何為連線行動解決方案開發和部署模組化服務的指引，這些解決方案可用於實現與 AWS IoT FleetWise 同等的功能。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用狀態範本啟用和停用狀態資料收集
<a name="start-stop-data-ingestion"></a>

**重要**  
對特定 AWS IoT FleetWise 功能的存取目前受到鎖定。如需詳細資訊，請參閱[AWS AWS IoT 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` – 要在其中執行操作的狀態範本名稱。狀態範本必須套用至車輛，您才能執行 操作。如需詳細資訊，請參閱[將 an AWS IoT FleetWise 狀態範本與 車輛建立關聯](state-templates.md#apply-state-templates)。
+ `$stateTemplate.operation` – 要在狀態範本上執行的操作。針對此參數使用下列其中一個值：
  + `activate` – 當您將狀態範本套用至車輛時，Edge Agent 會根據`stateTemplateUpdateStrategy`您指定的 （變更中或定期） 開始傳送訊號更新至雲端。如需詳細資訊，請參閱[將 an AWS IoT FleetWise 狀態範本與 車輛建立關聯](state-templates.md#apply-state-templates)。

    此外，您可以定義自動狀態範本停用時間，在指定的期間之後停止更新。如果未提供自動停用時間，狀態範本會持續傳送更新，直到發出停用呼叫為止。

    一旦收到`activate`命令，裝置應根據更新策略傳送狀態範本中指定的訊號。 AWS IoT FleetWise 建議當裝置收到啟用命令時，其傳送的第一個訊息應包含狀態範本中所有訊號的快照。後續的訊息應根據更新策略傳送。
  + `deactivate` – Edge Agent 會停止傳送訊號更新至雲端。
  + `fetchSnapshot` – Edge Agent 會傳送狀態範本中定義的訊號的一次性快照`stateTemplateUpdateStrategy`，無論您在將狀態範本套用至車輛時指定的 為何。
+ （選用） `$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>}} 
   ```