

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.

# AWS IoT Demo der Jobbibliothek
<a name="freertos-jobs-demo"></a>

**Wichtig**  <a name="deprecation-message-demo"></a>
Diese Demo wird im Amazon-FreeRTOS Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie [hier beginnen](freertos-getting-started-modular.md), wenn Sie ein neues Projekt erstellen. Wenn Sie bereits ein bestehendes FreeRTOS-Projekt haben, das auf dem inzwischen veralteten Amazon-FreeRTOS Repository basiert, finden Sie weitere Informationen unter. [Amazon-FreeRTOS Leitfaden zur Migration zum Github-Repository](github-repo-migration.md)

## Einführung
<a name="freertos-jobs-demo-introduction"></a>

Die Demo der AWS IoT Jobs-Bibliothek zeigt Ihnen, wie Sie über eine MQTT-Verbindung eine Verbindung zum [AWS IoT Jobs-Service](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) herstellen, einen Job von AWS IoT einem Gerät abrufen und ihn auf einem Gerät verarbeiten. Das AWS IoT Jobs-Demoprojekt verwendet den [FreeRTOS-Windows-Port](https://www.freertos.org/FreeRTOS-Windows-Simulator-Emulator-for-Visual-Studio-and-Eclipse-MingW.html), sodass es mit der [Visual Studio Community-Version](https://visualstudio.microsoft.com/vs/community/) unter Windows erstellt und evaluiert werden kann. Es wird keine Mikrocontroller-Hardware benötigt. Die Demo stellt mithilfe von TLS auf dieselbe Weise eine sichere Verbindung zum AWS IoT MQTT-Broker her wie die. [Demo zur gegenseitigen CoreMQTT-Authentifizierung](mqtt-demo-ma.md)

**Anmerkung**  
Folgen Sie den Schritten unter, um die FreeRTOS-Demos einzurichten und auszuführen. [Erste Schritte mit FreeRTOS](freertos-getting-started.md)

## Organisation des Quellcodes
<a name="freertos-jobs-demo-source-code-org"></a>

Der Demo-Code befindet sich in der `jobs_demo.c` Datei und kann auf der [GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c)Website oder im `{{freertos}}/demos/jobs_for_aws/` Verzeichnis gefunden werden.

## Konfigurieren Sie den AWS IoT MQTT-Broker-Verbindung
<a name="freertos-jobs-demo-configure-mqtt-broker"></a>

In dieser Demo verwenden Sie eine MQTT-Verbindung zum AWS IoT MQTT-Broker. Diese Verbindung ist auf die gleiche Weise konfiguriert wie die. [Demo zur gegenseitigen CoreMQTT-Authentifizierung](mqtt-demo-ma.md)

## Funktionalität
<a name="freertos-jobs-demo-functionality"></a>

Die Demo zeigt den Workflow, der verwendet wird, um Jobs von einem Gerät zu empfangen AWS IoT und sie auf einem Gerät zu verarbeiten. Die Demo ist interaktiv und erfordert, dass Sie Jobs entweder mit der AWS IoT Konsole oder mit AWS Command Line Interface (AWS CLI) erstellen. Weitere Informationen zum Erstellen eines Jobs finden Sie unter [create-job](https://docs.aws.amazon.com/cli/latest/reference/iot/create-job.html) in der *AWS CLI Befehlsreferenz*. Für die Demo muss im Jobdokument ein `action` Schlüssel gesetzt sein, mit dem `print` eine Nachricht an die Konsole gedruckt werden kann.

Sehen Sie sich das folgende Format für dieses Jobdokument an.

```
{
    "action": "print",
    "message": "ADD_MESSAGE_HERE"
}
```

Sie können den verwenden AWS CLI , um einen Job wie im folgenden Beispielbefehl zu erstellen.

```
aws iot create-job \
    --job-id t12 \
    --targets arn:aws:iot:{{region}}:123456789012:thing/device1 \
    --document '{"action":"print","message":"hello world!"}'
```

In der Demo wird auch ein Jobdokument verwendet, für das der `action` Schlüssel auf `publish` zum erneuten Veröffentlichen der Nachricht zu einem Thema gesetzt ist. Sehen Sie sich das folgende Format für dieses Jobdokument an.

```
{
    "action": "publish",
    "message": "ADD_MESSAGE_HERE",
    "topic": "topic/name/here"
}
```

Die Demo wird solange wiederholt, bis sie ein Jobdokument erhält, bei dem der `action` Schlüssel auf `exit` zum Beenden der Demo gesetzt ist. Das Format für das Jobdokument lautet wie folgt.

```
{
    "action: "exit"
}
```

### Einstiegspunkt der Jobs-Demo
<a name="freertos-jobs-demo-functionality-entry-point"></a>

Den Quellcode für die Jobs-Demo-Einstiegsfunktion finden Sie unter [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L773-L967). Diese Funktion führt die folgenden Operationen aus:

1. Stellen Sie mithilfe der Hilfsfunktionen in `mqtt_demo_helpers.c` eine MQTT-Verbindung her.

1. Abonnieren Sie das MQTT-Thema für die `NextJobExecutionChanged` API unter Verwendung von Hilfsfunktionen in. `mqtt_demo_helpers.c` Die Themenzeichenfolge wurde zuvor mithilfe von Makros zusammengestellt, die von der AWS IoT Jobs-Bibliothek definiert wurden.

1. Veröffentlichen Sie im MQTT-Thema für die `StartNextPendingJobExecution` API, indem Sie Hilfsfunktionen in verwenden. `mqtt_demo_helpers.c` Die Themenzeichenfolge wurde zuvor mithilfe von Makros zusammengestellt, die in der AWS IoT Jobs-Bibliothek definiert wurden.

1. Rufen Sie wiederholt `MQTT_ProcessLoop` auf, um eingehende Nachrichten zu empfangen, die `prvEventCallback` zur Verarbeitung weitergeleitet werden.

1. Nachdem die Demoversion die Exit-Aktion erhalten hat, melden Sie sich vom MQTT-Thema ab und trennen Sie die Verbindung mithilfe der Hilfsfunktionen in der `mqtt_demo_helpers.c` Datei.

### Callback für empfangene MQTT-Nachrichten
<a name="freertos-jobs-demo-functionality-callback"></a>

Die EventCallback Funktion [prv](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L674-L769) ruft `Jobs_MatchTopic` aus der AWS IoT Jobs-Bibliothek auf, um die eingehende MQTT-Nachricht zu klassifizieren. Wenn der Nachrichtentyp einem neuen Job entspricht, `prvNextJobHandler()` wird aufgerufen.

Die NextJobHandler Funktion [prv](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L601-L670) und die von ihr aufgerufenen Funktionen analysieren das Jobdokument anhand der JSON-formatted Nachricht und führen die im Job angegebene Aktion aus. Von besonderem Interesse ist die `prvSendUpdateForJob` Funktion.

### Senden Sie ein Update für einen laufenden Job
<a name="freertos-jobs-demo-functionality-send-update"></a>

Die Funktion [prv SendUpdateForJob ()](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L413-L457) ruft `Jobs_Update()` aus der Jobs-Bibliothek auf, um die Themenzeichenfolge aufzufüllen, die im unmittelbar darauf folgenden MQTT-Veröffentlichungsvorgang verwendet wird.