Demostración de la biblioteca de trabajos de AWS IoT - Gratuito RTOS

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, por lo que se puede crear y evaluar con la versión de Visual Studio Community en Windows. No se necesita ningún hardware de microcontrolador. La demostración establece una conexión segura con el agente MQTT de AWS IoT mediante TLS de la misma manera que la Demostración de la autenticación mutua de coreMQTT.

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 o en el directorio 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. Esta función realiza las operaciones siguientes:

  1. Establece una conexión MQTT mediante las funciones auxiliares de mqtt_demo_helpers.c.

  2. Se suscribe al tema de MQTT correspondiente a la API NextJobExecutionChanged utilizando las funciones auxiliares de mqtt_demo_helpers.c. La cadena de temas se ensambla antes, mediante macros definidas por la biblioteca de trabajos de AWS IoT.

  3. Publica en el tema de MQTT correspondiente a la API StartNextPendingJobExecution utilizando las funciones auxiliares de mqtt_demo_helpers.c. La cadena de temas se ensambla antes, mediante macros definidas por la biblioteca de trabajos de AWS IoT.

  4. Llama repetidamente a MQTT_ProcessLoop para recibir los mensajes entrantes que se entregan a prvEventCallback para su procesamiento.

  5. 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 prvEventCallback llama a Jobs_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 prvNextJobHandler y las funciones a las que llama analizan el documento de trabajo a partir del mensaje con formato JSON y ejecutan la acción especificada en el trabajo. La función prvSendUpdateForJob es de particular interés.

Envío de una actualización para un trabajo en ejecución

La función prvSendUpdateForJob () llama a 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.