Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Demostración de la biblioteca de trabajos de AWS IoT
importante
Esta demostración está alojada en el repositorio de Amazon-FreeRTOS, que está en desuso. Recomendamos empezar por aquí al crear un nuevo proyecto. Si ya tiene un proyecto FreeRTOS existente basado en el repositorio Amazon FreeRTOS, ahora obsoleto, consulte Guía de migración del repositorio Github de Amazon-FreeRTOS.
Introducción
La demostración de la biblioteca de trabajos de AWS IoT muestra cómo conectarse al servicio de trabajos de AWS IoT mediante una conexión MQTT, recuperar un trabajo desde AWS IoT y procesarlo en un dispositivo. El proyecto de demostración de trabajos de AWS IoT utiliza el puerto FreeRTOS para Windows
nota
Para configurar y ejecutar las demostraciones de FreeRTOS, sigue los pasos que se indican en Introducción a FreeRTOS.
Organización del código fuente
El código de demostración se encuentra en el archivo jobs_demo.c
y se puede encontrar en el sitio web de GitHub
.freertos
/demos/jobs_for_aws/
Configuración de la conexión con el agente de MQTT de AWS IoT
En esta demostración, utilizará una conexión MQTT con el agente de MQTT de AWS IoT. Esta conexión se configura de la misma manera que la Demostración de la autenticación mutua de coreMQTT.
Funcionalidad
La demostración muestra el flujo de trabajo utilizado para recibir trabajos desde AWS IoT y procesarlos en un dispositivo. La demostración es interactiva y requiere que cree trabajos mediante la consola de AWS IoT o la AWS Command Line Interface (AWS CLI). Para obtener más información sobre cómo crear un trabajo, consulte create-job en la Referencia del comando de la AWS CLI. La demostración requiere que el documento de trabajo tenga una clave action
establecida en print
para imprimir un mensaje en la consola.
Consulte el formato siguiente para este documento de trabajo.
{ "action": "print", "message": "ADD_MESSAGE_HERE" }
Puede utilizar la AWS CLI para crear un trabajo, como en el siguiente ejemplo de comando.
aws iot create-job \ --job-id t12 \ --targets arn:aws:iot:
region
:123456789012:thing/device1 \ --document '{"action":"print","message":"hello world!"}'
La demostración también utiliza un documento de trabajo que contiene la clave action
establecida en publish
para volver a publicar el mensaje en un tema. Consulte el formato siguiente para este documento de trabajo.
{ "action": "publish", "message": "ADD_MESSAGE_HERE", "topic": "topic/name/here" }
La demostración se repite hasta que recibe un documento de trabajo con la clave action
establecida en exit
para salir de la demostración. El formato del documento de trabajo es el siguiente.
{ "action: "exit" }
Punto de entrada de la demostración de trabajos
El código fuente de la función de punto de entrada de la demostración de trabajos se puede encontrar en GitHub
-
Establece una conexión MQTT mediante las funciones auxiliares de
mqtt_demo_helpers.c
. -
Se suscribe al tema de MQTT correspondiente a la API
NextJobExecutionChanged
utilizando las funciones auxiliares demqtt_demo_helpers.c
. La cadena de temas se ensambla antes, mediante macros definidas por la biblioteca de trabajos de AWS IoT. -
Publica en el tema de MQTT correspondiente a la API
StartNextPendingJobExecution
utilizando las funciones auxiliares demqtt_demo_helpers.c
. La cadena de temas se ensambla antes, mediante macros definidas por la biblioteca de trabajos de AWS IoT. -
Llama repetidamente a
MQTT_ProcessLoop
para recibir los mensajes entrantes que se entregan aprvEventCallback
para su procesamiento. -
Cuando la demostración reciba la acción de salida, cancela la suscripción al tema de MQTT y se desconecta mediante las funciones auxiliares del archivo
mqtt_demo_helpers.c
.
Devolución de llamada para mensajes MQTT recibidos
La función prvEventCallbackJobs_MatchTopic
desde la biblioteca de trabajos de AWS IoT para clasificar el mensaje MQTT entrante. Si el tipo de mensaje corresponde a un nuevo trabajo, se llama a prvNextJobHandler()
.
La función prvNextJobHandlerprvSendUpdateForJob
es de particular interés.
Envío de una actualización para un trabajo en ejecución
La función prvSendUpdateForJob ()Jobs_Update()
desde la biblioteca de trabajos para rellenar la cadena de temas utilizada en la operación de publicación en MQTT que sigue inmediatamente.