

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# AWS IoT Demo da biblioteca de empregos
<a name="freertos-jobs-demo"></a>

**Importante**  <a name="deprecation-message-demo"></a>
Essa demonstração está hospedada no Amazon-FreeRTOS repositório que está obsoleto. Recomendamos [começar aqui](freertos-getting-started-modular.md) ao criar um novo projeto. Se você já tem um projeto FreeRTOS existente com base no repositório agora Amazon-FreeRTOS obsoleto, consulte o. [Amazon-FreeRTOS Guia de migração do repositório Github](github-repo-migration.md)

## Introdução
<a name="freertos-jobs-demo-introduction"></a>

A demonstração da biblioteca AWS IoT Jobs mostra como se conectar ao [serviço AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) por meio de uma conexão MQTT, recuperar um trabalho e processá-lo em um dispositivo. AWS IoT O projeto de demonstração de AWS IoT Jobs usa a porta [FreeRTOS para Windows](https://www.freertos.org/FreeRTOS-Windows-Simulator-Emulator-for-Visual-Studio-and-Eclipse-MingW.html), para que possa ser criado e avaliado com a versão [do Visual Studio Community no](https://visualstudio.microsoft.com/vs/community/) Windows. Nenhum hardware de microcontrolador é necessário. A demonstração estabelece uma conexão segura com o corretor AWS IoT MQTT usando TLS da mesma maneira que o. [Demonstração de autenticação mútua da coreMQTT](mqtt-demo-ma.md)

**nota**  
Para configurar e executar as demonstrações do FreeRTOS, siga as etapas em [Conceitos básicos do FreeRTOS](freertos-getting-started.md).

## Organização de código-fonte
<a name="freertos-jobs-demo-source-code-org"></a>

O código de demonstração está no `jobs_demo.c` arquivo e pode ser encontrado no [GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c)site ou no `{{freertos}}/demos/jobs_for_aws/` diretório.

## Configurar o AWS IoT Conexão do corretor MQTT
<a name="freertos-jobs-demo-configure-mqtt-broker"></a>

Nesta demonstração, você usa uma conexão MQTT com o corretor AWS IoT MQTT. Essa conexão é configurada da mesma forma que [Demonstração de autenticação mútua da coreMQTT](mqtt-demo-ma.md).

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

A demonstração mostra o fluxo de trabalho usado para receber trabalhos AWS IoT e processá-los em um dispositivo. A demonstração é interativa e exige que você crie trabalhos usando o AWS IoT console ou o AWS Command Line Interface (AWS CLI). Para obter mais informações sobre como criar um trabalho, consulte [create-job](https://docs.aws.amazon.com/cli/latest/reference/iot/create-job.html) na *Referência de comandos da AWS CLI *. A demonstração exige que o documento do trabalho tenha uma chave `action`definida como `print` para exibir uma mensagem no console.

Veja o formato a seguir para esse documento de trabalho.

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

Você pode usar o AWS CLI para criar um trabalho como no exemplo de comando a seguir.

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

A demonstração também usa um documento de trabalho que tem a chave `action` definida `publish` para republicar a mensagem em um tópico. Veja o formato a seguir para esse documento de trabalho.

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

A demonstração continua até receber um documento de trabalho com a chave `action` configurada `exit` para sair da demonstração. O formato do documento de trabalho é o seguinte.

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

### Ponto de entrada da demonstração da Jobs
<a name="freertos-jobs-demo-functionality-entry-point"></a>

O código-fonte da função de ponto de entrada de demonstração do Jobs pode ser encontrado em [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L773-L967). Essa função executa as seguintes operações:

1. Estabeleça uma conexão MQTT usando as funções auxiliares em `mqtt_demo_helpers.c`.

1. Inscreva-se no tópico MQTT para a API `NextJobExecutionChanged`, usando funções auxiliares em `mqtt_demo_helpers.c`. A string do tópico é montada anteriormente, usando macros definidas pela biblioteca AWS IoT Jobs.

1. Publique no tópico MQTT para a API `StartNextPendingJobExecution`, usando funções auxiliares em `mqtt_demo_helpers.c`. A string do tópico é montada anteriormente, usando macros definidas pela biblioteca AWS IoT Jobs.

1. Chame repetidamente `MQTT_ProcessLoop` para receber mensagens de entrada que são entregues ao `prvEventCallback` para processamento.

1. Depois que a demonstração receber a ação de saída, cancele sua inscrição do tópico MQTT e desconecte-se usando as funções auxiliares no arquivo `mqtt_demo_helpers.c`.

### Retorno de chamada para mensagens MQTT recebidas
<a name="freertos-jobs-demo-functionality-callback"></a>

A EventCallback função [prv](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L674-L769) chama `Jobs_MatchTopic` da biblioteca AWS IoT Jobs para classificar a mensagem MQTT recebida. Se o tipo de mensagem corresponder a um novo trabalho, `prvNextJobHandler()` será chamado.

A NextJobHandler função [prv](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L601-L670) e as funções que ela chama analisam o documento do trabalho a partir da JSON-formatted mensagem e executam a ação especificada pelo trabalho. A função `prvSendUpdateForJob` é particularmente interessante.

### Enviar uma atualização para um trabalho em execução
<a name="freertos-jobs-demo-functionality-send-update"></a>

A função [prv SendUpdateForJob ()](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L413-L457) chama `Jobs_Update()` da biblioteca Jobs para preencher a string de tópico usada na operação de publicação do MQTT que se segue imediatamente.