

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Befehle
<a name="remote-commands"></a>

**Wichtig**  
Der Zugriff auf bestimmte AWS FleetWise IoT-Funktionen ist derzeit gesperrt. Weitere Informationen finden Sie unter [AWS Verfügbarkeit von Regionen und Funktionen im AWS Internet der Dinge FleetWise](fleetwise-regions.md).  
In dieser Dokumentation wird beschrieben, wie Sie die [Befehlsfunktion für AWS IoT](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html#commands-iotfw-namespace) verwenden FleetWise. Informationen zur Verwendung der Befehlsfunktion in AWS IoT Device Management finden Sie unter [Befehle](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command.html).  
Sie sind allein dafür verantwortlich, Befehle auf sichere und gesetzeskonforme Weise bereitzustellen. Weitere Informationen zu Ihren Pflichten finden Sie in den [AWS Servicebedingungen für AWS IoT Dienste](https://aws.amazon.com/service-terms/).

Verwenden Sie die Befehlsfunktion, um Befehle an einem Fahrzeug aus der Cloud auszuführen. Befehle zielen jeweils auf ein Gerät ab und können für Anwendungen mit niedriger Latenz und hohem Durchsatz verwendet werden, z. B. zum Abrufen der geräteseitigen Protokolle oder zum Initiieren einer Änderung des Gerätestatus.

Der *Befehl* ist eine Ressource, die von verwaltet wird. AWS IoT Device Management Er enthält wiederverwendbare Konfigurationen, die angewendet werden, wenn eine Befehlsausführung an das Fahrzeug gesendet wird. Sie können eine Reihe von Befehlen für bestimmte Anwendungsfälle vordefinieren oder sie verwenden, um wiederverwendbare Konfigurationen für wiederkehrende Anwendungsfälle zu erstellen. Sie können beispielsweise Befehle konfigurieren, die von einer App verwendet werden können, um die Tür eines Fahrzeugs zu verriegeln oder die Temperatur aus der Ferne zu ändern.

Mit der AWS IoT Befehlsfunktion können Sie:
+ Erstellen Sie eine Befehlsressource und verwenden Sie die Konfiguration erneut, um mehrere Befehle an Ihr Zielgerät zu senden und sie dann auf dem Gerät auszuführen.
+ Steuern Sie die Granularität, mit der jeder Befehl auf dem Gerät ausgeführt werden soll. Sie können beispielsweise ein Fahrzeug als Objekt bereitstellen und dann AWS IoT einen Befehl zum Ver- oder Entriegeln der Fahrzeugtüren senden.
+ Führen Sie mehrere Befehle gleichzeitig auf dem Zielgerät aus, ohne darauf zu warten, dass der vorherige Befehl abgeschlossen ist.
+ Aktivieren Sie Benachrichtigungen für Befehlsereignisse und rufen Sie die Status- und Ergebnisinformationen vom Gerät ab, während es den Befehl ausführt und wenn er abgeschlossen ist.

In den folgenden Themen erfahren Sie, wie Sie Befehle erstellen, senden, empfangen und verwalten.

**Topics**
+ [Befehlskonzepte](remote-command-concepts-states.md)
+ [Fahrzeuge und Kommandos](remote-command-vehicles.md)
+ [Erstellen und Verwalten von Befehlen](create-manage-remote-command-cli.md)
+ [Starten und Überwachen von Befehlsausführungen](send-monitor-remote-command-cli.md)
+ [Beispiel: Verwendung von Befehlen zur Steuerung eines Fahrzeuglenkmodus (AWS CLI)](remote-command-tutorial.md)
+ [Szenarien zur Verwendung von Befehlen](remote-command-use-cases.md)

# Befehlskonzepte
<a name="remote-command-concepts-states"></a>

**Wichtig**  
Der Zugriff auf bestimmte AWS FleetWise IoT-Funktionen ist derzeit gesperrt. Weitere Informationen finden Sie unter [AWS Verfügbarkeit von Regionen und Funktionen im AWS Internet der Dinge FleetWise](fleetwise-regions.md).

Befehle sind Anweisungen, die von der Cloud an Ihr Zielgerät gesendet werden. Das Zielgerät kann ein Fahrzeug sein und es muss als *AWS IoT Ding* in der Ding-Registrierung registriert sein. Der Befehl kann Parameter enthalten, die eine Aktion definieren, die die Aktuatoren des Fahrzeugs ausführen müssen. Das Fahrzeug analysiert dann den Befehl und seine Parameter und verarbeitet sie, um die entsprechende Aktion auszuführen. Es antwortet dann auf die Cloud-Anwendung mit dem Status der Befehlsausführung.

Den detaillierten Arbeitsablauf finden Sie unter[Fahrzeuge und Kommandos](remote-command-vehicles.md).

**Topics**
+ [Befehle und wichtige Konzepte](#remote-command-concepts)
+ [Status der Befehlsausführung](#remote-command-execution-status-codes)

## Befehle und wichtige Konzepte
<a name="remote-command-concepts"></a>

Im Folgenden werden einige wichtige Konzepte für die Verwendung der Befehlsfunktion und ihre Funktionsweise mit Statusvorlagen für den letzten bekannten Status (LKS) beschrieben.

**Befehl**  
Ein Befehl ist eine Entität, mit der Sie Anweisungen an ein physisches Fahrzeug senden können, damit es Aktionen wie das Einschalten des Motors oder das Ändern der Fensterposition ausführt. Sie können eine Reihe von Befehlen für bestimmte Anwendungsfälle vordefinieren oder sie verwenden, um wiederverwendbare Konfigurationen für wiederkehrende Anwendungsfälle zu erstellen. Sie können beispielsweise Befehle konfigurieren, die von einer App verwendet werden können, um die Tür eines Fahrzeugs zu verriegeln oder die Temperatur aus der Ferne zu ändern.

**Namespace**  
Wenn Sie die Befehlsfunktion verwenden, müssen Sie den Namespace für den Befehl angeben. Wenn Sie einen Befehl in AWS IoT erstellen FleetWise, müssen Sie ihn `AWS-IoT-FleetWise` als Ihren Namespace auswählen. Wenn Sie diesen Namespace verwenden, müssen Sie die Parameter angeben, die zur Ausführung des Befehls auf dem Fahrzeug verwendet werden. Wenn Sie stattdessen einen Befehl in erstellen möchten, müssen Sie AWS IoT Device Management stattdessen den `AWS-IoT` Namespace verwenden. Weitere Informationen finden Sie unter [Befehle](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command.html) im *AWS IoT Device Management Entwicklerhandbuch*.

**Befehlsstatus**  
Die Befehle, die Sie erstellen, befinden sich im Status „Verfügbar“, was bedeutet, dass sie verwendet werden können, um eine Befehlsausführung auf dem Fahrzeug zu starten. Wenn ein Befehl veraltet ist, können Sie ihn als veraltet markieren. Bei einem Befehl im Status „Veraltet“ werden bestehende Befehlsausführungen bis zum Abschluss ausgeführt. Sie können den Befehl nicht aktualisieren oder neue Ausführungen ausführen. Um neue Ausführungen zu senden, müssen Sie den Befehl wiederherstellen, damit er verfügbar wird.  
Sie können einen Befehl auch löschen, wenn er nicht mehr benötigt wird. Wenn Sie einen Befehl zum Löschen markieren und der Befehl für eine Dauer, die länger als das maximale Timeout von 24 Stunden ist, als veraltet gilt, wird der Befehl sofort gelöscht. Wenn der Befehl nicht veraltet ist oder für eine Dauer, die kürzer als das maximale Timeout ist, als veraltet gilt, befindet sich der Befehl im Status Ausstehende Löschung. Der Befehl wird nach 24 Stunden automatisch aus Ihrem Konto entfernt.

**Parameter**  
Bei der Erstellung eines Befehls können Sie optional die Parameter angeben, die das Zielfahrzeug bei der Ausführung des Befehls ausführen soll. Der Befehl, den Sie erstellen, ist eine wiederverwendbare Konfiguration und kann verwendet werden, um mehrere Befehlsausführungen an Ihr Fahrzeug zu senden und diese gleichzeitig auszuführen. Alternativ können Sie die Parameter auch nur zur Laufzeit angeben und einen einmaligen Vorgang ausführen, bei dem ein Befehl erstellt und an Ihr Fahrzeug gesendet wird.

**Zielfahrzeug**  
Wenn Sie den Befehl ausführen möchten, müssen Sie ein Zielfahrzeug angeben, das den Befehl empfängt und bestimmte Aktionen ausführt. Das Zielfahrzeug muss bereits als *Ding* bei registriert worden sein AWS IoT. Nachdem Sie den Befehl an das Fahrzeug gesendet haben, beginnt es mit der Ausführung einer Befehlsinstanz, die auf den von Ihnen angegebenen Parametern und Werten basiert.

**Aktuatoren**  
Wenn Sie den Befehl ausführen möchten, müssen Sie die Aktuatoren am Fahrzeug angeben, die den Befehl erhalten sollen, und deren Werte, die die auszuführenden Aktionen bestimmen. Sie können optional Standardwerte für die Aktuatoren konfigurieren, um das Senden ungenauer Befehle zu vermeiden. Sie können beispielsweise den Standardwert für einen Türverriegelungsaktuator verwenden, damit der Befehl die Türen nicht versehentlich entriegelt. `LockDoor` Allgemeine Informationen zu Aktuatoren finden Sie unter[Die wichtigsten Konzepte](how-iotfleetwise-works.md#key-concepts).

**Unterstützung von Datentypen**  
Die folgenden Datentypen werden für die Aktuatoren unterstützt, die für die Befehlsfunktion verwendet werden.  
Arrays werden für Telematikdaten, Befehle oder LKS (Last Known State) nicht unterstützt. Sie können den Array-Datentyp nur für Bildverarbeitungssystemdaten verwenden.
+ Fließkommatypen. Die folgenden Typen werden unterstützt.
  + Float (32 Bit)
  + Doppelt (64 Bit)
+ Ganzzahl (sowohl mit als auch ohne Vorzeichen). Die folgenden Integer-Typen werden unterstützt.
  + int8 und uint8
  + int16 und uint16
  + int32 und uint32
+ Lang. Die folgenden langen Typen werden unterstützt.
  + Lang (int64)
  + Long ohne Vorzeichen (uint64)
+ Zeichenfolge
+ Boolesch

**Ausführung von Befehlen**  
Eine Befehlsausführung ist eine Instanz eines Befehls, der auf einem Zielgerät ausgeführt wird. Das Fahrzeug führt den Befehl entweder mit den Parametern aus, die Sie bei der Erstellung des Befehls oder beim Start der Befehlsausführung angegeben haben. Das Fahrzeug führt dann die angegebenen Operationen aus und gibt den Status der Ausführung zurück.  
Für ein bestimmtes Fahrzeug können Sie mehrere Befehle gleichzeitig ausführen. [Informationen zur maximalen Anzahl gleichzeitiger Ausführungen, die Sie für jedes Fahrzeug ausführen können, finden Sie unter AWS IoT Device Management Befehlsquoten.](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html#commands-limits)

**Vorlagen für den Status des letzten bekannten Zustands (LKS)**  
Anhand von Vorlagen für Bundesstaaten können Fahrzeughalter den Zustand ihres Fahrzeugs nachverfolgen. Um den letzten bekannten Zustand (LKS) Ihrer Fahrzeuge nahezu in Echtzeit zu überwachen, können Sie Statusvorlagen erstellen und diese Ihren Fahrzeugen zuordnen.  
Mithilfe der Befehlsfunktion können Sie „On Demand“ -Operationen ausführen, die für die Erfassung und Verarbeitung von Zustandsdaten verwendet werden können. Sie können beispielsweise einmalig den aktuellen Fahrzeugstatus anfordern (Abrufen) oder zuvor bereitgestellte LKS-Statusvorlagen aktivieren oder deaktivieren, um die Meldung von Fahrzeugdaten zu starten oder zu beenden. Beispiele, die zeigen, wie Befehle mit Statusvorlagen verwendet werden, finden Sie unter. [Szenarien zur Verwendung von Befehlen](remote-command-use-cases.md)

## Status der Befehlsausführung
<a name="remote-command-execution-status-codes"></a>

Nachdem Sie mit der Befehlsausführung begonnen haben, kann Ihr Fahrzeug den Status der Ausführung veröffentlichen und die Gründe für den Status als zusätzliche Informationen zur Ausführung angeben. In den folgenden Abschnitten werden die verschiedenen Status der Befehlsausführung und die Statuscodes beschrieben.

**Topics**
+ [Status der Befehlsausführung, Grund, Code und Beschreibung](#remote-command-execution-status-reason-codes)
+ [Status und Statuscodes der Befehlsausführung](#remote-command-execution-status-codes)
+ [Status des Timeouts bei der Befehlsausführung](#remote-command-execution-status-timeout)

### Status der Befehlsausführung, Grund, Code und Beschreibung
<a name="remote-command-execution-status-reason-codes"></a>

Um Aktualisierungen des Status der Befehlsausführung zu melden, können Ihre Fahrzeuge die `UpdateCommandExecution` API verwenden, um die aktualisierten Statusinformationen in der Cloud zu veröffentlichen. Verwenden Sie dazu die [reservierten Themen für Befehle](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-commands), die im *AWS IoT Core Entwicklerhandbuch* beschrieben sind. Wenn Sie die Statusinformationen melden, können Ihre Geräte zusätzlichen Kontext über den Status der einzelnen Befehlsausführungen mithilfe des `StatusReason` Objekts sowie über die Felder `reasonCode` bereitstellen`reasonDescription`, die im Objekt enthalten sind.

### Status und Statuscodes der Befehlsausführung
<a name="remote-command-execution-status-codes"></a>

Die folgende Tabelle zeigt die verschiedenen Statuscodes für die Befehlsausführung und die zulässigen Status, zu denen eine Befehlsausführung übergehen kann. Außerdem wird angezeigt, ob eine Befehlsausführung „terminal“ erfolgt (d. h., es stehen keine weiteren Statusaktualisierungen bevor), ob die Änderung vom Fahrzeug oder der Cloud initiiert wurde, und welche verschiedenen vordefinierten Statuscodes vorliegen und wie sie den von der Cloud gemeldeten Status zugeordnet sind.
+ Informationen zur AWS IoT FleetWise Verwendung der vordefinierten Statuscodes und des `statusReason` Objekts finden Sie unter [Befehlsstatus](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/include/aws/iotfleetwise/ICommandDispatcher.h) in der * FleetWise Softwaredokumentation zu Edge Agent for AWS IoT*.
+ *Weitere Informationen zu Ausführungen über Terminals und ohne Terminal sowie zu den Übergängen zwischen den Status finden Sie unter [Status der Befehlsausführung](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-concepts.html#iot-command-execution-status) im AWS IoT Core Entwicklerhandbuch.*


**Status und Quelle der Befehlsausführung**  

| Status der Befehlsausführung | Description | Von Gerät/Cloud initiiert? | Ausführung im Terminal? | Zulässige Statusübergänge | Vordefinierte Statuscodes | 
| --- | --- | --- | --- | --- | --- | 
| CREATED | Wenn die API-Anfrage zum Starten der Ausführung des Befehls (StartCommandExecutionAPI) erfolgreich ist, ändert sich der Status der Befehlsausführung aufCREATED. | Cloud | Nein |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html)  | Keine | 
| IN\$1PROGRESS | Wenn das Fahrzeug mit der Ausführung des Befehls beginnt, kann es im Antwortthema eine Nachricht veröffentlichen, in der der Status aktualisiert wirdIN\$1PROGRESS. | Gerät | Nein |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html)  | COMMAND\$1STATUS\$1COMMAND\$1IN\$1PROGRESS | 
| SUCCEEDED | Wenn das Fahrzeug den Befehl erfolgreich verarbeitet und die Ausführung abgeschlossen hat, kann es eine Nachricht im Antwortthema veröffentlichen, um den Status zu aktualisieren. SUCCEEDED | Gerät | Ja | Nicht zutreffend | COMMAND\$1STATUS\$1SUCCEEDED | 
| FAILED | Wenn das Fahrzeug den Befehl nicht ausführen konnte, kann es eine Nachricht im Antwortthema veröffentlichen, um den Status zu aktualisierenFAILED. | Gerät | Ja | Nicht zutreffend | COMMAND\$1STATUS\$1EXECUTION\$1FAILED | 
| REJECTED | Wenn das Fahrzeug den Befehl nicht akzeptiert, kann es eine Nachricht im Antwortthema veröffentlichen, in der der Status aktualisiert wirdREJECTED. | Gerät | Ja | Nicht zutreffend | Keine | 
| TIMED\$1OUT |  Der Status der Befehlsausführung kann sich `TIMED_OUT` aus einem der folgenden Gründe auf ändern. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html) Weitere Hinweise zu diesem Status finden Sie unter[Status des Timeouts bei der Befehlsausführung](#remote-command-execution-status-timeout).  | Gerät und Cloud | Nein |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-concepts-states.html)  | COMMAND\$1STATUS\$1EXECUTION\$1TIMEOUT | 

### Status des Timeouts bei der Befehlsausführung
<a name="remote-command-execution-status-timeout"></a>

Ein Timeout bei der Befehlsausführung kann sowohl von der Cloud als auch vom Gerät gemeldet werden. Nachdem der Befehl an das Gerät gesendet wurde, startet ein Timer. Wenn innerhalb der angegebenen Dauer keine Antwort vom Gerät eingegangen ist, meldet die Cloud einen `TIMED_OUT` Status. In diesem Fall erfolgt die Befehlsausführung im `TIMED_OUT` Status nicht über ein Terminal.

Das Gerät kann diesen Status durch einen Terminalstatus ersetzen, z. B. `SUCCEEDED``FAILED`, oder`REJECTED`. Es kann auch melden, dass bei der Ausführung des Befehls ein Timeout aufgetreten ist. In diesem Fall bleibt der Status der Befehlsausführung unverändert, `TIMED_OUT` aber die Felder des `StatusReason` Objekts werden auf der Grundlage der vom Gerät gemeldeten Informationen aktualisiert. Die Befehlsausführung im `TIMED_OUT` Status wird jetzt zum Terminal.

Weitere Informationen finden Sie im *AWS IoT Core Entwicklerhandbuch* unter [Überlegungen zum Timeout bei der Befehlsausführung](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-execution-start-monitor.html#iot-command-execution-timeout).

# Fahrzeuge und Kommandos
<a name="remote-command-vehicles"></a>

**Wichtig**  
Der Zugriff auf bestimmte AWS FleetWise IoT-Funktionen ist derzeit gesperrt. Weitere Informationen finden Sie unter [AWS Verfügbarkeit von Regionen und Funktionen im AWS Internet der Dinge FleetWise](fleetwise-regions.md).  
Sie sind allein dafür verantwortlich, Befehle auf sichere und gesetzeskonforme Weise bereitzustellen.

So verwenden Sie die Befehlsfunktion:

1. Erstellen Sie zunächst eine Befehlsressource. Geben Sie optional die Parameter an, die die Informationen enthalten, die zur Ausführung des Befehls erforderlich sind.

1. Geben Sie das Zielfahrzeug an, das den Befehl erhalten und die angegebenen Aktionen ausführen soll.

1. Jetzt können Sie den Befehl auf dem Zielgerät ausführen und die Details zur Befehlsausführung überprüfen, um den Status abzurufen und CloudWatch Protokolle zur weiteren Behebung von Problemen verwenden.

In den folgenden Abschnitten wird der Arbeitsablauf zwischen Fahrzeugen und Befehlen veranschaulicht.

**Topics**
+ [Workflow-Übersicht](#remote-command-vehicles-overview)
+ [Arbeitsablauf bei Fahrzeugen](#iot-remote-command-devices-workflow)
+ [Arbeitsablauf für Befehle](#iot-remote-command-commands-workflow)
+ [(Optional) Befehle und Benachrichtigungen](#remote-command-notifications)

## Workflow-Übersicht
<a name="remote-command-vehicles-overview"></a>

Die folgenden Schritte bieten einen Überblick über den Befehlsablauf zwischen Ihren Fahrzeugen und Befehlen. Wenn Sie einen der HTTP-API-Befehle verwenden, wird die Anfrage mit Sigv4-Anmeldeinformationen signiert.

**Anmerkung**  
Mit Ausnahme der `StartCommandExecution` API-Operation verwenden alle Operationen, die über das HTTP-Protokoll ausgeführt werden, den Endpunkt der Steuerungsebene.

1. 

**Stellen Sie eine MQTT-Verbindung her und abonnieren Sie die Themen zu Befehlen**

   Um sich auf den Befehls-Workflow vorzubereiten, müssen die Geräte eine MQTT-Verbindung mit dem `iot:Data-ATS` Endpunkt aufbauen und das oben erwähnte Thema zur Befehlsanforderung abonnieren. Optional können Ihre Geräte auch die Antwortthemen „Akzeptierte Befehle“ und „Abgelehnte Befehle“ abonnieren.

1. 

**Erstellen Sie ein Fahrzeugmodell und eine Befehlsressource**

   Sie können jetzt mithilfe der API-Operationen und der `CreateCommand` Steuerungsebene ein Fahrzeug `CreateVehicle` und eine Befehlsressource erstellen. Die Befehlsressource enthält die Konfigurationen, die angewendet werden sollen, wenn der Befehl auf dem Fahrzeug ausgeführt wird.

1. 

**Starten Sie die Befehlsausführung auf dem Zielgerät**

   Starten Sie die Befehlsausführung auf dem Fahrzeug mithilfe der `StartCommandExecution` Datenebenen-API mit Ihrem kontospezifischen Endpunkt`iot:Jobs`. Die API veröffentlicht eine Protobuf-kodierte Nutzdatennachricht zum Thema der Befehlsanfrage.

1. 

**Aktualisieren Sie das Ergebnis der Befehlsausführung**

   Das Fahrzeug verarbeitet den Befehl und die empfangene Nutzlast und veröffentlicht dann das Ergebnis der Befehlsausführung mithilfe der `UpdateCommandExecution` API im Antwortthema. Wenn Ihr Fahrzeug die Antwortthemen akzeptierte und abgelehnte Befehle abonniert hat, erhält es eine Meldung, die angibt, ob die Antwort vom Cloud-Dienst akzeptiert oder abgelehnt wurde.

1. 

**(Optional) Rufen Sie das Ergebnis der Befehlsausführung ab**

   Um das Ergebnis der Befehlsausführung abzurufen, können Sie den API-Vorgang der `GetCommandExecution` Steuerungsebene verwenden. Nachdem Ihr Fahrzeug das Ergebnis der Befehlsausführung im Antwortthema veröffentlicht hat, gibt diese API die aktualisierten Informationen zurück.

1. 

**(Optional) Abonnieren und verwalten Sie Befehlsereignisse**

   Um Benachrichtigungen über den Status der Befehlsausführung zu erhalten, können Sie das Thema Befehlsereignisse abonnieren. Anschließend können Sie die API der `CreateTopicRule` Steuerungsebene verwenden, um die Daten der Befehlsereignisse an andere Anwendungen wie AWS Lambda Funktionen oder Amazon SQS weiterzuleiten und darauf aufbauend Anwendungen zu erstellen.

## Arbeitsablauf bei Fahrzeugen
<a name="iot-remote-command-devices-workflow"></a>

In den folgenden Schritten wird der Fahrzeug-Arbeitsablauf bei Verwendung der Befehlsfunktion detailliert beschrieben.

**Anmerkung**  
Die in diesem Abschnitt beschriebenen Operationen verwenden das MQTT-Protokoll.

1. 

**Stellen Sie eine MQTT-Verbindung her**

   Um Ihre Fahrzeuge auf die Verwendung der Befehlsfunktion vorzubereiten, müssen sie sich zunächst mit dem AWS IoT Core Message Broker verbinden. Ihr Fahrzeug muss in der Lage sein, die `iot:Connect` Aktion auszuführen, um eine Verbindung zum Message Broker herzustellen AWS IoT Core und eine MQTT-Verbindung mit diesem herzustellen. Verwenden Sie die `DescribeEndpoint` API oder den `describe-endpoint` CLI-Befehl AWS-Konto, um den Datenebenen-Endpunkt für Ihren zu finden, wie unten gezeigt.

   ```
   aws iot describe-endpoint --endpoint-type iot:Data-ATS
   ```

   Wenn Sie diesen Befehl ausführen, wird der kontospezifische Endpunkt der Datenebene zurückgegeben, wie unten gezeigt.

   ```
   account-specific-prefix.iot.region.amazonaws.com
   ```

1. 

**Abonnieren Sie das Thema „Befehle anfordern“**

   Nachdem eine Verbindung hergestellt wurde, können Ihre Geräte das Thema AWS IoT Commands MQTT Request abonnieren. Wenn Sie einen Befehl erstellen und die Befehlsausführung auf Ihrem Zielgerät starten, wird eine Protobuf-kodierte Nutzdatennachricht vom Message Broker unter dem Thema der Anfrage veröffentlicht. Ihr Gerät kann dann die Payload-Nachricht empfangen und den Befehl verarbeiten. In diesem Beispiel *`<DeviceID>`* ersetzen Sie es durch die eindeutige Kennung Ihres Zielfahrzeugs. Diese ID kann die eindeutige Kennung Ihres Fahrzeugs oder ein Objektname sein
**Anmerkung**  
Die Nutzdatennachricht, die an das Gerät gesendet wird, muss das Protobuf-Format verwenden.

   ```
   $aws/commands/things/<DeviceID>/executions/+/request/protobuf
   ```

1. 

**(Optional) Abonnieren Sie Themen zur Befehlsantwort**

   Optional können Sie diese Themen zur Befehlsantwort abonnieren, um eine Meldung zu erhalten, die angibt, ob der Cloud-Dienst die Antwort des Geräts akzeptiert oder abgelehnt hat.
**Anmerkung**  
Es ist optional, dass Ihre Fahrzeuge die Themen `/accepted` und `/rejected` Antworten abonnieren. Ihre Fahrzeuge erhalten diese Antwortnachrichten automatisch, auch wenn sie diese Themen nicht ausdrücklich abonniert haben.

   ```
   $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/accepted
   $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/rejected
   ```

1. 

**Aktualisieren des Ergebnisses einer Befehlsausführung**

   Das Zielfahrzeug verarbeitet dann den Befehl. Anschließend verwendet es die `UpdateCommandExecution` API, um das Ergebnis der Ausführung im folgenden MQTT-Antwortthema zu veröffentlichen.
**Anmerkung**  
Für ein bestimmtes Fahrzeug und die Ausführung eines bestimmten Befehls *<DeviceID>* müssen sie mit dem entsprechenden Feld im Anforderungsthema übereinstimmen, das das Gerät abonniert hat.

   ```
   $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf
   ```

   Die `UpdateCommandExecution` API ist ein API-Vorgang auf Datenebene über MQTT, der mit TLS authentifiziert ist.
   + Wenn der Cloud-Dienst das Ergebnis der Befehlsausführung erfolgreich verarbeitet hat, wird eine Nachricht im Thema MQTT Accepted veröffentlicht. Das akzeptierte Thema verwendet das folgende Format.

     ```
     $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/accepted
     ```
   + Wenn der Cloud-Dienst das Ergebnis der Befehlsausführung nicht verarbeiten konnte, wird eine Antwort auf das abgelehnte MQTT-Thema veröffentlicht. Das abgelehnte Thema verwendet das folgende Format.

     ```
     $aws/commands/things/<DeviceID>/executions/<ExecutionId>/response/protobuf/rejected
     ```

   Weitere Informationen zu dieser API und ein Beispiel finden Sie unter[Das Ergebnis der Befehlsausführung aktualisieren](send-monitor-remote-command-cli.md#update-remote-command-execution-cli).

## Arbeitsablauf für Befehle
<a name="iot-remote-command-commands-workflow"></a>

In den folgenden Schritten wird der Befehlsablauf detailliert beschrieben.

**Anmerkung**  
Die in diesem Abschnitt beschriebenen Operationen verwenden das HTTP-Protokoll.

1. 

**Registrieren Sie Ihr Fahrzeug**

   Nachdem Sie Ihr Fahrzeug für die Verwendung der Befehlsfunktion vorbereitet haben, können Sie Ihren Antrag vorbereiten, indem Sie Ihr Fahrzeug registrieren und dann einen Befehl erstellen, der an das Fahrzeug gesendet wird. Um das Fahrzeug zu registrieren, erstellen Sie mithilfe der API-Operation für die [https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_CreateVehicle.html](https://docs.aws.amazon.com/iot-fleetwise/latest/APIReference/API_CreateVehicle.html)Steuerungsebene eine Instanz eines Fahrzeugmodells (Modellmanifest). Weitere Informationen und Beispiele finden Sie unter [Fahrzeug erstellen](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/create-vehicle.html).

1. 

**Erstellen Sie einen Befehl**

   Verwenden Sie den API-Vorgang der [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html)HTTP-Steuerungsebene, um Befehle zu modellieren, die für das Fahrzeug gelten, auf das Sie abzielen. Geben Sie alle Parameter und Standardwerte an, die bei der Ausführung des Befehls verwendet werden sollen, und stellen Sie sicher, dass der `AWS-IoT-FleetWise` Namespace verwendet wird. Weitere Informationen und Beispiele für die Verwendung dieser API finden Sie unter[Erstellen Sie eine Befehlsressource](create-manage-remote-command-cli.md#create-remote-command-cli).

1. 

**Starten Sie die Befehlsausführung**

   Sie können jetzt den Befehl, den Sie auf dem Fahrzeug erstellt haben, mithilfe der API-Operation für die [https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_StartCommandExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_StartCommandExecution.html)Datenebene ausführen. AWS IoT Device Management ruft den Befehl und die Befehlsparameter ab und validiert die eingehende Anfrage. Anschließend ruft es die AWS IoT FleetWise API mit den erforderlichen Parametern auf, um die fahrzeugspezifische Nutzlast zu generieren. Die Nutzdaten werden dann AWS IoT Device Management über MQTT an das Befehlsanforderungsthema, das Ihr Gerät abonniert hat, an das Gerät gesendet. Weitere Informationen und Beispiele für die Verwendung dieser API finden Sie unter. [Senden Sie einen Befehl ()AWS CLI](send-monitor-remote-command-cli.md#send-remote-command-cli)

   ```
   $aws/commands/things/<DeviceID>/executions/+/request/protobuf
   ```
**Anmerkung**  
Wenn das Gerät offline war, als der Befehl aus der Cloud gesendet wurde und persistente MQTT-Sitzungen verwendet werden, wartet der Befehl beim Message Broker. Wenn das Gerät vor Ablauf des Timeouts wieder online ist und das Thema für die Befehlsanfrage abonniert hat, kann das Gerät den Befehl verarbeiten und das Ergebnis im Antwortthema veröffentlichen. Wenn das Gerät vor Ablauf des Timeouts nicht wieder online ist, kommt es bei der Befehlsausführung zu einem Timeout und die Payload-Meldung läuft ab.

1. 

**Rufen Sie die Befehlsausführung ab**

   Nachdem Sie den Befehl auf dem Gerät ausgeführt haben, verwenden Sie den API-Vorgang der [https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html)Steuerungsebene, um das Ergebnis der Befehlsausführung abzurufen und zu überwachen. Sie können die API auch verwenden, um zusätzliche Informationen zu den Ausführungsdaten abzurufen, z. B. wann sie zuletzt aktualisiert wurden, wann die Ausführung abgeschlossen wurde und welche Parameter angegeben wurden.
**Anmerkung**  
Um die aktuellsten Statusinformationen abzurufen, muss Ihr Gerät das Ergebnis der Befehlsausführung im Antwortthema veröffentlicht haben.

   Weitere Informationen und Beispiele für die Verwendung dieser API finden Sie unter[Holen Sie sich die Befehlsausführung](send-monitor-remote-command-cli.md#get-remote-command-execution-cli).

## (Optional) Befehle und Benachrichtigungen
<a name="remote-command-notifications"></a>

Sie können Befehlsereignisse abonnieren, um Benachrichtigungen zu erhalten, wenn sich der Status der Befehlsausführung ändert. In den folgenden Schritten erfahren Sie, wie Sie Befehlsereignisse abonnieren und anschließend verarbeiten.

1. 

**Erstellen einer Themenregel**

   Sie können das Thema Befehlsereignisse abonnieren und Benachrichtigungen erhalten, wenn sich der Status der Befehlsausführung ändert. Sie können auch eine Themenregel erstellen, um die vom Fahrzeug verarbeiteten Daten an andere Anwendungen wie AWS Lambda Funktionen weiterzuleiten. Sie können eine Themenregel entweder mithilfe der AWS IoT Konsole oder mithilfe der API-Operation auf der [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateTopicRule.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateTopicRule.html) AWS IoT Core Steuerungsebene erstellen. Weitere Informationen finden Sie unter [AWS IoT Regel erstellen](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-rule.html).

   Ersetzen Sie in diesem Beispiel `<CommandID>` durch die ID des Befehls, für den Sie Benachrichtigungen erhalten möchten, und `<CommandExecutionStatus>` durch den Status der Befehlsausführung.

   ```
   $aws/events/commandExecution/<CommandID>/<CommandExecutionStatus>
   ```
**Anmerkung**  
Um Benachrichtigungen für alle Befehle und den Status der Befehlsausführung zu erhalten, können Sie Platzhalterzeichen verwenden und das folgende Thema abonnieren.

   ```
   $aws/events/commandExecution/+/#
   ```

1. 

**Befehlsereignisse empfangen und verarbeiten**

   Wenn Sie im vorherigen Schritt eine Themenregel zum Abonnieren von Befehlsereignissen erstellt haben, können Sie die Push-Benachrichtigungen für Befehle verwalten, die Sie erhalten. Sie können optional auch darauf aufbauende Anwendungen erstellen, z. B. mit Amazon SQS AWS Lambda, Amazon SNS oder AWS Step Functions, indem Sie die Themenregel verwenden, die Sie erstellt haben.

Der folgende Code zeigt eine Beispiel-Payload für die Befehle, Ereignisse und Benachrichtigungen, die Sie erhalten werden.

```
{
    "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554",
    "status":"FAILED",
    "statusReason": {
         "reasonCode": "4",
         "reasonDescription": ""
    },
    "eventType": "COMMAND_EXECUTION",
    "commandArn":"arn:aws:iot:us-east-1:123456789012:command/0b9d9ddf-e873-43a9-8e2c-9fe004a90086",
    "targetArn":"arn:aws:iot:us-east-1:123456789012:thing/5006c3fc-de96-4def-8427-7eee36c6f2bd",
    "timestamp":1717708862107
}
```

# Erstellen und Verwalten von Befehlen
<a name="create-manage-remote-command-cli"></a>

**Wichtig**  
Der Zugriff auf bestimmte AWS FleetWise IoT-Funktionen ist derzeit gesperrt. Weitere Informationen finden Sie unter [AWS Verfügbarkeit von Regionen und Funktionen im AWS Internet der Dinge FleetWise](fleetwise-regions.md).

Sie können wiederverwendbare Fernaktionen konfigurieren oder einmalige, sofortige Anweisungen an Ihre Geräte senden. Wenn Sie diese Funktion verwenden, können Sie die Anweisungen angeben, die Ihre Geräte nahezu in Echtzeit ausführen können. Mit einem Befehl können Sie wiederverwendbare Fernaktionen für Ihr Zielfahrzeug konfigurieren. Nachdem Sie einen Befehl erstellt haben, können Sie eine Befehlsausführung starten, die auf ein bestimmtes Fahrzeug abzielt.

In diesem Thema wird gezeigt, wie Sie eine Befehlsressource mithilfe der AWS IoT Core API oder der erstellen und verwalten können AWS CLI. Es zeigt Ihnen, wie Sie die folgenden Aktionen auf einer Befehlsressource ausführen.

**Topics**
+ [Erstellen Sie eine Befehlsressource](#create-remote-command-cli)
+ [Ruft Informationen zu einem Befehl ab](#get-remote-command-cli)
+ [Befehle in Ihrem Konto auflisten](#list-remote-command-cli)
+ [Eine Befehlsressource aktualisieren oder als veraltet kennzeichnen](#update-remote-command-cli)
+ [Löschen Sie eine Befehlsressource](#delete-remote-command-cli)

## Erstellen Sie eine Befehlsressource
<a name="create-remote-command-cli"></a>

Sie können den API-Betrieb der [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html) AWS IoT Core Steuerungsebene oder die AWS FleetWise IoT-Konsole verwenden, um einen Befehl zu erstellen.

### Erstellen Sie einen Befehl (Konsole)
<a name="create-command-console"></a>

Sie können die AWS FleetWise IoT-Konsole verwenden, um einen Befehl zu erstellen.

**Um einen Befehl zu erstellen**

1. Öffnen Sie die [AWS FleetWise IoT-Konsole](https://console.aws.amazon.com/iotfleetwise).

1. Wählen Sie im Navigationsbereich **Befehle** aus.

1. Wählen Sie **Befehl erstellen aus**.

1. Geben Sie eine eindeutige Befehls-ID an, anhand derer Sie den Befehl identifizieren können, den Sie auf dem Fahrzeug ausführen möchten.

1. (Optional) Geben Sie optional einen Anzeigenamen und eine Beschreibung an.

1. (Optional) Wählen Sie den Aktuator und den Standardparameterwert aus. Parameter geben an, welche Aktionen das Zielfahrzeug nach Erhalt des Befehls ausführen kann. Wenn Sie keine Parameter hinzufügen, müssen Sie diese angeben, wenn Sie den Befehl ausführen.

1. Wählen Sie eine IAM-Rolle aus, die Berechtigungen zum Generieren der Nutzdaten für Befehle gewährt. Siehe Zugriff [kontrollieren](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/controlling-access.html#generate-command-payload).

1. Wählen Sie **den Befehl Erstellen**.

### Erstellen Sie einen Befehl (AWS CLI)
<a name="create-remote-command-example"></a>

Das folgende Beispiel zeigt, wie ein Befehl mit einem Parameter erstellt wird.

#### Überlegungen beim Erstellen eines Befehls
<a name="create-remote-command-considerations"></a>

Wenn Sie einen Befehl erstellen in AWS IoT FleetWise:
+ Sie müssen den angeben`roleArn`, der die Erlaubnis erteilt, Befehle auf Ihrem Fahrzeug zu erstellen und auszuführen. Weitere Informationen und Beispielrichtlinien, z. B. zur Aktivierung von KMS-Schlüsseln, finden Sie unter[Erteilen Sie die AWS IoT Device Management Berechtigung zum Generieren der Payload für Befehle mit AWS IoT FleetWise](controlling-access.md#generate-command-payload).
+ Sie müssen `AWS-IoT-FleetWise` als Namespace angeben.
+ Sie können das `mandatory-parameters` Feld überspringen und sie stattdessen zur Laufzeit angeben. Alternativ können Sie einen Befehl mit Parametern erstellen und optional Standardwerte für diese angeben. Wenn Sie Standardwerte angegeben haben, können Sie diese Werte zur Laufzeit verwenden oder sie überschreiben, indem Sie Ihre eigenen Werte angeben. Diese zusätzlichen Beispiele finden Sie unter[Szenarien zur Verwendung von Befehlen](remote-command-use-cases.md).
+ Sie können bis zu drei Name-Wert-Paare für das `mandatory-parameters` Feld angeben. Bei der Ausführung des Befehls auf dem Fahrzeug wird jedoch nur ein Name-Wert-Paar akzeptiert, und das `name` Feld muss den vollqualifizierten Namen mit dem Präfix verwenden. `$actuatorPath.`
+ *command-id*Ersetzen Sie den Befehl durch einen eindeutigen Bezeichner. Sie können UUID, alphanumerische Zeichen, „-“ und „\$1“ verwenden.
+ *role-arn*Ersetzen Sie es durch die IAM-Rolle, die Ihnen die Berechtigung erteilt, Befehle zu erstellen und auszuführen, z. B. `"arn:aws:iam:accountId:role/FwCommandExecutionRole"`
+ (Optional) *display-name* Ersetzen Sie den Befehl durch einen benutzerfreundlichen Namen und *description* eine aussagekräftige Beschreibung des Befehls.
+ Ersetzen Sie *name* und *value* des `mandatory-parameters` Objekts durch die erforderlichen Informationen für den Befehl, der gerade erstellt wird. Das `name` Feld ist der vollqualifizierte Name, wie er im Signalkatalog definiert ist, mit `$actuatorPath.` dem Präfix. Kann *\$1actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringMode* und `name` `value` kann beispielsweise ein boolescher Wert sein, der einen Lenkmodusstatus wie anzeigt. *\$1"B": false\$1*

```
aws iot create-command --command-id command-id \ 
    --role-arn role-arn \
    --description description \
    --display-name display-name \     
    --namespace "AWS-IoT-FleetWise" \
    --mandatory-parameters '[
        {
            "name": name, 
            "value": value
        }
   ]'
```

Die `CreateCommand` API-Operation gibt eine Antwort zurück, die die ID und den ARN (Amazon Resource Name) des Befehls enthält.

```
{
    "commandId": "HandsOffSteeringMode",
    "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/HandsOffSteeringMode"
}
```

## Ruft Informationen zu einem Befehl ab
<a name="get-remote-command-cli"></a>

Sie können den API-Vorgang der [https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommand.html) AWS IoT Core Steuerungsebene verwenden, um Informationen über eine Befehlsressource abzurufen.

Führen Sie den folgenden Befehl aus, um Informationen zu einer Befehlsressource abzurufen. *command-id*Ersetzen Sie ihn durch den Bezeichner, der bei der Erstellung des Befehls verwendet wurde.

```
aws iot get-command --command-id command-id
```

Die `GetCommand` API-Operation gibt eine Antwort zurück, die die folgenden Informationen enthält.
+ Die ID und der ARN (Amazon Resource Name) des Befehls.
+ Datum und Uhrzeit der Erstellung und letzten Aktualisierung des Befehls.
+ Der Befehlsstatus, der angibt, ob er für die Ausführung auf dem Fahrzeug verfügbar ist.
+ Alle Parameter, die Sie bei der Erstellung des Befehls angegeben haben.

```
{
    "commandId": "HandsOffSteeringMode",
    "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/HandsOffSteeringMode"",
    "namespace": "AWS-IoT-FleetWise",
    "mandatoryParameters":[
        {
            "name": "$actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringMode",
            "value": {"B": false }
        }
    ],
    "createdAt": "2024-03-23T11:24:14.919000-07:00",
    "lastUpdatedAt": "2024-03-23T11:24:14.919000-07:00",
    "deprecated": false,
    "pendingDeletion": false
}
```

## Befehle in Ihrem Konto auflisten
<a name="list-remote-command-cli"></a>

Sie können den API-Vorgang der [https://docs.aws.amazon.com/iot/latest/apireference/API_ListCommands.html](https://docs.aws.amazon.com/iot/latest/apireference/API_ListCommands.html) AWS IoT Core Steuerungsebene verwenden, um alle Befehle in Ihrem Konto aufzulisten, die Sie erstellt haben.

Führen Sie den folgenden Befehl aus, um Befehle in Ihrem Konto aufzulisten. Standardmäßig gibt die API Befehle zurück, die für beide Namespaces erstellt wurden. Um die Liste so zu filtern, dass nur Befehle angezeigt werden, für die erstellt wurden AWS IoT FleetWise, führen Sie den folgenden Befehl aus.

**Anmerkung**  
Sie können die Liste auch in aufsteigender oder absteigender Reihenfolge sortieren oder die Liste so filtern, dass nur Befehle angezeigt werden, die einen bestimmten Befehlsparameternamen haben.

```
aws iot list-commands --namespace "AWS-IoT-FleetWise"
```

Der `ListCommands` API-Vorgang gibt eine Antwort zurück, die die folgenden Informationen enthält.
+ Die ID und der ARN (Amazon Resource Name) der Befehle.
+ Datum und Uhrzeit der Erstellung und letzten Aktualisierung des Befehls.
+ Der Befehlsstatus, der angibt, ob die Befehle für die Ausführung auf dem Fahrzeug verfügbar sind.

## Eine Befehlsressource aktualisieren oder als veraltet kennzeichnen
<a name="update-remote-command-cli"></a>

Sie können den API-Betrieb der [https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_UpdateCommand.html) AWS IoT Core Steuerungsebene oder die AWS FleetWise IoT-Konsole verwenden, um eine Befehlsressource zu aktualisieren. Sie können den Anzeigenamen und die Beschreibung eines Befehls aktualisieren. Sie können einen Befehl auch als veraltet markieren, wenn er derzeit nicht verwendet wird.

**Anmerkung**  
Sie können die Namespace-Informationen oder die Parameter, die bei der Ausführung des Befehls verwendet werden sollen, nicht ändern.

### Aktualisieren Sie einen Befehl (Konsole)
<a name="update-command-console"></a>

**Einen Befehl aktualisieren**  
Um einen Befehl von der Konsole aus zu aktualisieren, rufen Sie die [Befehlsseite](https://console.aws.amazon.com/iotfleetwise/home#/commands) der AWS FleetWise IoT-Konsole auf und führen Sie die folgenden Schritte aus.

1. Wählen Sie den Befehl aus, den Sie aktualisieren möchten, und wählen Sie dann **Bearbeiten**.

1. Bearbeiten Sie die Befehlsdetails und wählen Sie dann **Änderungen speichern**.

**Verwerfen Sie einen Befehl als veraltet**  
Um einen Befehl aus der Konsole abzulehnen, rufen Sie die [Befehlsseite](https://console.aws.amazon.com/iotfleetwise/home#/commands) der AWS FleetWise IoT-Konsole auf und führen Sie die folgenden Schritte aus.

1. **Wählen Sie den Befehl aus, den Sie verwerfen möchten, und wählen Sie dann Veraltet aus.**

1. **Bestätigen Sie die veraltete Version und wählen Sie dann Veraltet aus.**

### Aktualisieren Sie einen Befehl ()AWS CLI
<a name="update-command-cli"></a>

**Einen Befehl aktualisieren**  
Führen Sie den folgenden Befehl aus, um eine Befehlsressource zu aktualisieren. *command-id*Ersetzen Sie ihn durch den Bezeichner des Befehls, den Sie aktualisieren möchten, und geben Sie das aktualisierte *display-name* und ein*description*.

```
aws iot update-command \ 
    --command-id command-id \ 
    --display-name display-name \ 
    --description description
```

Die `UpdateCommand` API-Operation gibt die folgende Antwort zurück.

```
{
    "commandId": "HandsOffSteeringMode",
    "deprecated": false,
    "lastUpdatedAt": "2024-05-09T23:16:51.370000-07:00"
}
```

**Verwerfen Sie einen Befehl**  
Sie missbilligen einen Befehl, wenn Sie ihn nicht mehr für Ihr Gerät verwenden möchten oder wenn er veraltet ist. Das folgende Beispiel zeigt, wie ein Befehl als veraltet markiert wird.

```
aws iot update-command \ 
    --command-id command-id \ 
    --deprecated
```

Die `UpdateCommand` API-Operation gibt eine Antwort zurück, die die ID und den ARN (Amazon Resource Name) des Befehls enthält.

```
{
    "commandId": "HandsOffSteeringMode",
    "deprecated": true,
    "lastUpdatedAt": "2024-05-09T23:16:51.370000-07:00"
}
```

Sobald ein Befehl veraltet ist, werden bestehende Befehlsausführungen auf dem Fahrzeug weiterlaufen, bis sie zum Terminal werden. Um neue Befehlsausführungen auszuführen, müssen Sie die `UpdateCommand` API verwenden, um den Befehl wiederherzustellen, sodass er verfügbar wird. *Weitere Informationen zum Verwerfen und Wiederherstellen eines Befehls sowie zu [diesbezüglichen Überlegungen finden Sie unter Eine Befehlsressource als veraltet markieren](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-deprecate) im Entwicklerhandbuch.AWS IoT Core *

## Löschen Sie eine Befehlsressource
<a name="delete-remote-command-cli"></a>

Sie können den API-Betrieb der [https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteCommand.html) AWS IoT Core Steuerungsebene oder die AWS FleetWise IoT-Konsole verwenden, um eine Befehlsressource zu löschen.

**Anmerkung**  
Löschvorgänge sind dauerhaft und können nicht rückgängig gemacht werden. Der Befehl wird dauerhaft aus Ihrem Konto entfernt.

### Lösche einen Befehl (Konsole)
<a name="delete-command-console"></a>

Um einen Befehl aus der Konsole zu löschen, rufen Sie die [Befehlsseite](https://console.aws.amazon.com/iotfleetwise/home#/commands) der AWS FleetWise IoT-Konsole auf und führen Sie die folgenden Schritte aus.

1. Wählen Sie den Befehl aus, den Sie löschen möchten, und wählen Sie dann **Löschen**.

1. Bestätigen Sie, dass Sie den Befehl löschen möchten, und wählen Sie dann **Löschen**.

### Löschen Sie einen Befehl (AWS CLI)
<a name="delete-command-cli"></a>

Führen Sie den folgenden Befehl aus, um eine Befehlsressource zu löschen. *command-id*Ersetzen Sie ihn durch den Bezeichner des Befehls, den Sie löschen möchten. Das folgende Beispiel zeigt, wie eine Befehlsressource gelöscht wird.

```
aws iot delete-command --command-id command-id
```

Wenn die Löschanforderung erfolgreich ist:
+ Wenn der Befehl für eine Dauer, die länger als das maximale Timeout von 24 Stunden ist, als veraltet gilt, wird der Befehl sofort gelöscht und es wird der `statusCode` HTTP-Wert 204 angezeigt.
+ Wenn der Befehl nicht veraltet ist oder für eine Dauer, die kürzer als das maximale Timeout ist, als veraltet gilt, befindet sich der Befehl in einem `pending deletion` Status und es wird ein HTTP-Wert von 202 angezeigt. `statusCode` Der Befehl wird nach Ablauf des maximalen Timeouts von 24 Stunden automatisch aus Ihrem Konto entfernt.

# Starten und Überwachen von Befehlsausführungen
<a name="send-monitor-remote-command-cli"></a>

**Wichtig**  
Der Zugriff auf bestimmte AWS FleetWise IoT-Funktionen ist derzeit gesperrt. Weitere Informationen finden Sie unter [AWS Verfügbarkeit von Regionen und Funktionen im AWS Internet der Dinge FleetWise](fleetwise-regions.md).

Nachdem Sie eine Befehlsressource erstellt haben, können Sie eine Befehlsausführung auf dem Zielfahrzeug starten. Sobald das Fahrzeug mit der Ausführung des Befehls beginnt, kann es damit beginnen, das Ergebnis der Befehlsausführung zu aktualisieren und Statusaktualisierungen und Ergebnisinformationen in den reservierten MQTT-Themen zu veröffentlichen. Sie können dann den Status der Befehlsausführung abrufen und den Status der Ausführungen in Ihrem Konto überwachen.

In diesem Thema wird gezeigt, wie Sie mithilfe der AWS CLI oder der AWS FleetWise IoT-Konsole einen Befehl an Ihr Fahrzeug senden können. Außerdem erfahren Sie, wie Sie den Status der Befehlsausführung überwachen und aktualisieren können.

**Topics**
+ [Das Ergebnis der Befehlsausführung aktualisieren](#update-remote-command-execution-cli)
+ [Holen Sie sich die Befehlsausführung](#get-remote-command-execution-cli)
+ [Listet die Befehlsausführungen in Ihrem Konto auf](#list-remote-command-execution-cli)
+ [Löscht die Ausführung eines Befehls](#delete-remote-command-execution-cli)

## Senden Sie einen Befehl (Konsole)
<a name="send-command-console"></a>

Um einen Befehl von der Konsole aus zu senden, rufen Sie die Seite [Fahrzeuge](https://console.aws.amazon.com/iotfleetwise/home#/vehicles) der AWS FleetWise IoT-Konsole auf und führen Sie die folgenden Schritte aus.

1. Wählen Sie das Fahrzeug aus, an das Sie einen Befehl senden möchten.

1. Wählen Sie **Befehl ausführen** aus.

1. Wählen Sie die Befehls-ID aus.

1. Geben Sie das Zeitlimit für die Befehlsausführung an und wählen Sie dann **Befehl ausführen** aus.

## Senden Sie einen Befehl ()AWS CLI
<a name="send-remote-command-cli"></a>

Sie können den API-Vorgang für die [https://docs.aws.amazon.com/iot/latest/apireference/API_iot_data_StartCommandExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_iot_data_StartCommandExecution.html) AWS IoT Datenebene verwenden, um einen Befehl an ein Fahrzeug zu senden. Das Fahrzeug leitet den Befehl dann an einen Middleware-Dienst für die Automobilindustrie weiter (z. B. SOME/IP (Scalable Service-Oriented Middleware over IP)) oder veröffentlicht ihn in einem Fahrzeugnetzwerk (z. B. eine CAN-Geräteschnittstelle (Controller Area Network)). Das folgende Beispiel verwendet die AWS CLI.

**Topics**
+ [Überlegungen beim Senden eines Befehls](#send-remote-command-considerations)
+ [Rufen Sie den kontospezifischen Endpunkt der Datenebene ab](#send-remote-command-endpoint)
+ [Senden Sie ein Befehlsbeispiel](#send-remote-command-example)

### Überlegungen beim Senden eines Befehls
<a name="send-remote-command-considerations"></a>

Wenn Sie die Ausführung eines Befehls starten in AWS IoT FleetWise:
+ Sie müssen AWS IoT etwas für das Fahrzeug bereitstellen. Weitere Informationen finden Sie unter [Bereitstellung von AWS FleetWise IoT-Fahrzeugen](provision-vehicles.md).
+ Sie müssen bereits einen Befehl mit dem Namespace `AWS-IoT-FleetWise` als Namespace erstellt und einen angegeben haben, der Ihnen `role-Arn` die Erlaubnis erteilt, Befehle in AWS IoT FleetWise zu erstellen und auszuführen. Weitere Informationen finden Sie unter [Erstellen Sie eine Befehlsressource](create-manage-remote-command-cli.md#create-remote-command-cli).
+ Sie können das `parameters` Feld überspringen, wenn Sie Standardwerte verwenden möchten, die bei der Erstellung des Befehls für die Parameter angegeben wurden. Wenn das bei der Erstellung `mandatory-parameters` nicht angegeben wurde oder wenn Sie Standardwerte überschreiben möchten, indem Sie Ihre eigenen Werte für die Parameter angeben, müssen Sie das `parameters` Feld angeben. Diese zusätzlichen Beispiele finden Sie unter[Szenarien zur Verwendung von Befehlen](remote-command-use-cases.md).
+ Sie können bis zu drei Name-Wert-Paare für das `mandatory-parameters` Feld angeben. Bei der Ausführung des Befehls auf dem Fahrzeug wird jedoch nur ein Name-Wert-Paar akzeptiert, und das `name` Feld muss den vollqualifizierten Namen mit dem Präfix verwenden. `$actuatorPath.`

### Rufen Sie den kontospezifischen Endpunkt der Datenebene ab
<a name="send-remote-command-endpoint"></a>

Bevor Sie den API-Befehl ausführen, müssen Sie die kontospezifische Endpunkt-URL für den Endpunkt abrufen. `iot:Jobs` Wenn Sie z. B. den folgenden Befehl ausführen:

```
aws iot describe-endpoint --endpoint-type iot:Jobs
```

Es wird die kontospezifische Endpunkt-URL zurückgegeben, wie in der folgenden Beispielantwort gezeigt.

```
{
    "endpointAddress": "<account-specific-prefix>.jobs.iot.<region>.amazonaws.com"
}
```

### Senden Sie ein Befehlsbeispiel
<a name="send-remote-command-example"></a>

Um einen Befehl an ein Fahrzeug zu senden, führen Sie den folgenden Befehl aus.
+ *command-arn*Ersetzen Sie durch den ARN für den Befehl, den Sie ausführen möchten. Sie können diese Informationen aus der Antwort des `create-command` CLI-Befehls abrufen.
+ *target-arn*Ersetzen Sie es durch den ARN für das Zielgerät oder die AWS IoT Sache, für die Sie den Befehl ausführen möchten.
**Anmerkung**  
Sie können den Ziel-ARN einer AWS IoT Sache (AWS FleetWise IoT-Fahrzeug) angeben. Dinggruppen und Flotten werden derzeit nicht unterstützt.
+ *endpoint-url*Ersetzen Sie es durch den kontospezifischen Endpunkt, den Sie in abgerufen haben[Rufen Sie den kontospezifischen Endpunkt der Datenebene ab](#send-remote-command-endpoint), mit dem Präfix z. `https://` B. `https://123456789012abcd.jobs.iot.ap-south-1.amazonaws.com`
+ Ersetzen Sie *name* und *value* durch das `mandatory-parameters` Feld, das Sie bei der Erstellung des Befehls mit der `create-command` CLI angegeben haben.

  Das `name` Feld ist der vollqualifizierte Name, wie er im Signalkatalog definiert ist, mit `$actuatorPath.` dem Präfix. Kann *\$1actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringMode* und `name` `value` kann beispielsweise ein boolescher Wert sein, der einen Lenkmodusstatus wie anzeigt. *\$1"B": false\$1*
+ (Optional) Sie können auch einen zusätzlichen Parameter angeben,. `executionTimeoutSeconds` Dieses optionale Feld gibt die Zeit in Sekunden an, innerhalb derer das Gerät mit dem Ausführungsergebnis antworten muss. Sie können das Timeout auf einen Höchstwert von 24 Stunden konfigurieren.

  Wenn die Befehlsausführung erstellt wurde, wird ein Timer gestartet. Wenn sich der Status der Befehlsausführung vor Ablauf des Timers nicht in einen Status ändert, der ihn zum Terminal macht, z. B. `SUCCEEDED` oder`FAILED`, ändert sich der Status automatisch zu`TIMED_OUT`.
**Anmerkung**  
Das Gerät kann auch einen `TIMED_OUT` Status melden oder diesen Status in einen Status wie`SUCCEEDED`, `FAILED` oder überschreiben`REJECTED`, und die Befehlsausführung wird zum Terminal. Weitere Informationen finden Sie unter [Status des Timeouts bei der Befehlsausführung](remote-command-concepts-states.md#remote-command-execution-status-timeout).

```
aws iot-jobs-data start-command-execution \ 
    --command-arn command-arn \ 
    --target-arn target-arn \
    --execution-timeout-seconds 30 \
    --endpoint-url endpoint-url \ 
    --parameters '[
        {
            "name": name, 
            "value": value
        }
   ]'
```

Die `StartCommandExecution` API-Operation gibt eine Befehlsausführungs-ID zurück. Sie können diese ID verwenden, um den Status der Befehlsausführung, die Details und den Verlauf der Befehlsausführung abzufragen.

```
{
    "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542"
 }
```

Nachdem Sie den Befehl ausgeführt haben, erhalten Ihre Geräte eine Benachrichtigung mit den folgenden Informationen. Das `issued_timestamp_ms` Feld entspricht der Uhrzeit, zu der die `StartCommandExecution` API aufgerufen wurde. Das `timeout_ms` entspricht dem Timeout-Wert, der beim Aufrufen der API mithilfe des `executionTimeoutSeconds` Parameters konfiguriert wurde. `StartCommandExecution`

```
timeout_ms: 9000000
issued_timestamp_ms: 1723847831317
```

## Das Ergebnis der Befehlsausführung aktualisieren
<a name="update-remote-command-execution-cli"></a>

Um den Status der Befehlsausführung zu aktualisieren, muss Ihr Gerät eine MQTT-Verbindung hergestellt und das folgende Thema zur Befehlsanfrage abonniert haben.

Ersetzen Sie in diesem Beispiel durch die eindeutige Kennung Ihres Zielgeräts, *`<device-id>`* bei der es sich um den Namen `VehicleId` oder den Namen der Sache handeln kann, und *`<execution-id>`* durch die Kennung für die Befehlsausführung.

**Anmerkung**  
Die Payload muss das Protobuf-Format verwenden.
Es ist für Ihre Geräte optional, die Themen `/accepted` und `/rejected` Antworten zu abonnieren. Ihre Geräte erhalten diese Antwortnachrichten auch dann, wenn sie sie nicht ausdrücklich abonniert haben.

```
// Request topic
$aws/devices/<DeviceID>/command_executions/+/request/protobuf

// Response topics (Optional)
$aws/devices/<DeviceID>/command_executions/<ExecutionId>/response/accepted/protobuf
$aws/devices/<DeviceID>/command_executions/<ExecutionId>/response/rejected/protobuf
```

Ihr Gerät kann eine Nachricht zum Thema Befehlsantwort veröffentlichen. Nach der Verarbeitung des Befehls wird eine protobuf-kodierte Antwort zu diesem Thema gesendet. Das *<DeviceID>* Feld muss mit dem entsprechenden Feld im Anforderungsthema übereinstimmen.

```
$aws/devices/<DeviceID>/command_executions/<ExecutionId>/response/<PayloadFormat>
```

Nachdem Ihr Gerät eine Antwort zu diesem Thema veröffentlicht hat, können Sie die aktualisierten Statusinformationen mithilfe der `GetCommandExecution` API abrufen. Der Status der Befehlsausführung kann einer der hier aufgeführten sein. 
+ `IN_PROGRESS`
+ `SUCCEEDED`
+ `FAILED`
+ `REJECTED`
+ `TIMED_OUT`

Beachten Sie, dass es sich bei der Ausführung eines Befehls in einem der Status `SUCCEEDED``FAILED`, und um `REJECTED` ein Terminal handelt und der Status vom Gerät gemeldet wird. Wenn ein Befehl terminalförmig ausgeführt wird, bedeutet dies, dass der Status oder die zugehörigen Felder nicht weiter aktualisiert werden. Ein `TIMED_OUT` Status kann vom Gerät oder der Cloud gemeldet werden. Wenn es von der Cloud gemeldet wird, kann das Gerät später eine Aktualisierung des Felds für den Statusgrund vornehmen.

Im Folgenden wird beispielsweise eine MQTT-Beispielnachricht gezeigt, die vom Gerät veröffentlicht wurde.

**Anmerkung**  
Für den Status der Befehlsausführung müssen Sie Folgendes sicherstellen, wenn Ihre Geräte das `statusReason` Objekt zum Veröffentlichen der Statusinformationen verwenden:  
Der `reasonCode` verwendet das Muster `[A-Z0-9_-]+` und es ist nicht länger als 64 Zeichen.
Das `reasonDescription` ist nicht länger als 1.024 Zeichen. Es können alle Zeichen außer Steuerzeichen wie Zeilenumbrüchen verwendet werden.

```
{
    "deviceId": "",
    "executionId": "",
    "status": "CREATED",
    "statusReason": {
        "reasonCode": "",
        "reasonDescription": ""
    }
}
```

Ein Beispiel, das zeigt, wie Sie den AWS IoT Core MQTT-Testclient verwenden können, um die Themen zu abonnieren und die Meldungen zur Befehlsausführung zu [sehen, finden Sie unter Befehlsaktualisierungen mit dem MQTT-Testclient](https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-execution-start-monitor.html#iot-remote-command-execution-update-mqtt) anzeigen im *AWS IoT Core Entwicklerhandbuch*.

## Holen Sie sich die Befehlsausführung
<a name="get-remote-command-execution-cli"></a>

Sie können den API-Vorgang der [https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_GetCommandExecution.html) AWS IoT Steuerungsebene verwenden, um Informationen über die Ausführung eines Befehls abzurufen. Sie müssen diesen Befehl bereits mithilfe der `StartCommandExecution` API-Operation ausgeführt haben.

Führen Sie den folgenden Befehl aus, um die Metadaten eines ausgeführten Befehls abzurufen.
+ *execution-id*Ersetzen Sie ihn durch die ID des Befehls. Sie können diese Informationen aus der Antwort des `start-command-execution` CLI-Befehls abrufen.
+ *target-arn*Ersetzen Sie es durch den ARN für das Zielfahrzeug AWS IoT oder Objekt, für das Sie den Befehl ausführen möchten.

```
aws iot get-command-execution --execution-id execution-id \ 
    --target-arn target-arn
```

Die `GetCommandExecution` API-Operation gibt eine Antwort zurück, die Informationen über den ARN der Befehlsausführung, den Ausführungsstatus und den Zeitpunkt enthält, zu dem der Befehl ausgeführt wurde und wann er abgeschlossen wurde. Der folgende Code zeigt eine Beispielantwort aus der API-Anfrage.

Um zusätzlichen Kontext zum Status der einzelnen Befehlsausführungen bereitzustellen, stellt die Befehlsfunktion ein `statusReason` Objekt bereit. Das Objekt enthält zwei Felder `reasonCode` und`reasonDescription`. Mithilfe dieser Felder können Ihre Geräte zusätzliche Informationen über den Status der Befehlsausführung bereitstellen. Diese Informationen überschreiben alle `reasonCode` Standardwerte`reasonDescription`, die aus der Cloud gemeldet werden.

Um diese Informationen zu melden, können Ihre Geräte die aktualisierten Statusinformationen in der Cloud veröffentlichen. Wenn Sie dann den Status der Befehlsausführung mithilfe der `GetCommandExecution` API abrufen, werden Ihnen die neuesten Statuscodes angezeigt.

**Anmerkung**  
Das `completedAt` Feld in der Ausführungsantwort entspricht dem Zeitpunkt, zu dem das Gerät einen Terminalstatus an die Cloud meldet. Im Fall eines `TIMED_OUT` Status wird dieses Feld nur gesetzt, wenn das Gerät einen Timeout meldet. Wenn der `TIMED_OUT` Status von der Cloud festgelegt wird, wird der `TIMED_OUT` Status nicht aktualisiert. Weitere Informationen zum Timeout-Verhalten finden Sie unter[Status des Timeouts bei der Befehlsausführung](remote-command-concepts-states.md#remote-command-execution-status-timeout).

```
{
    "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542",
    "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/LockDoor",
    "targetArn": "arn:aws:iot:ap-south-1:123456789012:thing/myFrontDoor",
    "status": "SUCCEEDED",
    "statusReason": {
        "reasonCode": "65536",
        "reasonDescription": "SUCCESS"
    },
    "createdAt": "2024-03-23T00:50:10.095000-07:00",
    "completedAt": "2024-03-23T00:50:10.095000-07:00",
    "Parameters": '{
         "$actuatorPath.Vehicle.Chassis.SteeringWheel.HandsOff.HandsOffSteeringMode":          
         { "B": true }
    }' 
}
```

## Listet die Befehlsausführungen in Ihrem Konto auf
<a name="list-remote-command-execution-cli"></a>

Verwenden Sie den HTTP-API-Vorgang der [https://docs.aws.amazon.com/iot/latest/apireference/API_ListCommandExecutions.html](https://docs.aws.amazon.com/iot/latest/apireference/API_ListCommandExecutions.html) AWS IoT Core Steuerungsebene, um alle Befehlsausführungen in Ihrem Konto aufzulisten. Das Beispiel verwendet das AWS CLI.

**Topics**
+ [Überlegungen beim Auflisten von Befehlsausführungen](#list-remote-command-considerations)
+ [Beispiel für Befehlsausführungen auflisten](#list-remote-command-example)

### Überlegungen beim Auflisten von Befehlsausführungen
<a name="list-remote-command-considerations"></a>

Im Folgenden sind einige Überlegungen zur Verwendung der `ListCommandExecutions` API aufgeführt.
+ Sie müssen mindestens das `targetArn` oder das angeben, `commandArn` je nachdem, ob Sie Ausführungen für einen bestimmten Befehl oder ein Zielfahrzeug auflisten möchten. Die API-Anforderung darf nicht leer sein und nicht beide Felder in derselben Anfrage enthalten.
+ Sie müssen nur die `startedTimeFilter` oder die `completedTimeFilter` Informationen angeben. Die API-Anforderung darf nicht leer sein und nicht beide Felder in derselben Anfrage enthalten. Sie können die `after` Felder `before` und des Objekts verwenden, um Befehlsausführungen aufzulisten, die innerhalb eines bestimmten Zeitraums entweder erstellt oder abgeschlossen wurden.
+ `before`Sowohl die `after` Felder als auch dürfen nicht größer als die aktuelle Uhrzeit sein. Wenn Sie keinen Wert angeben, entspricht das `before` Feld standardmäßig der aktuellen Uhrzeit und dem `after` Feld der aktuellen Uhrzeit — 6 Monate. Das heißt, je nach verwendetem Filter listet die API alle Ausführungen auf, die in den letzten sechs Monaten entweder erstellt oder abgeschlossen wurden.
+ Sie können den `sort-order` Parameter verwenden, um anzugeben, ob Sie die Ausführungen in aufsteigender Reihenfolge auflisten möchten. Standardmäßig werden die Ausführungen in absteigender Reihenfolge aufgeführt, wenn Sie dieses Feld nicht angeben.
+ Sie können die Befehlsausführungen nicht nach ihrem Status filtern, wenn Sie Befehlsausführungen für einen Befehl-ARN auflisten.

### Beispiel für Befehlsausführungen auflisten
<a name="list-remote-command-example"></a>

Das folgende Beispiel zeigt Ihnen, wie Sie Befehlsausführungen in Ihrem auflisten. AWS-Konto

Bei der Ausführung des Befehls müssen Sie angeben, ob die Liste so gefiltert werden soll, dass nur Befehlsausführungen angezeigt werden, die mit dem für ein bestimmtes Gerät erstellt wurden`targetArn`, oder Ausführungen für einen bestimmten Befehl, der mit dem angegeben wurde. `commandArn`

Ersetzen Sie in diesem Beispiel:
+ *`<target-arn>`*mit der Amazon-Ressourcennummer (ARN) des Geräts, für das Sie die Ausführung planen, z. `arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f` B.
+ *`<target-arn>`*mit der Amazon-Ressourcennummer (ARN) des Geräts, für das Sie die Ausführung planen, z. `arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f` B.
+ *`<after>`*mit der Zeit, nach der Sie die Ausführungen auflisten möchten, die erstellt wurden, zum Beispiel. `2024-11-01T03:00`

```
aws iot list-command-executions \ 
--target-arn <target-arn> \ 
--started-time-filter '{after=<after>}' \
--sort-order "ASCENDING"
```

Wenn Sie diesen Befehl ausführen, wird eine Antwort generiert, die eine Liste der von Ihnen erstellten Befehlsausführungen sowie die Uhrzeit enthält, zu der die Ausführung begonnen und abgeschlossen wurde. Es enthält auch Statusinformationen und das `statusReason` Objekt, das zusätzliche Informationen über den Status enthält.

```
{
    "commandExecutions": [
        {
            "commandArn": "arn:aws:iot:us-east-1:123456789012:command/TestMe002",
            "executionId": "b2b654ca-1a71-427f-9669-e74ae9d92d24",
            "targetArn": "arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f",
            "status": "TIMED_OUT",
            "createdAt": "2024-11-24T14:39:25.791000-08:00",
            "startedAt": "2024-11-24T14:39:25.791000-08:00"
        },
        {
            "commandArn": "arn:aws:iot:us-east-1:123456789012:command/TestMe002",
            "executionId": "34bf015f-ef0f-4453-acd0-9cca2d42a48f",
            "targetArn": "arn:aws:iot:us-east-1:123456789012:thing/b8e4157c98f332cffb37627f",
            "status": "IN_PROGRESS",
            "createdAt": "2024-11-24T14:05:36.021000-08:00",
            "startedAt": "2024-11-24T14:05:36.021000-08:00"
        }
    ]
}
```

## Löscht die Ausführung eines Befehls
<a name="delete-remote-command-execution-cli"></a>

Wenn Sie eine Befehlsausführung nicht mehr verwenden möchten, können Sie sie dauerhaft aus Ihrem Konto entfernen.

**Anmerkung**  
Eine Befehlsausführung kann nur gelöscht werden, wenn sie einen Terminalstatus wie `SUCCEEDED``FAILED`, oder erreicht hat`REJECTED`.

Das folgende Beispiel zeigt Ihnen, wie Sie eine Befehlsausführung mithilfe des `delete-command-execution` AWS CLI Befehls löschen. *`<execution-id>`*Ersetzen Sie es durch den Bezeichner der Befehlsausführung, die Sie löschen möchten. 

```
aws iot delete-command-execution --execution-id <execution-id>
```

Wenn die API-Anfrage erfolgreich ist, generiert die Befehlsausführung den Statuscode 200. Sie können die `GetCommandExecution` API verwenden, um zu überprüfen, ob die Befehlsausführung in Ihrem Konto nicht mehr vorhanden ist.

# Beispiel: Verwendung von Befehlen zur Steuerung eines Fahrzeuglenkmodus (AWS CLI)
<a name="remote-command-tutorial"></a>

**Wichtig**  
Der Zugriff auf bestimmte AWS FleetWise IoT-Funktionen ist derzeit gesperrt. Weitere Informationen finden Sie unter [AWS Verfügbarkeit von Regionen und Funktionen im AWS Internet der Dinge FleetWise](fleetwise-regions.md).

Das folgende Beispiel zeigt Ihnen, wie Sie die Befehlsfunktion mithilfe von verwenden AWS CLI. In diesem Beispiel wird ein AWS IoT FleetWise Fahrzeug als Zielgerät verwendet, um zu zeigen, wie Sie einen Befehl zur Fernsteuerung des Lenkmodus senden können.

**Topics**
+ [Überblick über das Beispiel für den Fahrzeuglenkmodus](#iot-remote-command-tutorial-overview)
+ [Voraussetzungen](#iot-remote-command-tutorial-prereq)
+ [IAM-Richtlinie für die Verwendung von Remote-Befehlen](#remote-command-policy)
+ [AWS IoT Befehle ausführen (AWS CLI)](#iot-remote-command-tutorial-run)
+ [Bereinigen](#remote-command-tutorial-clean)

## Überblick über das Beispiel für den Fahrzeuglenkmodus
<a name="iot-remote-command-tutorial-overview"></a>

In diesem Beispiel werden Sie:

1. Erstellen Sie eine Befehlsressource für den Vorgang, mit `create-command` AWS CLI dem Sie den Lenkmodus des Fahrzeugs ändern können.

1. Rufen Sie Informationen über den Befehl ab, z. B. den Zeitpunkt, zu dem er erstellt oder zuletzt aktualisiert wurde, mit dem `get-command` AWS CLI.

1. Senden Sie den Befehl `start-command-execution` AWS CLI mit dem Lenkmodus als obligatorischen Parameter an das Fahrzeug. Dieser wird dann auf dem Gerät ausgeführt.

1. Rufen Sie das Ergebnis der Befehlsausführung mit dem ab `get-command-execution` AWS CLI. Sie können überprüfen, wann die Ausführung abgeschlossen ist, und zusätzliche Details abrufen, z. B. das Ausführungsergebnis und die Zeit, die bis zur Ausführung des Befehls benötigt wurde.

1. Führen Sie Bereinigungsaktivitäten durch, indem Sie alle Befehle und Befehlsausführungen entfernen, die Sie nicht mehr verwenden möchten.

## Voraussetzungen
<a name="iot-remote-command-tutorial-prereq"></a>

Bevor Sie dieses Beispiel ausführen:
+ Stellen Sie Ihr AWS IoT FleetWise Fahrzeug als Objekt AWS IoT in der AWS IoT Registrierung bereit. Sie müssen Ihrem Ding auch ein Zertifikat hinzufügen und es aktivieren und Ihrem Ding eine Richtlinie beifügen. Ihr Gerät kann sich dann mit der Cloud verbinden und die Befehle ausführen. Weitere Informationen finden Sie unter [Fahrzeuge bereitstellen](https://docs.aws.amazon.com/iot-fleetwise/latest/developerguide/provision-vehicles.html).
+ Erstellen Sie einen IAM-Benutzer und eine IAM-Richtlinie, die Ihnen die Erlaubnis erteilt, die API-Operationen für die Verwendung von Befehlen auszuführen, wie unter gezeigt. [IAM-Richtlinie für die Verwendung von Remote-Befehlen](#remote-command-policy)

## IAM-Richtlinie für die Verwendung von Remote-Befehlen
<a name="remote-command-policy"></a>

Die folgende Tabelle zeigt ein Beispiel für eine IAM-Richtlinie, die Zugriff auf alle API-Operationen der Steuerungsebene und der Datenebene für die Befehlsfunktion gewährt. Der Benutzer der Anwendung verfügt über die erforderlichen Berechtigungen, um alle API-Operationen für Remote-Befehle auszuführen, wie in der Tabelle dargestellt.


**API-Operation**  

| API-Aktion | Steuerung/Datenebene | Protocol (Protokoll) | Description | Ressource | 
| --- | --- | --- | --- | --- | 
| CreateCommand | Steuerebene | HTTP | Erzeugt eine Befehlsressource |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommand | Steuerebene | HTTP | Ruft Informationen über einen Befehl ab |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommand | Steuerebene | HTTP | Aktualisiert Informationen über einen Befehl oder stellt ihn als veraltet dar |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommands | Steuerebene | HTTP | Führt Befehle in Ihrem Konto auf |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommand | Steuerebene | HTTP | Löscht einen Befehl |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| StartCommandExecution | Datenebene | HTTP | Startet die Ausführung eines Befehls |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| UpdateCommandExecution | Datenebene | MQTT | Aktualisieren Sie die Ausführung eines Befehls |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| GetCommandExecution | Steuerebene | HTTP | Ruft Informationen über die Ausführung eines Befehls ab |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| ListCommandExecutions | Steuerebene | HTTP | Führt Befehlsausführungen in Ihrem Konto auf |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 
| DeleteCommandExecution | Steuerebene | HTTP | Löscht eine Befehlsausführung |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/iot-fleetwise/latest/developerguide/remote-command-tutorial.html)  | 

Ersetzen Sie in diesem Beispiel:
+ `us-east-1`mit deinem AWS-Region, wie`ap-south-1`.
+ `111122223333`mit deiner AWS-Konto Nummer, wie`57EXAMPLE833`.
+ `command-id``command-id1`, und `command-id2` mit Ihrer eindeutigen Befehlskennung, z. B. `LockDoor` oder`TurnOffAC`.
+ `thing-name`mit deinem AWS IoT Dingnamen, wie zum Beispiel`my_car`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "iot:CreateCommand",
                "iot:GetCommand",
                "iot:ListCommands",
                "iot:UpdateCommand",
                "iot:DeleteCommand"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:command/command-id1",
                "arn:aws:iot:us-east-1:111122223333:command/command-id2"
            ]
        },
        {
            "Action": [
                "iot:GetCommandExecution",
                "iot:ListCommandExecutions",
                "iot:DeleteCommandExecution"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:command/command-id",
                "arn:aws:iot:us-east-1:111122223333:thing/thing-name"
            ]
        },
        {
            "Action": "iot:StartCommandExecution",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:iot:us-east-1:111122223333:command/command-id",
                "arn:aws:iot:us-east-1:111122223333:thing/thing-name"
            ]
        }
    ]
}
```

------

## AWS IoT Befehle ausführen (AWS CLI)
<a name="iot-remote-command-tutorial-run"></a>

Im Folgenden wird gezeigt, wie Sie Befehle ausführen und den Lenkmodus des Fahrzeugs ändern können. AWS CLI 

1. 

**Erstellen Sie eine Befehlsressource für den Betrieb im Lenkmodus**

   Erstellen Sie den Befehl, den Sie mit der `create-command` CLI an Ihr Gerät senden möchten. Geben Sie in diesem Beispiel Folgendes an:
   + `command-id` wie *`TurnOffSteeringMode`*
   + `role-arn`as `"arn:aws:iam:accountId:role/FwCommandExecutionRole"` Die `role-arn` muss angegeben werden, da es die IAM-Rolle ist, die Berechtigungen zum Erstellen und Ausführen von Befehlen auf Ihrem Fahrzeug gewährt. Weitere Informationen finden Sie unter [Erteilen Sie die AWS IoT Device Management Berechtigung zum Generieren der Payload für Befehle mit AWS IoT FleetWise](controlling-access.md#generate-command-payload).
   + `display-name`als "“ *`Turn off steering mode`*
   + `namespace`muss sein `AWS-IoT-FleetWise`
   + `mandatory-parameters`als Name-Wert-Paar, mit `name` als "*\$1actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode*" und defaultValue als `{ "S": "true" }`
**Anmerkung**  
Sie können einen Befehl auch ohne Angabe obligatorischer Parameter erstellen. Anschließend müssen Sie die Parameter angeben, die bei der Ausführung des Befehls über die `start-command-execution` CLI verwendet werden sollen. Ein Beispiel finden Sie unter [Szenarien zur Verwendung von Befehlen](remote-command-use-cases.md).
**Wichtig**  
Wenn Sie den `AWS-IoT-FleetWise` Namespace verwenden, müssen Sie sicherstellen, dass das `Name` im Rahmen von angegebene Feld das `$actuatorPath.` Präfix `mandatory-parameters` verwendet und dass das `Value` Feld den Datentyp Zeichenfolge verwendet.

   ```
   aws iot create-command \ 
       --command-id TurnOffSteeringMode \ 
       --role-arn "arn:aws:iam:accountId:role/FwCommandExecutionRole" \
       --display-name "Turn off steering mode" \ 
       --namespace AWS-IoT-FleetWise \
       --mandatory-parameters '[
         {
           "name": "$actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode",
           "defaultValue": { "S": "true" }
         }
       ]'
   ```

   Die folgende Ausgabe zeigt eine Beispielantwort von der CLI, wobei `ap-south-1` und Beispiele für die AWS-Konto ID AWS-Region und `123456789012` sind.

   ```
   {
       "commandId": "TurnOffSteeringMode",
       "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode"
   }
   ```

   Weitere Beispiele zur Verwendung dieses Befehls finden Sie unter[Erstellen Sie eine Befehlsressource](create-manage-remote-command-cli.md#create-remote-command-cli).

1. 

**Rufen Sie Informationen über den Befehl ab**

   Führen Sie den folgenden Befehl aus, um Informationen über den Befehl abzurufen. Dabei `command-id` steht die Befehls-ID in der Ausgabe der `create-command` Operation von oben.
**Anmerkung**  
Wenn Sie mehr als einen Befehl erstellen, können Sie die `ListCommands` API verwenden, um alle Befehle in Ihrem Konto aufzulisten, und dann die `GetCommand` API verwenden, um zusätzliche Informationen zu einem bestimmten Befehl abzurufen. Weitere Informationen finden Sie unter [Befehle in Ihrem Konto auflisten](create-manage-remote-command-cli.md#list-remote-command-cli).

   ```
   aws iot get-command --command-id TurnOffSteeringMode
   ```

   Die Ausführung dieses Befehls generiert die folgende Antwort. Sie sehen den Zeitpunkt, zu dem der Befehl erstellt und zuletzt aktualisiert wurde, alle von Ihnen angegebenen Parameter und ob der Befehl für die Ausführung auf dem Gerät verfügbar ist.

   ```
   {
       "commandId": "TurnOffSteeringMode",
       "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode",
       "namespace": "AWS-IoT-FleetWise",
       "mandatoryParameters":[
           {
               "name": "$actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode",
               "defaultValue": {"S": "true" }
           }
       ],
       "createdAt": "2024-03-23T00:50:10.095000-07:00",
       "lastUpdatedAt": "2024-03-23T00:50:10.095000-07:00",
       "deprecated": false
   }
   ```

   Weitere Beispiele zur Verwendung dieses Befehls finden Sie unter[Ruft Informationen zu einem Befehl ab](create-manage-remote-command-cli.md#get-remote-command-cli).

1. 

**Starten Sie die Befehlsausführung**

   Führen Sie den folgenden Befehl aus, um die Ausführung des Befehls zu starten. Dabei `command-arn` befindet sich der Befehl ARN in der Ausgabe der `get-command` Operation von oben. Das `target-arn` ist der ARN des Zielgeräts, für das Sie den Befehl ausführen, zum Beispiel*`myVehicle`*.

   Da Sie in diesem Beispiel bei der Erstellung des Befehls Standardwerte für die Parameter angegeben haben, kann die `start-command-execution` CLI diese Werte bei der Ausführung des Befehls verwenden. Sie können den Standardwert auch überschreiben, indem Sie bei Verwendung der CLI einen anderen Wert für die Parameter angeben.

   ```
   aws iot-data start-command-execution \    
       --command-arn arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode \
       --target-arn arn:aws:iot:ap-south-1:123456789012:thing/myVehicle
   ```

   Wenn Sie diesen Befehl ausführen, wird eine Befehlsausführungs-ID zurückgegeben. Sie können diese ID verwenden, um den Status der Befehlsausführung, die Details und den Verlauf der Befehlsausführung abzufragen.

   ```
   {
       "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542"
   }
   ```

   Weitere Beispiele zur Verwendung der CLI finden Sie unter[Senden Sie einen Befehl ()AWS CLI](send-monitor-remote-command-cli.md#send-remote-command-cli).

1. 

**Rufen Sie Informationen über die Befehlsausführung ab**

   Führen Sie den folgenden Befehl aus, um Informationen zu dem Befehl abzurufen, den Sie auf dem Zielgerät ausgeführt haben. Geben Sie den an`execution-id`, den Sie als Ausgabe des `start-command-execution` Vorgangs von oben erhalten haben, und den`target-arn`, welcher der ARN des Geräts ist, auf das Sie abzielen.
**Anmerkung**  
Um die neuesten Statusinformationen zu erhalten, müssen Ihre Geräte die aktualisierten Statusinformationen im MQTT-Antwortthema veröffentlicht haben, das für Befehle reserviert ist, die die `UpdateCommandExecution` MQTT-API verwenden. Weitere Informationen finden Sie unter [Das Ergebnis der Befehlsausführung aktualisieren](send-monitor-remote-command-cli.md#update-remote-command-execution-cli).
Wenn Sie mehr als eine Befehlsausführung starten, können Sie die `ListCommandExecutions` API verwenden, um alle Befehlsausführungen in Ihrem Konto aufzulisten, und dann die `GetCommandExecution` API verwenden, um zusätzliche Informationen über eine bestimmte Ausführung zu erhalten. Weitere Informationen finden Sie unter [Listet die Befehlsausführungen in Ihrem Konto auf](send-monitor-remote-command-cli.md#list-remote-command-execution-cli).

   ```
   aws iot get-command-execution \    
       --execution-id <"07e4b780-7eca-4ffd-b772-b76358da5542"> \ 
       --target-arn arn:aws:iot:us-east-1:<account>:thing/myVehicle
   ```

   Wenn Sie diesen Befehl ausführen, werden Informationen zur Befehlsausführung, zum Ausführungsstatus, zum Zeitpunkt des Beginns der Ausführung und zum Zeitpunkt des Abschlusses zurückgegeben. Die folgende Antwort zeigt beispielsweise, dass die Befehlsausführung auf dem Zielgerät erfolgreich war und der Steuermodus ausgeschaltet wurde.

   ```
   {
       "executionId": "07e4b780-7eca-4ffd-b772-b76358da5542",
       "commandArn": "arn:aws:iot:ap-south-1:123456789012:command/TurnOffSteeringMode",
       "targetArn": "arn:aws:iot:ap-south-1:123456789012:thing/myVehicle",
       "result": "SUCCEEDED",
        "statusReason": {
           "reasonCode": "65536",
           "reasonDescription": "SUCCESS"
       },
       "result": {
           "KeyName": {
               "S": "",
               "B": true,
               "BIN": null
           }
       },
       "createdAt": "2024-03-23T00:50:10.095000-07:00",
       "completedAt": "2024-03-23T00:50:10.095000-07:00",
       "parameters": '{
            "$actuatorPath.Vehicle.Chassis.SteeringWheel.TurnOffSteeringMode":
            { "S": "true" }
       }' 
   }
   ```

## Bereinigen
<a name="remote-command-tutorial-clean"></a>

Nachdem Sie einen Befehl erstellt und auf Ihrem Gerät ausgeführt haben, können Sie ihn löschen, wenn Sie diesen Befehl nicht mehr verwenden möchten. Alle ausstehenden Befehlsausführungen, die gerade ausgeführt werden, werden weiterhin ausgeführt, ohne dass sich die Löschanforderung darauf auswirkt.

**Anmerkung**  
Alternativ können Sie einen Befehl auch als veraltet markieren, wenn er veraltet ist und Sie ihn möglicherweise später verwenden müssen, um ihn auf dem Zielgerät auszuführen.

1. 

**(Optional) Verwerfen Sie die Befehlsressource**

   Führen Sie den folgenden Befehl aus, um den Befehl als veraltet zu kennzeichnen. Dabei `command-id` steht die Befehls-ID in der Ausgabe der Operation von oben. `get-command`

   ```
   aws iot update-command \    
      --command-id TurnOffSteeringMode \    
      --deprecated
   ```

   Die Ausführung dieses Befehls gibt eine Ausgabe zurück, die anzeigt, dass der Befehl veraltet ist. Sie können den Befehl auch mit der CLI wiederherstellen. 
**Anmerkung**  
Sie können die `update-command` CLI auch verwenden, um den Anzeigenamen und die Beschreibung eines Befehls zu aktualisieren. Weitere Informationen finden Sie unter [Eine Befehlsressource aktualisieren oder als veraltet kennzeichnen](create-manage-remote-command-cli.md#update-remote-command-cli).

   ```
   {
       "commandId": "TurnOffSteeringMode",
       "deprecated": true,
       "lastUpdatedAt": "2024-05-09T23:16:51.370000-07:00"
   }
   ```

1. 

**Löschen Sie den Befehl**

   Führen Sie den folgenden Befehl aus, um den durch den angegebenen Befehl zu löschen`command-id`.
**Anmerkung**  
Die Löschaktion ist dauerhaft und kann nicht rückgängig gemacht werden.

   ```
   aws iot delete-command --command-id TurnOffSteeringMode
   ```

   Wenn die Löschanforderung erfolgreich ist, wird `statusCode` der HTTP-Wert 202 oder 204 angezeigt, je nachdem, ob Sie den Befehl als veraltet markiert haben und wann er als veraltet markiert wurde. Weitere Informationen sowie ein Beispiel finden Sie unter [Löschen Sie eine Befehlsressource](create-manage-remote-command-cli.md#delete-remote-command-cli).

   Sie können die `get-command` CLI verwenden, um zu überprüfen, ob der Befehl aus Ihrem Konto entfernt wurde.

1. 

**(Optional) Löschen Sie die Befehlsausführungen**

   Standardmäßig werden alle Befehlsausführungen innerhalb von sechs Monaten ab dem Datum, an dem Sie sie erstellen, gelöscht. Sie können diese Informationen mithilfe des `timeToLive` Parameters in der `GetCommandExecution` API anzeigen.

   Alternativ können Sie die Befehlsausführung löschen, wenn Ihre Befehlsausführung zu einem Terminal geworden ist `SUCCEEDED``FAILED`, z. B. wenn Ihr Ausführungsstatus einer von`REJECTED`, oder ist. Führen Sie den folgenden Befehl aus, um die Ausführung zu löschen. Dabei `execution-id` steht die Ausführungs-ID in der Ausgabe der `get-command-execution` Operation von oben.

   ```
   aws iot delete-command-execution \ 
               --execution-id "07e4b780-7eca-4ffd-b772-b76358da5542"
   ```

   Sie können die `get-command-execution` CLI verwenden, um zu überprüfen, ob die Befehlsausführung aus Ihrem Konto entfernt wurde.

# Szenarien zur Verwendung von Befehlen
<a name="remote-command-use-cases"></a>

**Wichtig**  
Der Zugriff auf bestimmte AWS FleetWise IoT-Funktionen ist derzeit gesperrt. Weitere Informationen finden Sie unter [AWS Verfügbarkeit von Regionen und Funktionen im AWS Internet der Dinge FleetWise](fleetwise-regions.md).

Wenn Sie die Befehlsfunktion verwenden, können Sie Befehle in den folgenden Szenarien erstellen und ausführen:
+ Sie können die Parameter bei der Erstellung weglassen und nur die Befehls-ID angeben. In diesem Fall müssen Sie die Parameter angeben, die bei der Ausführung des Befehls auf dem Zielgerät verwendet werden sollen.
+ Sie können einen oder mehrere Parameter angeben und Standardwerte für diese Parameter konfigurieren, wenn Sie den Befehl erstellen. Die Angabe von Standardwerten schützt Sie davor, ungenaue Befehle zu senden.
+ Sie können einen oder mehrere Parameter angeben und Werte für diese Parameter konfigurieren, wenn Sie den Befehl erstellen. Es können mehrere Parameter angegeben werden, aber nur einer davon wird ausgeführt, und das `Name` Feld dieses Parameters muss das `$actuatorPath` Präfix verwenden.

Dieser Abschnitt enthält einige Nutzungsszenarien für die `CreateCommand` und die `StartCommandExecution` API und die Verwendung der Parameter. Außerdem werden Ihnen einige Beispiele für die Verwendung von Befehlen mit Statusvorlagen gezeigt.

**Topics**
+ [Einen Befehl ohne Parameter erstellen](#remote-command-use-case1)
+ [Einen Befehl mit Standardwerten für Parameter erstellen](#remote-command-use-case2)
+ [Einen Befehl mit Parameterwerten erstellen](#remote-command-use-case3)
+ [Befehle mit Statusvorlagen verwenden](#remote-command-use-cases-templates)

## Einen Befehl ohne Parameter erstellen
<a name="remote-command-use-case1"></a>

Der folgende Anwendungsfall zeigt, wie Sie die `CreateCommand` API oder die `create-command` CLI verwenden können, um einen Befehl ohne Parameter zu erstellen. Wenn Sie einen Befehl erstellen, müssen Sie nur eine Befehls-ID und einen Rollen-ARN angeben.

Dieser Anwendungsfall ist besonders nützlich in wiederkehrenden Anwendungsfällen, z. B. wenn Sie denselben Befehl mehrmals an ein Fahrzeug senden möchten. In diesem Fall ist der Befehl nicht an einen bestimmten Aktuator gebunden und bietet Ihnen die Flexibilität, den Befehl auf einem beliebigen Aktuator auszuführen. Sie müssen die Parameter stattdessen zur Laufzeit angeben, wenn Sie den Befehl mithilfe der `StartCommandExecution` API oder der `start-command-execution` CLI ausführen, was die Aktuatoren und physikalischen Signalwerte umfasst.

### Einen Befehl ohne `mandatory-parameters` Eingabe erstellen
<a name="remote-command-use-case1-create"></a>

Dieser Anwendungsfall zeigt, wie ein Befehl ohne obligatorische Parametereingabe erstellt wird.

```
aws iot create-command \
    --command-id "UserJourney1" \
    --role-arn "arn:aws:iam:accountId:role/FwCommandExecutionRole" \
    --description "UserJourney1 - No mandatory parameters" \
    --namespace "AWS-IoT-FleetWise"
```

### Einen Befehl ausführen, der ohne `mandatory-parameters` Eingabe erstellt wurde
<a name="remote-command-use-case1-start"></a>

In diesem ersten Beispiel können Sie mit dem oben erstellten Befehl einen Befehl an einem beliebigen Aktuator ohne Einschränkungen ausführen. `actuator1`Um einen Wert von 10 festzulegen, führen Sie folgenden Befehl aus:

```
aws iot-jobs-data start-command-execution \
    --command-arn arn:aws:iot:region:111122223333:command/UserJourney1 \
    --target-arn arn:aws:iot:region:111122223333:thing/target-vehicle \
    --parameters '{
        "$actuatorPath.Vehicle.actuator1": {"S": "10"}
    }'
```

Auf ähnliche Weise können Sie einen Befehl ausführen, der `actuator3` auf einen Wert von festgelegt ist`true`.

```
aws iot-jobs-data start-command-execution \
    --command-arn arn:aws:iot:region:111122223333:command/UserJourney1 \
    --target-arn arn:aws:iot:region:111122223333:thing/target-vehicle \
    --parameters '{
        "$actuatorPath.Vehicle.actuator3": {"S": "true"}
    }'
```

## Einen Befehl mit Standardwerten für Parameter erstellen
<a name="remote-command-use-case2"></a>

Mit diesem Befehl können Sie nur einen Befehl auf dem angegebenen Aktuator ausführen. Die Angabe von Standardwerten schützt Sie davor, ungenaue Befehle zu senden. Beispielsweise kann ein `LockDoor` Befehl zum Sperren und Entsperren von Türen mit einem Standardwert konfiguriert werden, um zu verhindern, dass der Befehl versehentlich Türen entriegelt.

Dieser Anwendungsfall ist besonders nützlich, wenn Sie denselben Befehl mehrmals senden und verschiedene Aktionen an demselben Aktuator ausführen möchten, z. B. die Türen eines Fahrzeugs ver- und entriegeln. Wenn Sie den Aktuator auf den Standardwert setzen möchten, müssen Sie keinen Wert an die `start-command-execution` CLI übergeben. `parameters` Wenn Sie `parameters` in der `start-command-execution` CLI einen anderen Wert für angeben, überschreibt dieser den Standardwert.

### Erstellen eines Befehls mit Standardwerten für `mandatory-parameters`
<a name="remote-command-use-case2-create"></a>

Der folgende Befehl zeigt, wie ein Standardwert für actuator1 bereitgestellt wird.

```
aws iot create-command \
    --command-id "UserJourney2" \
    --namespace "AWS-IoT-FleetWise" \
    --role-arn "arn:aws:iam:accountId:role/FwCommandExecutionRole" \
    --mandatory-parameters '[
        {
            "name": "$actuatorPath.Vehicle.actuator1",
            "defaultValue": {"S": "0"}
        }
    ]'
```

### Ausführen eines Befehls, der mit Standardwerten für erstellt wurde `mandatory-parameters`
<a name="remote-command-use-case2-start"></a>

Mit dem Befehl `UserJourney2` können Sie einen Befehl ausführen, ohne während der Laufzeit einen Eingabewert übergeben zu müssen. In diesem Fall verwendet die Ausführung zur Laufzeit die bei der Erstellung angegebenen Standardwerte.

```
aws iot-data start-command-execution \
    --command-arn arn:aws:iot:region:111122223333:command/UserJourney3 \
    --target-arn arn:aws:iot:region:111122223333:thing/target-vehicle
```

Sie können während der Laufzeit auch einen anderen Wert für denselben Aktuator, actuator1, übergeben, wodurch der Standardwert überschrieben wird.

```
aws iot-jobs-data start-command-execution \
    --command-arn arn:aws:iot:region:111122223333:command/UserJourney3 \
    --target-arn arn:aws:iot:region:111122223333:thing/target-vehicle \
    --parameters '{
        "$actuatorPath.Vehicle.actuator1": {"S": "139"}
    }'
```

## Einen Befehl mit Parameterwerten erstellen
<a name="remote-command-use-case3"></a>

Mit diesem Befehl können Sie nur einen Befehl auf dem angegebenen Aktuator ausführen. Außerdem müssen Sie während der Laufzeit einen Wert für den Aktuator festlegen.

Dieser Anwendungsfall ist besonders nützlich, wenn Sie möchten, dass der Endbenutzer nur bestimmte, festgelegte Aktionen an einigen der Aktuatoren ausführt, wenn sie im Fahrzeug ausgeführt werden.

**Anmerkung**  
Sie können mehr als Name-Wert-Paare für die `mandatory-parameters` Eingabe verwenden, wobei Standardwerte für einige oder alle von ihnen verwendet werden können. Zur Laufzeit können Sie dann den Parameter bestimmen, den Sie bei der Ausführung auf dem Aktuator verwenden möchten, vorausgesetzt, der Name des Aktuators verwendet den vollqualifizierten Namen mit dem Präfix. `$actuatorPath.`

### Befehl ohne Standardwerte wird erstellt für `mandatory-parameters`
<a name="remote-command-use-case3-create"></a>

Mit diesem Befehl können Sie nur einen Befehl auf dem angegebenen Aktuator ausführen. Außerdem müssen Sie während der Laufzeit einen Wert für den Aktuator festlegen.

```
aws iot create-command \
    --command-id "UserJourney2" \
    --namespace "AWS-IoT-FleetWise" \
    --role-arn "arn:aws:iam:accountId:role/FwCommandExecutionRole" \
    --mandatory-parameters '[
        {
            "name": "$actuatorPath.Vehicle.actuator1"
        }
    ]'
```

### Ausführen eines Befehls, der ohne Standardwerte für erstellt wurde `mandatory-parameters`
<a name="remote-command-use-case3-start"></a>

Wenn Sie den Befehl ausführen, müssen Sie in diesem Fall einen Wert für actuator1 angeben. Bei der unten gezeigten Befehlsausführung wird der Wert von `actuator1` auf erfolgreich gesetzt. `10`

```
aws iot-data start-command-execution \    
    --command-arn arn:aws:iot:region:111122223333:command/UserJourney2 \
    --target-arn arn:aws:iot:region:111122223333:thing/target-vehicle \
    --parameters '{
        "$actuatorPath.Vehicle.actuator1": {"S": "10"}
    }'
```

## Befehle mit Statusvorlagen verwenden
<a name="remote-command-use-cases-templates"></a>

Sie können auch die API-Operationen der Befehle für die Erfassung und Verarbeitung von Statusdaten verwenden. Sie können beispielsweise einen einmaligen Status-Snapshot abrufen oder Statusvorlagen aktivieren oder deaktivieren, um die Erfassung von Fahrzeugzustandsdaten zu starten oder zu beenden. Die folgenden Beispiele zeigen, wie die Befehlsfunktion mit Statusvorlagen verwendet wird. Weitere Informationen finden Sie unter [Operationen zu Statusvorlagen für die Datenerfassung und -verarbeitung](state-template-api-operations.md).

**Anmerkung**  
Das als Teil der `mandatory-parameters` Eingabe angegebene Namensfeld muss das `$stateTemplate` Präfix verwenden.

### Beispiel 1: Befehle für Statusvorlagen mit Standardwerten erstellen
<a name="remote-command-use-cases-template-ex1"></a>

Dieses Beispiel zeigt, wie Sie die `create-command` CLI verwenden, um Statusvorlagen zu aktivieren.

```
aws iot create-command \
    --command-id <COMMAND_ID> \
    --display-name "Activate State Template" \
    --namespace AWS-IoT-FleetWise \    
    --mandatory-parameters '[
      {
          "name": "$stateTemplate.name"
      },
      {
          "name": "$stateTemplate.operation",
          "defaultValue": {"S": "activate"}
      }
    ]'
```

In ähnlicher Weise zeigt der folgende Befehl ein Beispiel dafür, wie Sie die `start-command-execution` CLI für Statusvorlagen verwenden können.

```
aws iot-data start-command-execution \
    --command-arn arn:aws:iot:region:111122223333:command/<COMMAND_ID> \
    --target-arn arn:aws:iot:region:111122223333:thing/<VEHICLE_NAME> \
    --parameters '{
       "$stateTemplate.name": {"S": "ST345"}
    }'
```

### Beispiel 2: Befehle für Statusvorlagen ohne Standardwerte erstellen
<a name="remote-command-use-cases-template-ex2"></a>

Der folgende Befehl erstellt mehrere Statusvorlagen ohne Standardwerte für einen der Parameter. Er zwingt Sie, den Befehl mit diesen Parametern und den entsprechenden Werten auszuführen.

```
aws iot create-command \
    --command-id <COMMAND_ID> \
    --display-name "Activate State Template" \
    --namespace AWS-IoT-FleetWise \
    --mandatory-parameters '[
      {
          "name": "$stateTemplate.name",
          "defaultValue": {"S": "ST123"}
      },
      {
          "name": "$stateTemplate.operation",
          "defaultValue": {"S": "activate"}
      },
      {
          "name": "$stateTemplate.deactivateAfterSeconds",
          "defaultValue": {"L": "120"}
      } 
    ]'
```

Der folgende Befehl zeigt, wie Sie die `start-command-execution` CLI für das obige Beispiel verwenden können.

```
aws iot-data start-command-execution \
    --command-arn arn:aws:iot:region:111122223333:command/<COMMAND_ID> \
    --target-arn arn:aws:iot:region:111122223333:thing/<VEHICLE_NAME> \
    --parameters '{
        "$stateTemplate.name": {"S": "ST345"},
        "$stateTemplate.operation": {"S": "activate"},
        "$stateTemplate.deactivateAfterSeconds" : {"L": "120"}
```