

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# AWS IoT Démo de la bibliothèque d'emplois
<a name="freertos-jobs-demo"></a>

**Important**  <a name="deprecation-message-demo"></a>
Cette démo est hébergée sur le Amazon-FreeRTOS référentiel qui est obsolète. Nous vous recommandons de [commencer ici](freertos-getting-started-modular.md) lorsque vous créez un nouveau projet. Si vous possédez déjà un projet FreeRTOS basé sur le référentiel désormais Amazon-FreeRTOS obsolète, consultez le. [Amazon-FreeRTOS Guide de migration du référentiel Github](github-repo-migration.md)

## Introduction
<a name="freertos-jobs-demo-introduction"></a>

La démo de la bibliothèque de AWS IoT tâches vous montre comment vous connecter au [service AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) via une connexion MQTT, récupérer une tâche et la traiter sur un appareil. AWS IoT Le projet de démonstration AWS IoT Jobs utilise le port [FreeRTOS pour Windows](https://www.freertos.org/FreeRTOS-Windows-Simulator-Emulator-for-Visual-Studio-and-Eclipse-MingW.html), de sorte qu'il peut être créé et évalué avec [la version Visual Studio](https://visualstudio.microsoft.com/vs/community/) Community sous Windows. Aucun microcontrôleur n'est nécessaire. La démo établit une connexion sécurisée avec le broker AWS IoT MQTT à l'aide du protocole TLS de la même manière que le. [Démo de l'authentification mutuelle CoreMQTT](mqtt-demo-ma.md)

**Note**  
Pour configurer et exécuter les démos de FreeRTOS, suivez les étapes décrites dans. [Commencez avec FreeRTOS](freertos-getting-started.md)

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

Le code de démonstration se trouve dans le `jobs_demo.c` fichier et se trouve sur le [GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c)site Web ou dans le `{{freertos}}/demos/jobs_for_aws/` répertoire.

## Configurez le AWS IoT Connexion au broker MQTT
<a name="freertos-jobs-demo-configure-mqtt-broker"></a>

Dans cette démonstration, vous utilisez une connexion MQTT au broker AWS IoT MQTT. Cette connexion est configurée de la même manière que le[Démo de l'authentification mutuelle CoreMQTT](mqtt-demo-ma.md).

## Fonctionnalité
<a name="freertos-jobs-demo-functionality"></a>

La démo montre le flux de travail utilisé pour recevoir des tâches AWS IoT et les traiter sur un appareil. La démo est interactive et vous oblige à créer des tâches à l'aide de la AWS IoT console ou du AWS Command Line Interface (AWS CLI). Pour plus d'informations sur la création d'une tâche, voir [create-job](https://docs.aws.amazon.com/cli/latest/reference/iot/create-job.html) dans le manuel *AWS CLI Command* Reference. La démo nécessite que le document de travail comporte une `action` clé configurée `print` pour imprimer un message sur la console.

Consultez le format suivant pour ce document de travail.

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

Vous pouvez utiliser le AWS CLI pour créer une tâche comme dans l'exemple de commande suivant.

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

La démo utilise également un document de travail dont la `action` clé est définie `publish` pour republier le message dans un sujet. Consultez le format suivant pour ce document de travail.

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

La démo s'exécute en boucle jusqu'à ce qu'elle reçoive un document de travail dont la `action` touche est réglée `exit` pour quitter la démo. Le format du document de travail est le suivant.

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

### Point d'entrée de la démo Jobs
<a name="freertos-jobs-demo-functionality-entry-point"></a>

Le code source de la fonction de point d'entrée de démonstration de Jobs se trouve sur [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L773-L967). Cette fonction effectue les opérations suivantes :

1. Établissez une connexion MQTT à l'aide des fonctions d'assistance dans. `mqtt_demo_helpers.c`

1. Abonnez-vous à la rubrique MQTT relative à l'`NextJobExecutionChanged`API, en utilisant les fonctions d'assistance dans. `mqtt_demo_helpers.c` La chaîne de rubrique a été assemblée plus tôt, à l'aide de macros définies par la bibliothèque AWS IoT Jobs.

1. Publiez dans la rubrique MQTT de l'`StartNextPendingJobExecution`API, à l'aide des fonctions d'assistance dans. `mqtt_demo_helpers.c` La chaîne de rubrique a été assemblée plus tôt, à l'aide de macros définies par la bibliothèque AWS IoT Jobs.

1. Appelez `MQTT_ProcessLoop` à plusieurs reprises pour recevoir les messages entrants qui sont remis `prvEventCallback` pour traitement.

1. Une fois que la démo a reçu l'action de sortie, désabonnez-vous du sujet MQTT et déconnectez-vous à l'aide des fonctions d'assistance du `mqtt_demo_helpers.c` fichier.

### Rappel pour les messages MQTT reçus
<a name="freertos-jobs-demo-functionality-callback"></a>

La EventCallback fonction [prv](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L674-L769) appelle `Jobs_MatchTopic` depuis la bibliothèque AWS IoT Jobs pour classer le message MQTT entrant. Si le type de message correspond à une nouvelle tâche, `prvNextJobHandler()` il est appelé.

La NextJobHandler fonction [prv](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L601-L670) et les fonctions qu'elle appelle analysent le document de tâche à partir du JSON-formatted message et exécutent l'action spécifiée par la tâche. La `prvSendUpdateForJob` fonction est particulièrement intéressante.

### Envoyer une mise à jour pour une tâche en cours
<a name="freertos-jobs-demo-functionality-send-update"></a>

La fonction [prv SendUpdateForJob ()](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L413-L457) appelle `Jobs_Update()` depuis la bibliothèque Jobs pour renseigner la chaîne de rubrique utilisée dans l'opération de publication MQTT qui suit immédiatement.