

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# AWS IoT Demo della libreria Jobs
<a name="freertos-jobs-demo"></a>

**Importante**  <a name="deprecation-message-demo"></a>
Questa demo è ospitata nel Amazon-FreeRTOS repository che è obsoleto. Ti consigliamo di [iniziare da qui](freertos-getting-started-modular.md) quando crei un nuovo progetto. Se hai già un progetto FreerTOS esistente basato sul repository ora obsoleto, Amazon-FreeRTOS consulta il. [Amazon-FreeRTOS Guida alla migrazione del repository Github](github-repo-migration.md)

## Introduzione
<a name="freertos-jobs-demo-introduction"></a>

La demo della libreria AWS IoT Jobs mostra come connettersi al [servizio AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) tramite una connessione MQTT, recuperare un lavoro da AWS IoT ed elaborarlo su un dispositivo. Il progetto demo di AWS IoT Jobs utilizza la porta [FreerTOS per Windows](https://www.freertos.org/FreeRTOS-Windows-Simulator-Emulator-for-Visual-Studio-and-Eclipse-MingW.html), quindi può essere creato e valutato con [la versione Visual Studio](https://visualstudio.microsoft.com/vs/community/) Community su Windows. Non è necessario alcun hardware per microcontrollori. La demo stabilisce una connessione sicura al broker AWS IoT MQTT utilizzando TLS allo stesso modo del. [Demo di autenticazione reciproca CoreMQTT](mqtt-demo-ma.md)

**Nota**  
Per configurare ed eseguire le demo di FreerTOS, segui i passaggi indicati. [Inizia con FreerTOS](freertos-getting-started.md)

## Organizzazione del codice sorgente
<a name="freertos-jobs-demo-source-code-org"></a>

Il codice demo si trova nel `jobs_demo.c` file e può essere trovato sul [GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c)sito Web o nella `{{freertos}}/demos/jobs_for_aws/` directory.

## Configura il AWS IoT Connessione al broker MQTT
<a name="freertos-jobs-demo-configure-mqtt-broker"></a>

In questa demo, si utilizza una connessione MQTT al broker AWS IoT MQTT. Questa connessione è configurata nello stesso modo di. [Demo di autenticazione reciproca CoreMQTT](mqtt-demo-ma.md)

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

La demo mostra il flusso di lavoro utilizzato per ricevere lavori da un dispositivo AWS IoT ed elaborarli su un dispositivo. La demo è interattiva e richiede la creazione di lavori utilizzando la AWS IoT console o AWS Command Line Interface (AWS CLI). Per ulteriori informazioni sulla creazione di un lavoro, vedere [create-job](https://docs.aws.amazon.com/cli/latest/reference/iot/create-job.html) nel *AWS CLI Command* Reference. La demo richiede che nel documento di lavoro sia impostata una `action` chiave `print` per stampare un messaggio sulla console.

Vedi il seguente formato per questo documento di lavoro.

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

È possibile utilizzare il AWS CLI per creare un lavoro come nel seguente comando di esempio.

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

La demo utilizza anche un documento di lavoro con la `action` chiave impostata `publish` per ripubblicare il messaggio su un argomento. Vedi il seguente formato per questo documento di lavoro.

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

La demo si ripete finché non riceve un documento di lavoro con la `action` chiave impostata `exit` per uscire dalla demo. Il formato del documento di lavoro è il seguente.

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

### Punto di accesso alla demo di Jobs
<a name="freertos-jobs-demo-functionality-entry-point"></a>

Il codice sorgente per la funzione del punto di ingresso della demo di Jobs è disponibile su [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L773-L967). Questa funzione esegue le seguenti operazioni:

1. Stabilire una connessione MQTT utilizzando le funzioni di supporto in. `mqtt_demo_helpers.c`

1. Abbonatevi all'argomento MQTT relativo all'`NextJobExecutionChanged`API, utilizzando le funzioni di supporto in. `mqtt_demo_helpers.c` La stringa dell'argomento è stata assemblata in precedenza, utilizzando le macro definite dalla libreria Jobs. AWS IoT 

1. Pubblica nell'argomento MQTT relativo all'`StartNextPendingJobExecution`API, utilizzando le funzioni di supporto in. `mqtt_demo_helpers.c` La stringa dell'argomento è stata assemblata in precedenza, utilizzando le macro definite dalla libreria Jobs. AWS IoT 

1. Chiama ripetutamente `MQTT_ProcessLoop` per ricevere messaggi in arrivo che vengono consegnati `prvEventCallback` per l'elaborazione.

1. Dopo che la demo ha ricevuto l'azione di uscita, annullate l'iscrizione all'argomento MQTT e disconnettetevi utilizzando le funzioni di supporto presenti nel file. `mqtt_demo_helpers.c`

### Richiamata per i messaggi MQTT ricevuti
<a name="freertos-jobs-demo-functionality-callback"></a>

La EventCallback funzione [prv](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L674-L769) chiama `Jobs_MatchTopic` dalla libreria AWS IoT Jobs per classificare il messaggio MQTT in arrivo. Se il tipo di messaggio corrisponde a un nuovo lavoro, viene chiamato. `prvNextJobHandler()`

La NextJobHandler funzione [prv](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L601-L670) e le funzioni che chiama analizzano il documento di lavoro dal JSON-formatted messaggio ed eseguono l'azione specificata dal processo. Di particolare interesse è la funzione. `prvSendUpdateForJob`

### Invia un aggiornamento per un processo in esecuzione
<a name="freertos-jobs-demo-functionality-send-update"></a>

La funzione [prv SendUpdateForJob ()](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L413-L457) chiama `Jobs_Update()` dalla libreria Jobs per compilare la stringa dell'argomento utilizzata nell'operazione di pubblicazione MQTT che segue immediatamente.