

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# AWS IoT Demo perpustakaan pekerjaan
<a name="freertos-jobs-demo"></a>

**penting**  <a name="deprecation-message-demo"></a>
Demo ini di-host di repositori Amazon-Freertos yang tidak digunakan lagi. Kami menyarankan Anda [mulai di sini](freertos-getting-started-modular.md) ketika Anda membuat proyek baru. Jika Anda sudah memiliki proyek FreeRTOS yang sudah ada berdasarkan repositori Amazon-FreerTOS yang sekarang tidak digunakan lagi, lihat. [Panduan Migrasi Repositori Github Amazon-freertos](github-repo-migration.md)

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

Demo pustaka AWS IoT Jobs menunjukkan kepada Anda cara menyambung ke [layanan AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html) melalui koneksi MQTT, mengambil pekerjaan dari AWS IoT, dan memprosesnya di perangkat. Proyek demo AWS IoT Jobs menggunakan port [Windows FreeRTOS](https://www.freertos.org/FreeRTOS-Windows-Simulator-Emulator-for-Visual-Studio-and-Eclipse-MingW.html), sehingga dapat dibangun dan dievaluasi dengan versi Komunitas [Visual Studio di](https://visualstudio.microsoft.com/vs/community/) Windows. Tidak diperlukan perangkat keras mikrokontroler. Demo menetapkan koneksi aman ke broker AWS IoT MQTT menggunakan TLS dengan cara yang sama seperti. [Demo otentikasi timbal balik CoreMQTT](mqtt-demo-ma.md)

**catatan**  
Untuk mengatur dan menjalankan demo FreeRTOS, ikuti langkah-langkahnya. [Memulai dengan FreeRTOS](freertos-getting-started.md)

## Organisasi kode sumber
<a name="freertos-jobs-demo-source-code-org"></a>

Kode demo ada di `jobs_demo.c` file dan dapat ditemukan di [GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c)situs web atau di `freertos/demos/jobs_for_aws/` direktori.

## Konfigurasikan koneksi AWS IoT broker MQTT
<a name="freertos-jobs-demo-configure-mqtt-broker"></a>

Dalam demo ini, Anda menggunakan koneksi MQTT ke broker MQTT. AWS IoT Koneksi ini dikonfigurasi dengan cara yang sama seperti[Demo otentikasi timbal balik CoreMQTT](mqtt-demo-ma.md).

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

Demo menunjukkan alur kerja yang digunakan untuk menerima pekerjaan dari AWS IoT dan memprosesnya di perangkat. Demo ini interaktif dan mengharuskan Anda untuk membuat pekerjaan dengan menggunakan AWS IoT konsol atau AWS Command Line Interface (AWS CLI). *Untuk informasi selengkapnya tentang membuat pekerjaan, lihat [create-job](https://docs.aws.amazon.com/cli/latest/reference/iot/create-job.html) di Command Reference.AWS CLI * Demo mengharuskan dokumen pekerjaan memiliki `action` kunci yang disetel `print` untuk mencetak pesan ke konsol.

Lihat format berikut untuk dokumen pekerjaan ini.

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

Anda dapat menggunakan AWS CLI untuk membuat pekerjaan seperti pada perintah contoh berikut.

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

Demo juga menggunakan dokumen pekerjaan yang memiliki `action` kunci yang disetel `publish` untuk menerbitkan ulang pesan ke suatu topik. Lihat format berikut untuk dokumen pekerjaan ini.

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

Demo loop hingga menerima dokumen pekerjaan dengan `action` kunci yang disetel `exit` untuk keluar dari demo. Format untuk dokumen pekerjaan adalah sebagai berikut.

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

### Titik masuk demo Jobs
<a name="freertos-jobs-demo-functionality-entry-point"></a>

Kode sumber untuk fungsi titik masuk demo Jobs dapat ditemukan di [ GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L773-L967). Fungsi ini melakukan operasi berikut:

1. Buat koneksi MQTT menggunakan fungsi pembantu di. `mqtt_demo_helpers.c`

1. Berlangganan topik MQTT untuk `NextJobExecutionChanged` API, menggunakan fungsi pembantu di. `mqtt_demo_helpers.c` String topik dirakit sebelumnya, menggunakan makro yang ditentukan oleh pustaka AWS IoT Jobs.

1. Publikasikan ke topik MQTT untuk `StartNextPendingJobExecution` API, menggunakan fungsi pembantu di. `mqtt_demo_helpers.c` String topik dirakit sebelumnya, menggunakan makro yang ditentukan oleh pustaka AWS IoT Jobs.

1. Panggilan berulang kali `MQTT_ProcessLoop` untuk menerima pesan masuk yang diserahkan `prvEventCallback` untuk diproses.

1. Setelah demo menerima tindakan keluar, berhenti berlangganan dari topik MQTT dan putuskan sambungan, menggunakan fungsi pembantu dalam file. `mqtt_demo_helpers.c`

### Callback untuk pesan MQTT yang diterima
<a name="freertos-jobs-demo-functionality-callback"></a>

[ prvEventCallback](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L674-L769)Fungsi panggilan `Jobs_MatchTopic` dari pustaka AWS IoT Jobs untuk mengklasifikasikan pesan MQTT yang masuk. Jika jenis pesan sesuai dengan pekerjaan baru, `prvNextJobHandler()` dipanggil.

Fungsi [ prvNextJobHandler](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L601-L670), dan fungsi yang dipanggilnya, mengurai dokumen pekerjaan dari pesan berformat JSON, dan menjalankan tindakan yang ditentukan oleh pekerjaan. Yang menarik adalah `prvSendUpdateForJob` fungsinya.

### Kirim pembaruan untuk pekerjaan yang sedang berjalan
<a name="freertos-jobs-demo-functionality-send-update"></a>

Fungsi [ prvSendUpdateForJob()](https://github.com/aws/amazon-freertos/blob/main/demos/jobs_for_aws/jobs_demo.c#L413-L457) memanggil `Jobs_Update()` dari pustaka Jobs untuk mengisi string topik yang digunakan dalam operasi publikasi MQTT yang segera mengikuti.