

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.

# AWS IoT Demostración de la biblioteca de empleos
<a name="freertos-jobs-demo"></a>

**importante**  <a name="deprecation-message-demo"></a>
Esta demostración está alojada en el Amazon-FreeRTOS repositorio, que está en desuso. Recomendamos [empezar por aquí](freertos-getting-started-modular.md) al crear un nuevo proyecto. Si ya tiene un proyecto de Freertos existente basado en el Amazon-FreeRTOS repositorio ahora obsoleto, consulte la. [Amazon-FreeRTOS Guía de migración del repositorio de Github](github-repo-migration.md)

## Introducción
<a name="freertos-jobs-demo-introduction"></a>

La demostración de la biblioteca AWS IoT Jobs muestra cómo conectarse al [servicio AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) mediante una conexión MQTT, recuperar un trabajo desde AWS IoT un dispositivo y procesarlo en él. El proyecto de demostración de AWS IoT Jobs utiliza el [puerto FreeRTOS para Windows](https://www.freertos.org/FreeRTOS-Windows-Simulator-Emulator-for-Visual-Studio-and-Eclipse-MingW.html), por lo que se puede crear y evaluar con la versión de [Visual Studio Community](https://visualstudio.microsoft.com/vs/community/) en Windows. No se necesita ningún hardware de microcontrolador. La demostración establece una conexión segura con el broker AWS IoT MQTT mediante TLS de la misma manera que el. [Demostración de la autenticación mutua de coreMQTT](mqtt-demo-ma.md)

**nota**  
Para configurar y ejecutar las demostraciones de FreeRTOS, siga los pasos que se indican en [Introducción a FreeRTOS](freertos-getting-started.md).

## Organización del código fuente
<a name="freertos-jobs-demo-source-code-org"></a>

El código de demostración está en el `jobs_demo.c` archivo y se puede encontrar en el sitio [GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c)web o en el `{{freertos}}/demos/jobs_for_aws/` directorio.

## Configure el AWS IoT Conexión de broker MQTT
<a name="freertos-jobs-demo-configure-mqtt-broker"></a>

En esta demostración, utiliza una conexión MQTT con el bróker AWS IoT MQTT. Esta conexión se configura de la misma manera que la [Demostración de la autenticación mutua de coreMQTT](mqtt-demo-ma.md).

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

La demostración muestra el flujo de trabajo utilizado para recibir trabajos desde un dispositivo AWS IoT y procesarlos en él. La demostración es interactiva y requiere que cree trabajos mediante la AWS IoT consola o el AWS Command Line Interface (AWS CLI). Para obtener más información sobre cómo crear un trabajo, consulte [create-job](https://docs.aws.amazon.com/cli/latest/reference/iot/create-job.html) 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 el comando AWS CLI para crear un trabajo como en el siguiente ejemplo.

```
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
<a name="freertos-jobs-demo-functionality-entry-point"></a>

El código fuente de la función de punto de entrada de demostración de Jobs se encuentra en [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L773-L967). Esta función realiza las operaciones siguientes:

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

1. 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 ha creado anteriormente, mediante macros definidas por la biblioteca de AWS IoT Jobs.

1. 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 anteriormente, utilizando las macros definidas por la biblioteca de AWS IoT trabajos.

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

1. 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
<a name="freertos-jobs-demo-functionality-callback"></a>

La EventCallback función [prv](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L674-L769) llama `Jobs_MatchTopic` desde la biblioteca AWS IoT Jobs para clasificar el mensaje MQTT entrante. Si el tipo de mensaje corresponde a un nuevo trabajo, se llama a `prvNextJobHandler()`.

La NextJobHandler función [prv](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L601-L670) y las funciones a las que llama analizan el documento de trabajo a partir del JSON-formatted mensaje 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
<a name="freertos-jobs-demo-functionality-send-update"></a>

La función [prv SendUpdateForJob ()](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L413-L457) llama `Jobs_Update()` desde la biblioteca Jobs para rellenar la cadena de temas utilizada en la operación de publicación en MQTT que sigue inmediatamente.