AWS IoT Device DefenderDemo - FreeRTOS

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

AWS IoT Device DefenderDemo

penting

Demo ini di-host di repositori Amazon-freertos yang tidak digunakan lagi. Kami menyarankan Anda mulai di sini ketika Anda membuat proyek baru. Jika Anda sudah memiliki proyek FreeRTOS yang sudah ada berdasarkan repositori Amazon-freertos yang sekarang tidak digunakan lagi, lihatPanduan Migrasi Repositori Github Amazon-freertos.

Pengantar

Demo ini menunjukkan cara menggunakan libraryAWS IoT Device Defender untuk terhubung AWS IoT Device Defender. Demo menggunakan pustaka CoremQTT untuk membuat koneksi MQTT melalui TLS (otentikasi bersama) ke BrokerAWS IoT MQTT dan pustaka CoreJSON untuk memvalidasi dan mengurai tanggapan yang diterima dariAWS IoT Device Defender layanan. Demo menunjukkan cara membuat laporan berformat JSON menggunakan metrik yang dikumpulkan dari perangkat, dan cara mengirimkan laporan yang dibuat keAWS IoT Device Defender layanan. Demo juga menunjukkan cara mendaftarkan fungsi callback dengan pustaka CoreMQTT untuk menangani respons dariAWS IoT Device Defender layanan untuk mengonfirmasi apakah laporan terkirim diterima atau ditolak.

catatan

Untuk mengatur dan menjalankan demo FreeRTOS, ikuti langkah-langkah di dalamnyaMemulai dengan FreeRTOS.

Fungsionalitas

Demo ini membuat tugas aplikasi tunggal yang menunjukkan cara mengumpulkan metrik, membuat laporan pembela perangkat dalam format JSON, dan mengirimkannya keAWS IoT Device Defender layanan melalui koneksi MQTT yang aman ke BrokerAWS IoT MQTT. Demo ini mencakup metrik jaringan standar serta metrik khusus. Untuk metrik khusus, demo mencakup:

  • Metrik bernamatask_numbers "" yang merupakan daftar ID tugas FreeRTOS. Jenis metrik ini adalah “daftar angka”.

  • Metrik bernamastack_high_water_mark "" yang merupakan tanda air tinggi tumpukan untuk tugas aplikasi demo. Jenis metrik ini adalah “angka”.

Cara kami mengumpulkan metrik jaringan tergantung pada tumpukan TCP/IP yang digunakan. Untuk FreeRTOS+TCP dan konfigurasi lwIP yang didukung, kami menyediakan implementasi pengumpulan metrik yang mengumpulkan metrik nyata dari perangkat dan mengirimkannya dalamAWS IoT Device Defender laporan. Anda dapat menemukan implementasi untuk FreeRtos+TCP dan lwIP aktif GitHub.

Untuk papan yang menggunakan tumpukan TCP/IP lainnya, kami menyediakan definisi rintisan dari fungsi pengumpulan metrik yang mengembalikan angka nol untuk semua metrik jaringan. Menerapkan fungsifreertos/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c untuk tumpukan jaringan Anda untuk mengirim metrik nyata. File ini juga tersedia di situs GitHubweb.

Untuk ESP32, konfigurasi LWip default tidak menggunakan penguncian inti dan oleh karena itu demo akan menggunakan metrik berduri. Jika Anda ingin menggunakan implementasi koleksi metrik LWip referensi, tentukan makro berikut dilwiopts.h:

#define LINK_SPEED_OF_YOUR_NETIF_IN_BPS 0 #define LWIP_TCPIP_CORE_LOCKING 1 #define LWIP_STATS 1 #define MIB2_STATS 1

Berikut ini adalah sebuah contoh output.

Jika papan Anda tidak menggunakan FreeRtos+TCP atau konfigurasi lwIP yang didukung, output akan terlihat seperti berikut.

Kode sumber demo ada di unduhan Anda difreertos/demos/device_defender_for_aws/ direktori atau di GitHubsitus web.

BerlanggananAWS IoT Device Defender topik

Fungsi subscribeToDefenderTopik berlangganan topik MQTT di mana tanggapan terhadap laporan Device Defender yang dipublikasikan akan diterima. Ini menggunakan makroDEFENDER_API_JSON_ACCEPTED untuk membangun string topik di mana tanggapan untuk laporan pembela perangkat yang diterima diterima. Ini menggunakan makroDEFENDER_API_JSON_REJECTED untuk membangun string topik di mana tanggapan untuk laporan pembela perangkat yang ditolak akan diterima.

Mengumpulkan metrik perangkat

collectDeviceMetricsFungsi ini mengumpulkan metrik jaringan menggunakan fungsi yang didefinisikan dalammetrics_collector.h. Metrik yang dikumpulkan adalah jumlah byte dan paket yang dikirim dan diterima, port TCP terbuka, port UDP terbuka, dan koneksi TCP yang ditetapkan.

MenghasilkanAWS IoT Device Defender laporan

Fungsi generateDeviceMetricsLaporan menghasilkan laporan pembela perangkat menggunakan fungsi yang ditentukan dalamreport_builder.h. Fungsi itu mengambil metrik jaringan dan buffer, membuat dokumen JSON dalam format seperti yang diharapkan olehAWS IoT Device Defender dan menulisnya ke buffer yang disediakan. Format dokumen JSON yang diharapkanAWS IoT Device Defender ditentukan dalam metrik sisi perangkat di PanduanAWS IoT Pengembang.

MenerbitkanAWS IoT Device Defender laporan

AWS IoT Device DefenderLaporan ini dipublikasikan pada topik MQTT untuk menerbitkanAWS IoT Device Defender laporan JSON. Laporan ini dibuat menggunakan makroDEFENDER_API_JSON_PUBLISH, seperti yang ditunjukkan dalam cuplikan kode ini di GitHub situs web.

Callback untuk menangani respons

Fungsi PublishCallback menangani pesan publikasi MQTT yang masuk. Ini menggunakanDefender_MatchTopic API dariAWS IoT Device Defender perpustakaan untuk memeriksa apakah pesan MQTT yang masuk berasal dariAWS IoT Device Defender layanan. Jika pesan berasal dariAWS IoT Device Defender layanan, pesan akan mengurai respons JSON yang diterima dan mengekstrak ID laporan dalam respons. ID laporan kemudian diverifikasi sama dengan yang dikirim dalam laporan.