

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# コマンドの概念
<a name="remote-command-concepts-states"></a>

**重要**  
現在、特定の AWS IoT FleetWise 機能へのアクセスはゲートされています。詳細については、「[AWS AWS IoT FleetWise でのリージョンと機能の可用性](fleetwise-regions.md)」を参照してください。

コマンドは、クラウドからターゲットデバイスに送信される手順です。ターゲットデバイスは車両にすることができ、*AWS IoT モノ*レジストリにモノとして登録する必要があります。コマンドには、車両のアクチュエータが実行する必要があるアクションを定義するパラメータを含めることができます。その後、車両はコマンドとそのパラメータを解析し、それらを処理して対応するアクションを実行します。その後、コマンド実行のステータスでクラウドアプリケーションに応答します。

詳細なワークフローについては、「」を参照してください[車両とコマンド](remote-command-vehicles.md)。

**Topics**
+ [コマンドキーの概念](#remote-command-concepts)
+ [コマンド実行ステータス](#remote-command-execution-status-codes)

## コマンドキーの概念
<a name="remote-command-concepts"></a>

コマンド機能を使用するためのいくつかの重要な概念と、それが最後の既知の状態 (LKS) 状態テンプレートとどのように連携するかを以下に示します。

**コマンド**  
コマンドは、エンジンをオンにしたり、ウィンドウの位置を変更したりするなどのアクションを実行するために、物理的な車両に指示を送信するために使用できるエンティティです。特定のユースケースの一連のコマンドを事前定義することも、それらを使用して繰り返しのユースケースの再利用可能な設定を作成することもできます。たとえば、車両のドアをロックしたり、温度をリモートで変更したりするために、アプリで使用できるコマンドを設定できます。

**名前空間**  
コマンド機能を使用する場合は、コマンドの名前空間を指定する必要があります。 AWS IoT FleetWise でコマンドを作成するときは、名前空間`AWS-IoT-FleetWise`として を選択する必要があります。この名前空間を使用する場合は、車両でコマンドを実行するために使用されるパラメータを指定する必要があります。 AWS IoT Device Management 代わりに でコマンドを作成する場合は、代わりに `AWS-IoT`名前空間を使用する必要があります。詳細については、「 デ*AWS IoT Device Management ベロッパーガイド*」の[「 コマンド](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command.html)」を参照してください。

**コマンドの状態**  
作成するコマンドは使用可能な状態になります。つまり、車両でコマンド実行を開始するために使用できます。コマンドが古くなった場合は、そのコマンドを非推奨にすることができます。非推奨状態のコマンドの場合、既存のコマンド実行は完了するまで実行されます。コマンドを更新したり、新しい実行を実行したりすることはできません。新しく実行を送信するには、コマンドを復元して使用可能にする必要があります。  
コマンドが不要になった場合は削除することもできます。コマンドを削除対象としてマークすると、コマンドが最大タイムアウトの 24 時間より長い期間非推奨になっている場合、コマンドはすぐに削除されます。コマンドが非推奨になっていない場合、または非推奨状態にある期間が最大タイムアウト期間より短い場合、そのコマンドは [保留中の削除] の状態になります。コマンドは 24 時間後にアカウントから自動的に削除されます。

**パラメータ**  
コマンドを作成するときは、オプションで、コマンドの実行時にターゲット車両が実行するパラメータを指定できます。作成するコマンドは再利用可能な設定であり、複数のコマンド実行を車両に送信して同時に実行するために使用できます。または、実行時にのみパラメータを指定し、コマンドを作成して車両に送信するワンタイムオペレーションを実行することもできます。

**ターゲット車両**  
コマンドを実行する場合は、コマンドを受信して特定のアクションを実行するターゲット車両を指定する必要があります。ターゲット車両はすでに*モノ*として登録されている必要があります AWS IoT。コマンドを車両に送信すると、指定したパラメータと値に基づいてコマンドのインスタンスの実行が開始されます。

**アクチュエータ**  
コマンドを実行する場合は、コマンドを受信する車両のアクチュエータと、実行するアクションを決定する値を指定する必要があります。オプションでアクチュエータのデフォルト値を設定して、不正確なコマンドを送信しないようにできます。たとえば、コマンドが誤ってドアのロックを解除しないように、ドアロックアクチュエータ`LockDoor`にデフォルト値の を使用できます。アクチュエータの一般的な情報については、「」を参照してください[主要なコンセプト](how-iotfleetwise-works.md#key-concepts)。

**データ型サポート**  
コマンド機能に使用されるアクチュエータでは、次のデータ型がサポートされています。  
配列は、テレマティクスデータ、コマンド、または最後の既知の状態 (LKS) ではサポートされていません。配列データ型は、ビジョンシステムデータにのみ使用できます。
+ 浮動小数点タイプ。次のタイプがサポートされます。
  + 浮動小数点数 (32 ビット)
  + ダブル (64 ビット)
+ 整数 (署名付きと署名なしの両方）。次の整数型がサポートされています。
  + int8 および uint8
  + int16 および uint16
  + int32 および uint32
+ ロング。次のロングタイプがサポートされています。
  + ロング (int64)
  + 符号なしロング (uint64)
+ String
+ ブール値

**コマンドの実行**  
コマンド実行は、ターゲットデバイスで実行されるコマンドのインスタンスです。車両は、コマンドの作成時またはコマンド実行の開始時に指定したパラメータを使用してコマンドを実行します。その後、車両は指定されたオペレーションを実行し、実行のステータスを返します。  
特定の車両に対して、複数のコマンドを同時に実行できます。各車両に対して実行できる同時実行の最大数については、[AWS IoT Device Management 「 コマンドクォータ](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#commands-limits)」を参照してください。

**Last known state (LKS) 状態テンプレート**  
状態テンプレートは、車両所有者が車両の状態を追跡するメカニズムを提供します。車両の最後の既知の状態 (LKS) をほぼリアルタイムでモニタリングするには、状態テンプレートを作成して車両に関連付けることができます。  
コマンド機能を使用すると、状態データの収集と処理に使用できる「オンデマンド」オペレーションを実行できます。たとえば、現在の車両状態を 1 回リクエスト (フェッチ) したり、以前にデプロイされた LKS 状態テンプレートをアクティブ化または非アクティブ化して、車両データのレポートを開始または停止したりできます。状態テンプレートでコマンドを使用する方法を示す例については、「」を参照してください[コマンドの使用シナリオ](remote-command-use-cases.md)。

## コマンド実行ステータス
<a name="remote-command-execution-status-codes"></a>

コマンド実行を開始すると、車両は実行のステータスを発行し、実行に関する追加情報としてステータスの理由を指定できます。以下のセクションでは、さまざまなコマンド実行ステータスとステータスコードについて説明します。

**Topics**
+ [コマンド実行ステータスの理由コードと説明](#remote-command-execution-status-reason-codes)
+ [コマンド実行ステータスとステータスコード](#remote-command-execution-status-codes)
+ [コマンド実行のタイムアウトステータス](#remote-command-execution-status-timeout)

### コマンド実行ステータスの理由コードと説明
<a name="remote-command-execution-status-reason-codes"></a>

コマンド実行ステータスの更新を報告するには、 *AWS IoT Core デベロッパーガイド*で説明されている [コマンド予約トピック](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-commands)を使用して、車両は `UpdateCommandExecution` API を使用して更新されたステータス情報をクラウドに発行できます。ステータス情報をレポートする場合、デバイスは、 `StatusReason` オブジェクトを使用して各コマンド実行のステータス、および オブジェクト`reasonDescription`に含まれるフィールド`reasonCode`と に関する追加のコンテキストを提供できます。

### コマンド実行ステータスとステータスコード
<a name="remote-command-execution-status-codes"></a>

次の表は、さまざまなコマンド実行ステータスコードと、コマンド実行が移行できる許可されたステータスを示しています。また、コマンド実行が「終了」かどうか (つまり、それ以上のステータスの更新は予定されていない）、変更が車両またはクラウドによって開始されたかどうか、さまざまな事前定義されたステータスコード、およびそれらがクラウドによって報告されたステータスにどのようにマッピングされるかも表示されます。
+ が事前定義されたステータスコードと `statusReason` オブジェクト AWS IoT FleetWise を使用する方法については、*「 Edge Agent for AWS IoT FleetWise ソフトウェアドキュメント*」の[「コマンドステータス](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/include/aws/iotfleetwise/ICommandDispatcher.h)」を参照してください。
+ ターミナル実行と非ターミナル実行、およびステータス間の遷移の詳細については、「 デ*AWS IoT Core ベロッパーガイド*」の[「コマンド実行ステータス](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-concepts.html#iot-command-execution-status)」を参照してください。


**コマンド実行のステータスと開始元**  

| コマンド実行ステータス | 説明 | 開始元はデバイスかクラウドか | 実行の終了かどうか | 許可されたステータスの移行 | 事前定義されたステータスコード | 
| --- | --- | --- | --- | --- | --- | 
| CREATED | コマンドの実行を開始する API リクエスト (StartCommandExecution API) が成功すると、コマンドの実行ステータスは に変わりますCREATED。 | Cloud | いいえ |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html)  | なし | 
| IN\$1PROGRESS | 車両がコマンドの実行を開始すると、レスポンストピックにメッセージを発行してステータスを に更新できますIN\$1PROGRESS。 | デバイス | いいえ |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html)  | COMMAND\$1STATUS\$1COMMAND\$1IN\$1PROGRESS | 
| SUCCEEDED | 車両がコマンドを正常に処理し、実行を完了すると、レスポンストピックにメッセージを発行してステータスを に更新できますSUCCEEDED。 | デバイス | はい | 該当しない | COMMAND\$1STATUS\$1SUCCEEDED | 
| FAILED | 車両がコマンドの実行に失敗すると、レスポンストピックにメッセージを発行してステータスを に更新できますFAILED。 | デバイス | はい | 該当しない | COMMAND\$1STATUS\$1EXECUTION\$1FAILED | 
| REJECTED | 車両がコマンドの受け入れに失敗した場合、レスポンストピックにメッセージを発行してステータスを に更新できますREJECTED。 | デバイス | はい | 該当しない | なし | 
| TIMED\$1OUT |  コマンドの実行ステータスは、次のいずれか`TIMED_OUT`の理由で に変わる可能性があります。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html) このステータスの詳細については、「」を参照してください[コマンド実行のタイムアウトステータス](#remote-command-execution-status-timeout)。  | デバイスとクラウド | いいえ |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html)  | COMMAND\$1STATUS\$1EXECUTION\$1TIMEOUT | 

### コマンド実行のタイムアウトステータス
<a name="remote-command-execution-status-timeout"></a>

コマンド実行タイムアウトは、クラウドとデバイスの両方で報告できます。コマンドがデバイスに送信されると、タイマーが開始されます。指定した期間内にデバイスから応答を受信しなかった場合、クラウドは`TIMED_OUT`ステータスを報告します。この場合、 `TIMED_OUT`ステータスのコマンド実行は非ターミナルです。

デバイスは、このステータスを 、、 `SUCCEEDED` `FAILED`などのターミナルステータスに上書きできます`REJECTED`。コマンドの実行時にタイムアウトが発生したことを報告することもできます。この場合、コマンドの実行ステータスは のまま`TIMED_OUT`ですが、`StatusReason`オブジェクトのフィールドはデバイスによって報告された情報に基づいて更新されます。`TIMED_OUT` ステータスのコマンド実行がターミナルになりました。

詳細については、 デ*AWS IoT Core ベロッパーガイド*の[「コマンド実行タイムアウトに関する考慮事項](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-execution-start-monitor.html#iot-command-execution-timeout)」を参照してください。