

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.

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

Dieser Workflow zeigt, wie Geräte mit AWS IoT Device Management Befehlen interagieren. Alle HTTP-API-Anfragen verwenden [Sigv4-Anmeldeinformationen](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) zum Signieren.

![\[Überblick über den High-Level-Workflow für AWS IoT Device Management Gerätebefehle.\]](http://docs.aws.amazon.com/de_de/iot/latest/developerguide/images/device-command-workflow.png)


**Topics**
+ [Erstellen und Verwalten von Befehlen](#command-create-command)
+ [Wählen Sie das Zielgerät für Ihre Befehle und abonnieren Sie MQTT-Themen](#command-choose-target)
+ [Starten und überwachen Sie die Befehlsausführungen für Ihr Zielgerät](#command-command-executions)
+ [(Optional) Aktivieren Sie Benachrichtigungen für Befehlsereignisse](#iot-remote-command-commands-notifications)

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

Gehen Sie wie folgt vor, um Befehle für Ihre Geräte zu erstellen und zu verwalten.

1. 

**Erstellen Sie eine Befehlsressource**

   Erstellen Sie einen Befehl über den [Command Hub](https://console.aws.amazon.com/iot/home#/commandHub) oder mithilfe der [https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html](https://docs.aws.amazon.com/iot/latest/apireference/API_CreateCommand.html)API.

1. 

**Geben Sie die Nutzlast an**

   Stellen Sie eine Nutzlast in einem beliebigen Format bereit. Geben Sie den Inhaltstyp an, um eine korrekte Interpretation durch das Gerät sicherzustellen.

   Bei dynamischen Befehlen mit Payload-Vorlagen wird die endgültige Payload zur Laufzeit anhand der von Ihnen angegebenen Parameter generiert. Vorlagen unterstützen nur das JSON-Format, aber die generierte Nutzlast kann als JSON oder CBOR gesendet werden.

1. 

**(Optional) Verwalte die erstellten Befehle**

   Aktualisieren Sie den Anzeigenamen und die Beschreibung nach der Erstellung. Markieren Sie Befehle als veraltet, wenn sie nicht mehr benötigt werden, oder löschen Sie sie dauerhaft. Um die Payload-Informationen zu ändern, erstellen Sie einen neuen Befehl.

## Wählen Sie das Zielgerät für Ihre Befehle und abonnieren Sie MQTT-Themen
<a name="command-choose-target"></a>

Wählen Sie Ihr Zielgerät und konfigurieren Sie MQTT-Themen für den Empfang von Befehlen und das Veröffentlichen von Antworten.

1. 

**Wählen Sie das Zielgerät für Ihren Befehl**

   Wählen Sie ein Zielgerät aus, um den Befehl zu empfangen und auszuführen. Verwenden Sie einen Ding-Namen für registrierte Geräte oder eine Client-ID für nicht registrierte Geräte. Weitere Informationen finden Sie unter [Überlegungen zum Zielgerät](iot-remote-command-execution-start-monitor.md#iot-command-execution-target).

1. 

**Konfigurieren Sie die AWS IoT Geräterichtlinie**

   Konfigurieren Sie eine IAM-Richtlinie, die Berechtigungen zum Empfangen von Ausführungen und zum Veröffentlichen von Updates gewährt. Beispiele [Beispiel einer IAM-Richtlinie](iot-remote-command-execution-start-monitor.md#iot-remote-command-execution-update-policy) für Richtlinien finden Sie unter.

1. 

**Stellen Sie eine MQTT-Verbindung her**

   Verbinden Sie Geräte mit dem Message Broker und abonnieren Sie Request and Response Topics. Geräte benötigen eine `iot:Connect` Genehmigung. Finden Sie Ihren Datenebenen-Endpunkt mit dem `DescribeEndpoint` API- oder `describe-endpoint` CLI-Befehl:

   ```
   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 die Themen zu Befehlen**

   Abonnieren Sie das Thema „Befehlsanfrage“. Wenn Sie eine Ausführung starten, veröffentlicht der Message Broker die Payload zu diesem Thema. Ihr Gerät empfängt und verarbeitet den Befehl.

   (Optional) Abonnieren Sie die Antwortthemen (`accepted`oder`rejected`), um eine Bestätigung zu erhalten, ob der Cloud-Dienst die Geräteantwort akzeptiert oder abgelehnt hat.

   Ersetzen Sie in diesem Beispiel:
   + *`<device>`*mit `thing` oder `client` abhängig davon, ob das Gerät, auf das Sie abzielen, als IoT-Ding registriert oder als MQTT-Client spezifiziert wurde.
   + *`<DeviceID>`*mit der eindeutigen Kennung Ihres Zielgeräts. Diese ID kann die eindeutige MQTT-Client-ID oder ein Ding-Name sein.
**Anmerkung**  
Wenn der Payload-Typ nicht JSON oder CBOR ist, ist das *<PayloadFormat>* Feld möglicherweise nicht im Thema der Befehlsanfrage vorhanden. Um das Payload-Format abzurufen, empfehlen wir, die Formatinformationen aus den MQTT-Nachrichtenkopfzeilen abzurufen. MQTT5 Weitere Informationen finden Sie unter [Themen zu Befehlen](reserved-topics.md#reserved-topics-commands).

   ```
   $aws/commands/<devices>/<DeviceID>/executions/+/request/<PayloadFormat>
   $aws/commands/<devices>/<DeviceID>/executions/+/response/accepted/<PayloadFormat>
   $aws/commands/<devices>/<DeviceID>/executions/+/response/rejected/<PayloadFormat>
   ```

## Starten und überwachen Sie die Befehlsausführungen für Ihr Zielgerät
<a name="command-command-executions"></a>

Nachdem Sie die Befehle erstellt und die Ziele für den Befehl angegeben haben, können Sie die Ausführung auf dem Zielgerät starten, indem Sie die folgenden Schritte ausführen.

1. 

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

   Starten Sie die Ausführung vom [Command Hub](https://console.aws.amazon.com/iot/home#/commandHub) aus oder verwenden Sie die `StartCommandExecution` API mit Ihrem kontospezifischen Endpunkt. Verwenden Sie es `iot:Data-ATS` für Dual-Stack (IPv4/IPv6) oder `iot:Jobs` nur für. IPv4 

   Die API veröffentlicht den Payload im Thema Commands Request.
**Anmerkung**  
Wenn das Gerät offline ist und persistente MQTT-Sitzungen verwendet, wartet der Befehl beim Message Broker. Wenn das Gerät vor dem Timeout wieder eine Verbindung herstellt, kann es den Befehl verarbeiten und Ergebnisse veröffentlichen. Wenn das Timeout abläuft, wird das Timeout bei der Ausführung überschritten und die Nutzdaten werden verworfen.

1. 

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

   Das Gerät empfängt die Payload, verarbeitet den Befehl, führt die angegebenen Aktionen aus und veröffentlicht die Ergebnisse mithilfe einer `UpdateCommandExecution` MQTT-basierten API im Antwortthema „Befehle“. Wenn das Gerät akzeptierte und abgelehnte Themen abonniert hat, erhält es eine Bestätigung, ob der Cloud-Dienst die Antwort akzeptiert oder abgelehnt hat.

   Je nachdem, was Sie im Thema der Anfrage angegeben haben, *<devices>* kann es sich entweder um Dinge oder Clients handeln, und es *<DeviceID>* kann sich AWS IoT dabei um Ihren Dingnamen oder die MQTT-Client-ID handeln.
**Anmerkung**  
Das *<PayloadFormat>* kann im Antwortthema der Befehle nur JSON oder CBOR sein.

   ```
   $aws/commands/<devices>/<DeviceID>/executions/<ExecutionId>/response/<PayloadFormat>
   ```

1. 

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

   Rufen Sie die Ausführungsergebnisse von der AWS IoT Konsole ab oder verwenden Sie`GetCommandExecution`. Das Gerät muss die Ergebnisse unter dem Thema Commands Response veröffentlichen, um aktuelle Informationen zu erhalten. Sehen Sie sich zusätzliche Details an, einschließlich Uhrzeit der letzten Aktualisierung, Ergebnis und Abschlusszeit.

## (Optional) Aktivieren Sie Benachrichtigungen für Befehlsereignisse
<a name="iot-remote-command-commands-notifications"></a>

Abonnieren Sie Befehlsereignisse, um Benachrichtigungen zu erhalten, wenn sich der Ausführungsstatus ändert. Ausführliche Informationen zu Ereignissen bei der Befehlsausführung, einschließlich des Formats der Ereignismeldungen und der Nutzdatenattribute, finden Sie unter[Ereignisse bei der Ausführung von Befehlen](command-events.md).

1. 

**Erstellen einer Themenregel**

   Abonnieren Sie das Thema Befehlsereignisse für Benachrichtigungen über Statusänderungen. Erstellen Sie eine Themenregel, um Gerätedaten mithilfe der AWS IoT Konsole oder [Eine AWS IoT Regel erstellen](iot-create-rule.md) an andere AWS IoT Dienste wie AWS Lambda Amazon SQS und AWS Step Functions weiterzuleiten.

   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**

   Verwalten Sie Push-Benachrichtigungen für Befehle und erstellen Sie Anwendungen mithilfe der abonnierten Ereignisse.

Der folgende Code zeigt eine Beispiel-Payload für die Benachrichtigungen über Befehlsereignisse, die Sie erhalten werden.

```
{
    "executionId": "2bd65c51-4cfd-49e4-9310-d5cbfdbc8554",
    "status":"FAILED",
    "statusReason": {
         "reasonCode": "DEVICE_TOO_BUSY",
         "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
}
```