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 IoTDémo de la bibliothèque d'emplois
Important
Cette démo est hébergée sur le référentiel Amazon-FreeRTOS qui est obsolète. Nous vous recommandons de commencer par cette étape lorsque vous créez un nouveau projet. Si vous possédez déjà un projet FreeRTOS basé sur le référentiel Amazon-FreeRTOS, désormais obsolète, consultez leGuide de migration du référentiel RTOS Github gratuit sur Amazon.
Introduction
La démo de la bibliothèqueAWS IoT Jobs vous montre comment vous connecter au serviceAWS IoT Jobs via une connexion MQTTAWS IoT, récupérer une tâche et la traiter sur un appareil. Le projet de démonstrationAWS IoT Jobs utilise le port Windows FreeRTOS
Note
Pour configurer et exécuter les démos FreeRTOS, suivez les étapes décrites dansCommencez avec Free RTOS.
Organisation du code source
Le code de démonstration se trouve dans lejobs_demo.c
fichier et se trouve sur le GitHub
répertoire.freertos
/demos/jobs_for_aws/
Configuration de la connexion au courtierAWS IoT MQTT
Dans cette démo, vous utilisez une connexion MQTT au courtierAWS IoT MQTT. Cette connexion est configurée de la même manière que leDémonstration d'authentification mutuelle CoreMQTT.
Fonctionnalité
La démo montre le flux de travail utilisé pour recevoir des tâchesAWS IoT et les traiter sur un appareil. La démonstration est interactive et vous oblige à créer des tâches à l'aide de laAWS IoT console ou duAWS Command Line Interface (AWS CLI). Pour de plus amples informations sur la création d'une tâche, veuillez consulter create-tâche dans le manuel de référence desAWS CLI commandes. La démo nécessite que le document de travail comporte uneaction
touche définieprint
pour imprimer un message sur la console.
Veuillez consulter le format suivant pour ce document de tâche.
{ "action": "print", "message": "ADD_MESSAGE_HERE" }
Vous pouvez utiliser leAWS 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 laaction
clé est définiepublish
pour republier le message dans une rubrique. Veuillez consulter le format suivant pour ce document de tâche.
{ "action": "publish", "message": "ADD_MESSAGE_HERE", "topic": "topic/name/here" }
La démo fonctionne en boucle jusqu'à ce qu'elle reçoive un document de travail avec laaction
clé définieexit
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
Le code source de la fonction de point d'entrée de démonstration de Jobs se trouve sur GitHub
-
Établissez une connexion MQTT à l'aide des fonctions d'assistance de
mqtt_demo_helpers.c
. -
Abonnez-vous à la rubrique MQTT relative à l'
NextJobExecutionChanged
API, en utilisant les fonctions d'assistance dansmqtt_demo_helpers.c
. La chaîne de rubrique a été assemblée précédemment à l'aide de macros définies par la bibliothèqueAWS IoT Jobs. -
Publiez dans la rubrique MQTT de l'
StartNextPendingJobExecution
API, à l'aide des fonctions d'assistance demqtt_demo_helpers.c
. La chaîne de rubrique a été assemblée précédemment à l'aide de macros définies par la bibliothèqueAWS IoT Jobs. -
Appelez
MQTT_ProcessLoop
à plusieurs reprises pour recevoir les messages entrants qui sont transmisprvEventCallback
pour traitement. -
Une fois que la démo a reçu l'action de sortie, désabonnez-vous de la rubrique MQTT et déconnectez-vous à l'aide des fonctions d'assistance du
mqtt_demo_helpers.c
fichier.
Rappel pour les messages MQTT reçus
La prvEventCallbackJobs_MatchTopic
depuis la bibliothèqueAWS IoT Jobs pour classer le message MQTT entrant. Si le type de message correspond à une nouvelle tâche,prvNextJobHandler()
est appelé.
La fonction prvNextJobHandlerprvSendUpdateForJob
fonction est particulièrement intéressante.
Envoyer une mise à jour pour une tâche en cours
La fonction prvSendUpdateForJob()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.