

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.

# Führt MQTT-API-Operationen auf dem Gerät aus
<a name="jobs-mqtt-api"></a><a name="jobs-mqtt-note"></a>

Sie können Gerätebefehle für Aufträge ausgeben, indem Sie MQTT-Nachrichten in den [für Auftragsbefehle verwendeten reservierten Themen](reserved-topics.md#reserved-topics-job) veröffentlichen. 

Ihr geräteseitiger Client muss die Antwortnachrichten-Themen dieser Befehle abonniert haben. Wenn Sie den AWS IoT Geräteclient verwenden, abonniert Ihr Gerät automatisch die Antwortthemen. Das bedeutet, dass der Message Broker die Themen der Antwortnachricht auf dem Client veröffentlicht, der die Befehlsnachricht veröffentlicht hat, unabhängig davon, ob Ihr Client die Themen der Antwortnachricht abonniert hat oder nicht. Diese Antwortnachrichten werden nicht durch den Message Broker weitergeleitet und können auch nicht von anderen Clients oder Regeln abonniert werden.

Wenn Sie den Auftrag und die `jobExecution` Ereignisthemen für Ihre Flottenüberwachungslösung abonnieren, aktivieren Sie zunächst die [Aufgaben- und Auftragsausführungsereignisse](iot-events.md), um alle Ereignisse auf der Cloud-Seite zu empfangen. Auftragsfortschrittsnachrichten, die über den Message Broker verarbeitet werden und von AWS IoT -Regeln verwendet werden können, werden veröffentlicht als [Auftragsereignisse](events-jobs.md). Da der Message Broker Antwortnachrichten auch ohne ausdrückliches Abonnement veröffentlicht, muss Ihr Client so konfiguriert sein, dass er die empfangenen Nachrichten empfängt und identifiziert. Ihr Kunde muss außerdem bestätigen, dass das Thema {{thingName}} in der eingehenden Nachricht für den Dingnamen des Kunden gilt, bevor der Client auf die Nachricht reagiert.

**Anmerkung**  
Nachrichten, die als Antwort auf MQTT Jobs API-Befehlsnachrichten AWS IoT gesendet werden, werden Ihrem Konto in Rechnung gestellt, unabhängig davon, ob Sie sie explizit abonniert haben oder nicht.

Im Folgenden werden die MQTT-API-Operationen und ihre Anfrage- und Antwortsyntax gezeigt. Alle MQTT-API-Operationen haben die folgenden Parameter:

clientToken  
Ein optionaler Client-Token zur Korrelierung von Anforderungen und Antworten. Geben Sie hier einen beliebigen Wert ein, und dieser wird in der Antwort reflektiert.

`timestamp`  
Die Zeit in Sekunden seit der Epoche, in der die Nachricht gesendet wurde, vergangene Zeit.

## GetPendingJobExecutions
<a name="mqtt-getpendingjobexecutions"></a>

Ruft die Liste aller Aufträge für ein bestimmtes Objekt ab, die sich nicht in einem Terminal-Zustand befinden.

Veröffentlichen Sie zum Aufruf dieser API eine Nachricht auf `$aws/things/{{thingName}}/jobs/get`.

Anforderungsnutzlast:

```
{ "clientToken": "string" }
```

Der Message Broker veröffentlicht `$aws/things/{{thingName}}/jobs/get/accepted` und `$aws/things/{{thingName}}/jobs/get/rejected` auch ohne ein bestimmtes Abonnement. Damit Ihr Kunde die Nachrichten empfangen kann, muss er sie jedoch abhören. Weitere Informationen finden Sie [in der Anmerkung zu Jobs API-Nachrichten](#jobs-mqtt-note).

Antwortnutzlast:

```
{
"inProgressJobs" : [ JobExecutionSummary ... ], 
"queuedJobs" : [ JobExecutionSummary ... ],
"timestamp" : 1489096425069,
"clientToken" : "client-001"
}
```

Wenn `inProgressJobs` und `queuedJobs` eine Liste von [JobExecutionSummary](jobs-mqtt-https-api.md#jobs-mqtt-job-execution-summary) Objekten zurückgibt, die den Status `IN_PROGRESS` oder `QUEUED` haben.

## StartNextPendingJobExecution
<a name="mqtt-startnextpendingjobexecution"></a>

Ruft die nächste anstehende Auftragsausführung für ein Objekt ab und startet sie (Status `IN_PROGRESS` oder `QUEUED`). 
+ Alle Auftragsausführungen mit dem Status `IN_PROGRESS` werden zuerst zurückgegeben.
+ Auftragsausführungen werden in der Reihenfolge zurückgegeben, in der sie zur Warteschlange hinzugefügt wurden. Wenn der Zielgruppe für Ihren Auftrag etwas hinzugefügt oder daraus entfernt wird, überprüfen Sie die Rollout-Reihenfolge aller neuen Auftragsausführungen im Vergleich zu bestehenden Auftragsausführungen.
+ Wenn die nächste ausstehende Auftragsausführung den Status `QUEUED` hat, wechselt ihr Status zu `IN_PROGRESS`, und die Statusdetails der Auftragsausführung werden wie angegeben eingerichtet.
+ Wenn die nächste ausstehende Auftragsausführung bereits den Status `IN_PROGRESS` hat, werden ihre Statusdetails nicht geändert.
+ Wenn keine Auftragsausführungen ausstehen, enthält die Antwort das Feld `execution` nicht.
+ Optional können Sie einen Schritt-Timer erstellen, indem Sie einen Wert für die `stepTimeoutInMinutes`-Eigenschaft angeben. Falls Sie den Wert dieser Eigenschaft nicht aktualisieren, indem Sie `UpdateJobExecution` ausführen, läuft die Auftragsausführung ab, wenn der Schritt-Timer abläuft.

Veröffentlichen Sie zum Aufruf dieser API eine Nachricht auf `$aws/things/{{thingName}}/jobs/start-next`.

Anforderungsnutzlast:

```
{ 
"statusDetails": {
    "string": "{{job-execution-state}}"
    ...
},
"stepTimeoutInMinutes": long,
"clientToken": "string"
}
```

`statusDetails`  
Eine Sammlung von Name/Wert-Paaren, die den Status der Auftragsausführung beschreiben. Wenn nicht angegeben, sind die `statusDetails` nicht geändert.

`stepTimeOutInMinutes`  
Gibt die Dauer an, die dieses Gerät für den Abschluss der Ausführung dieses Auftrags hat. Wenn der Status der Auftragsausführung vor Ablauf oder Zurücksetzen des Timers (durch Aufrufen von `UpdateJobExecution`, Setzen des Status auf `IN_PROGRESS` und Angeben eines neuen Zeitüberschreitungswerts im Feld `stepTimeoutInMinutes`) auf keinen Terminal-Zustand gesetzt wird, wird der Status der Auftragsausführung auf `TIMED_OUT` gesetzt. Das Festlegen dieser Zeitüberschreitung hat keinen Einfluss auf die Zeitüberschreitung für die Auftragsausführung, die möglicherweise beim Erstellen des Auftrags festgelegt wurde (`CreateJob` mithilfe des Feldes `timeoutConfig`).   
Gültige Werte für diesen Parameter liegen im Bereich von 1 bis 10 080 (1 Minute bis 7 Tage). Ein Wert von -1 ist ebenfalls gültig und beendet den aktuellen Step-Timer (der durch eine frühere Verwendung von UpdateJobExecutionRequest erstellt wurde).

Der Message Broker veröffentlicht `$aws/things/{{thingName}}/jobs/start-next/accepted` und `$aws/things/{{thingName}}/jobs/start-next/rejected` auch ohne ein bestimmtes Abonnement. Damit Ihr Kunde die Nachrichten empfangen kann, muss er sie jedoch abhören. Weitere Informationen finden Sie [in der Anmerkung zu Jobs API-Nachrichten](#jobs-mqtt-note).

Antwortnutzlast:

```
{
"execution" : JobExecutionData,
"timestamp" : timestamp,
"clientToken" : "string"
}
```

Wo `execution` ein [JobExecution](jobs-mqtt-https-api.md#jobs-mqtt-job-execution-data)-Objekt ist. Beispiel:

```
{
"execution" : {
    "jobId" : "022",
    "thingName" : "MyThing",
    "jobDocument" : "< contents of job document >",
    "status" : "IN_PROGRESS",
    "queuedAt" : 1489096123309,
    "lastUpdatedAt" : 1489096123309,
    "versionNumber" : 1,
    "executionNumber" : 1234567890
},
"clientToken" : "client-1",
"timestamp" : 1489088524284,
}
```

## DescribeJobExecution
<a name="mqtt-describejobexecution"></a>

Ruft detaillierte Informationen zu einer Auftragsausführung ab.

Sie können die `jobId` auf `$next` setzen, um die nächste ausstehende Auftragsausführung für ein Objekt (mit Status `IN_PROGRESS` oder `QUEUED`) zurückzugeben.

Veröffentlichen Sie zum Aufruf dieser API eine Nachricht auf `$aws/things/{{thingName}}/jobs/{{jobId}}/get`. 

Anforderungsnutzlast:

```
{ 
"jobId" : "022",
"thingName" : "MyThing",
"executionNumber": long,
"includeJobDocument": boolean,
"clientToken": "string" 
}
```

`thingName`  
Der Name des dem Gerät zugeordneten Objekts.

`jobId`  
Die eindeutige Kennung, die diesem Auftrag bei seiner Erstellung zugewiesen wurde.   
Sie können `$next` verwenden, um die nächste ausstehende Auftragsausführung für ein Objekt (mit Status `IN_PROGRESS` oder `QUEUED`) zurückzugeben. In diesem Fall werden alle Auftragsausführungen mit dem Status `IN_PROGRESS` zuerst zurückgegeben. Auftragsausführungen werden in der Reihenfolge zurückgegeben, in der sie erstellt wurden.

`executionNumber`  
(Optional) Eine Nummer, die eine Auftragsausführung auf einem Gerät identifiziert. Wenn nicht angegeben, wird die letzte Auftragsausführung zurückgegeben.

`includeJobDocument`  
(Optional) Sofern nicht auf `false` gesetzt, enthält die Antwort das Auftragsdokument. Der Standardwert ist `true`.

Der Message Broker veröffentlicht `$aws/things/{{thingName}}/jobs/{{jobId}}/get/accepted` und `$aws/things/{{thingName}}/jobs/{{jobId}}/get/rejected` auch ohne ein bestimmtes Abonnement. Damit Ihr Kunde die Nachrichten empfangen kann, muss er sie jedoch abhören. Weitere Informationen finden Sie [in der Anmerkung zu Jobs API-Nachrichten](#jobs-mqtt-note).

Antwortnutzlast:

```
{
"execution" : JobExecutionData,
"timestamp": "timestamp",
"clientToken": "string"
}
```

Wo `execution` ein [JobExecution](jobs-mqtt-https-api.md#jobs-mqtt-job-execution-data)-Objekt ist.

## UpdateJobExecution
<a name="mqtt-updatejobexecution"></a>

Aktualisiert den Status einer Auftragsausführung. Sie können optional einen Schritt-Timer erstellen, indem Sie einen Wert für die `stepTimeoutInMinutes`-Eigenschaft angeben. Falls Sie den Wert dieser Eigenschaft nicht aktualisieren, indem Sie `UpdateJobExecution` erneut ausführen, läuft die Auftragsausführung ab, wenn der Schritt-Timer abläuft.

Veröffentlichen Sie zum Aufruf dieser API eine Nachricht auf `$aws/things/{{thingName}}/jobs/{{jobId}}/update`. 

Anforderungsnutzlast:

```
{
"status": "{{job-execution-state}}",
"statusDetails": { 
    "string": "string"
    ...
},
"expectedVersion": "number",
"executionNumber": long,
"includeJobExecutionState": boolean,
"includeJobDocument": boolean,
"stepTimeoutInMinutes": long,
"clientToken": "string"
}
```

`status`  
Der neue Status für die Auftragsausführung (`IN_PROGRESS`, `FAILED`, `SUCCEEDED` oder `REJECTED`). Dieser muss bei jeder Aktualisierung angegeben werden.

`statusDetails`  
Eine Sammlung von Name/Wert-Paaren, die den Status der Auftragsausführung beschreiben. Wenn nicht angegeben, sind die `statusDetails` nicht geändert.

`expectedVersion`  
Die erwartete aktuelle Version der Auftragsausführung. Bei jeder Aktualisierung der Auftragsausführung wird die Version erhöht. Wenn die im Jobs-Service gespeicherte Version der AWS IoT Auftragsausführung nicht übereinstimmt, wird die Aktualisierung mit einem `VersionMismatch` Fehler abgelehnt. Eine [ErrorResponse](jobs-api.md#jobs-mqtt-error-response), die den aktuellen Status der Auftragsausführung enthält, wird ebenfalls zurückgegeben. (Dadurch ist es nicht erforderlich, eine separate `DescribeJobExecution`-Anforderung durchzuführen, um die Daten zum Status der Auftragsausführung abzurufen.)

`executionNumber`  
(Optional) Eine Nummer, die eine Auftragsausführung auf einem Gerät identifiziert. Wenn nicht angegeben, wird die letzte Auftragsausführung verwendet.

`includeJobExecutionState`  
(Optional) Wenn enthalten und auf `true` gesetzt, enthält die Antwort das Feld `JobExecutionState`. Der Standardwert ist `false`.

`includeJobDocument`  
(Optional) Wenn enthalten und auf `true` gesetzt, enthält die Antwort das `JobDocument`. Der Standardwert ist `false`.

`stepTimeoutInMinutes`  
Gibt die Dauer an, die dieses Gerät für den Abschluss der Ausführung dieses Auftrags hat. Wenn der Status der Auftragsausführung nicht in einen Terminal-Zustand gesetzt wird, bevor dieser Timer abläuft oder bevor der Timer zurückgesetzt wird, wird der Status der Auftragsausführung auf `TIMED_OUT` gesetzt. Das Festlegen oder Zurücksetzen dieser Zeitüberschreitung hat keinen Einfluss auf die Zeitüberschreitung der Auftragsausführung, die möglicherweise beim Erstellen des Auftrags festgelegt wurde. 

Der Message Broker veröffentlicht `$aws/things/{{thingName}}/jobs/{{jobId}}/update/accepted` und `$aws/things/{{thingName}}/jobs/{{jobId}}/update/rejected` auch ohne ein bestimmtes Abonnement. Damit Ihr Kunde die Nachrichten empfangen kann, muss er sie jedoch abhören. Weitere Informationen finden Sie [in der Anmerkung zu Jobs API-Nachrichten](#jobs-mqtt-note).

Antwortnutzlast:

```
{
"executionState": JobExecutionState,
"jobDocument": "string",
"timestamp": timestamp,
"clientToken": "string"
}
```

`executionState`  
Ein [JobExecutionState](jobs-mqtt-https-api.md#jobs-mqtt-job-execution-state)-Objekt.

`jobDocument`  
Ein [-Auftragsdokument](key-concepts-jobs.md)-Objekt.  
In MQTT-Antworten ist das `jobDocument` Feld ein JSON-Objekt. In HTTP-Antworten ist es eine Zeichenkettendarstellung des JSON-Objekts.

`timestamp`  
Die Zeit in Sekunden seit der Epoche, in der die Nachricht gesendet wurde, vergangene Zeit.

`clientToken`  
Ein Client-Token zur Korrelierung von Anforderungen und Antworten.

Wenn Sie das MQTT-Protokoll verwenden, können Sie auch die folgenden Updates durchführen:

## JobExecutionsChanged
<a name="mqtt-jobexecutionschanged"></a>

Wird gesendet, wenn eine Auftragsausführung der Liste ausstehender Auftragsausführungen für ein Objekt hinzugefügt oder daraus entfernt wird.

Verwenden Sie das -Thema:

`$aws/things/{{thingName}}/jobs/notify`

Nachrichtennutzlast:

```
{
"jobs" : {
    "JobExecutionState": [ [https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummary.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecutionSummary.html) ... ]
         },
    "timestamp": timestamp
}
```

## NextJobExecutionChanged
<a name="mqtt-nextjobexecutionchanged"></a>

Wird gesendet, wenn sich ändert, welche Auftragsausführung die nächste auf der Liste der ausstehenden Auftragsausführungen für ein Objekt ist, wie für [https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_DescribeJobExecution.html) mit `jobId` `$next` definiert. Diese Nachricht wird nicht gesendet, wenn sich die Details der nächsten Auftragsausführung ändern, sondern nur, wenn sich der nächste Auftrag geändert hat, der von `DescribeJobExecution` mit `jobId` `$next` ausgegeben würde. Nehmen wir als Beispiel die Auftragsausführungen J1 und J2 mit dem Status `QUEUED`. J1 ist die nächste ausstehende Auftragsausführung auf der Liste. Wenn sich der Status von J2 zu `IN_PROGRESS` ändert und der Status von J1 unverändert bleibt, wird diese Benachrichtigung gesendet und enthält Details von J2.

Verwenden Sie das -Thema:

`$aws/things/{{thingName}}/jobs/notify-next`

Nachrichtennutzlast:

```
{
"execution" : [https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecution.html](https://docs.aws.amazon.com/iot/latest/apireference/API_JobExecution.html),
"timestamp": timestamp,
}
```