View a markdown version of this page

Tutorial: Menginstal Device SDK dan menjalankan aplikasi sampel untuk Device Shadows - AWS IoT Core

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

Tutorial: Menginstal Device SDK dan menjalankan aplikasi sampel untuk Device Shadows

Bagian ini menunjukkan bagaimana Anda dapat menginstal perangkat lunak yang diperlukan dan AWS IoT Device SDK untuk Python dan menjalankan aplikasi shadow.py sampel untuk mengedit dokumen Shadow dan mengontrol status bayangan.

Dalam tutorial ini, Anda akan belajar bagaimana untuk:
  • Gunakan perangkat lunak yang diinstal dan AWS IoT Device SDK untuk Python untuk menjalankan aplikasi sampel.

  • Pelajari cara memasukkan nilai menggunakan aplikasi sampel menerbitkan nilai yang diinginkan di AWS IoT konsol.

  • Tinjau aplikasi shadow.py sampel dan cara menggunakan protokol MQTT untuk memperbarui status bayangan.

Sebelum Anda menjalankan tutorial ini:

Anda harus mengatur Akun AWS, mengonfigurasi perangkat Raspberry Pi Anda, dan membuat AWS IoT sesuatu dan kebijakan yang memberikan izin perangkat untuk menerbitkan dan berlangganan topik cadangan MQTT dari layanan Device Shadow. Untuk informasi selengkapnya, lihat Tutorial: Mempersiapkan Raspberry Pi Anda untuk menjalankan aplikasi bayangan.

Anda juga harus menginstal Git, Python, dan AWS IoT Device SDK untuk Python. Tutorial ini dibangun di atas konsep yang disajikan dalam tutorialHubungkan Raspberry Pi atau perangkat lain. Jika Anda belum mencoba tutorial itu, kami sarankan Anda mengikuti langkah-langkah yang dijelaskan dalam tutorial itu untuk menginstal file sertifikat dan SDK Perangkat dan kemudian kembali ke tutorial ini untuk menjalankan aplikasi shadow.py sampel.

Tutorial ini membutuhkan waktu sekitar 20 menit untuk menyelesaikannya.

Langkah 1: Jalankan aplikasi sampel shadow.py

Sebelum menjalankan aplikasi shadow.py contoh, Anda memerlukan informasi berikut selain nama dan lokasi file sertifikat yang Anda instal.

Nilai parameter aplikasi

Parameter

Di mana menemukan nilainya

your-iot-thing-name

Nama AWS IoT benda yang Anda buat sebelumnyaLangkah 2: Buat sumber daya benda dan lampirkan kebijakan ke benda itu.

Untuk menemukan nilai ini, di AWS IoT konsol, pilih Kel ola, lalu pilih Th ings.

your-iot-endpoint

your-iot-endpointNilai memiliki format:endpoint_id-ats.iot.region.amazonaws.com, misalnya,a3qj468EXAMPLE-ats.iot.us-west-2.amazonaws.com. Untuk menemukan nilai ini:

  1. Di AWS IoT konsol, pilih Kel ola, lalu pilih Th ings.

  2. Pilih hal IoT yang Anda buat untuk perangkat Anda, My_light_bulb, yang Anda gunakan sebelumnya, lalu pilih Inter act. Pada halaman detail hal, titik akhir Anda ditampilkan di bagian HTTPS.

Instal dan jalankan aplikasi sampel
  1. Arahkan ke direktori aplikasi sampel.

    cd ~/aws-iot-device-sdk-python-v2/samples/service-clients
  2. Di jendela baris perintah, ganti your-iot-endpoint dan your-iot-thing-name seperti yang ditunjukkan dan jalankan perintah ini.

    python3 shadow.py --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint your-iot-endpoint --thing_name your-iot-thing-name
  3. Perhatikan bahwa contoh aplikasi:

    1. Terhubung ke layanan AWS IoT untuk akun Anda.

    2. Berlangganan Delta acara dan Update dan Get tanggapan.

    3. Meminta Anda untuk memasukkan nilai yang diinginkan di terminal.

    4. Menampilkan output yang mirip dengan berikut ini:

    Connecting to a3qEXAMPLEffp-ats.iot.us-west-2.amazonaws.com with client ID 'test-0c8ae2ff-cc87-49d2-a82a-ae7ba1d0ca5a'... Connected! Subscribing to Delta events... Subscribing to Update responses... Subscribing to Get responses... Requesting current shadow state... Launching thread to read user input... Finished getting initial shadow state. Shadow contains reported value 'off'. Enter desired value:
catatan

Jika Anda mengalami masalah dalam menjalankan aplikasi shadow.py sampel, tinjauLangkah 3: Memecahkan masalah dengan aplikasi sampel shadow.py. Untuk mendapatkan informasi tambahan yang dapat membantu Anda memperbaiki masalah, tambahkan --verbosity debug parameter ke baris perintah sehingga aplikasi sampel menampilkan pesan terperinci tentang apa yang dilakukannya.

Masukkan nilai dan amati pembaruan di dokumen Shadow

Anda dapat memasukkan nilai di terminal untuk menentukan desired nilai, yang juga memperbarui nil reported ainya. Katakanlah Anda memasukkan warna yellow di terminal. reportedNilai juga diperbarui ke warnayellow. Berikut ini menunjukkan pesan yang ditampilkan di terminal:

Enter desired value: yellow Changed local shadow value to 'yellow'. Updating reported shadow value to 'yellow'... Update request published. Finished updating reported shadow value to 'yellow'.

Saat Anda menerbitkan permintaan pembaruan ini AWS IoT , membuat bayangan klasik default untuk sumber daya benda. Anda dapat mengamati permintaan pembaruan yang Anda publikasikan ke desired nilai reported dan di AWS IoT konsol dengan melihat dokumen Shadow untuk sumber daya benda yang Anda buat (misalnya,My_light_bulb). Untuk melihat pembaruan di dokumen Shadow:

  1. Di AWS IoT konsol, pilih Kel ola dan kemudian pilih Th ings.

  2. Dalam daftar hal-hal yang ditampilkan, pilih hal yang Anda buat, pilih Bay angan, lalu pilih Bayangan Klasik.

Dokumen Shadow harus terlihat mirip dengan berikut ini, menunjukkan desired nilai reported dan yang disetel ke warnayellow. Anda melihat nilai-nilai ini di bagian Status bayangan dokumen.

{ "desired": { "welcome": "aws-iot", "color": "yellow" }, "reported": { "welcome": "aws-iot", "color": "yellow" } }

Anda juga melihat bagian Metadata yang berisi informasi stempel waktu dan nomor versi permintaan.

Anda dapat menggunakan versi dokumen status untuk memastikan Anda memperbarui versi terbaru dari dokumen Shadow perangkat. Jika Anda mengirim permintaan pembaruan lain, nomor versi bertambah 1. Saat Anda menyediakan versi dengan permintaan pembaruan, layanan menolak permintaan dengan kode respons konflik HTTP 409 jika versi dokumen status saat ini tidak cocok dengan versi yang disediakan.

{ "metadata": { "desired": { "welcome": { "timestamp": 1620156892 }, "color": { "timestamp": 1620156893 } }, "reported": { "welcome": { "timestamp": 1620156892 }, "color": { "timestamp": 1620156893 } } }, "version": 10 }

Untuk mempelajari lebih lanjut tentang dokumen Shadow dan mengamati perubahan informasi status, lanjutkan ke tutorial berikutnya Tutorial: Berinteraksi dengan Device Shadow menggunakan aplikasi sampel dan klien uji MQTT seperti yang dijelaskan di Langkah 4: Tinjau hasil dan langkah selanjutnya bagian tutorial ini. Secara opsional, Anda juga dapat mempelajari tentang kode shadow.py sampel dan bagaimana menggunakan protokol MQTT di bagian berikut.

Langkah 2: Tinjau aplikasi sampel SDK Perangkat shadow.py

Bagian ini meninjau shadow.py contoh aplikasi dari AWS IoT Device SDK v2 untuk Python yang digunakan dalam tutorial ini. Di sini, kami akan meninjau bagaimana terhubung AWS IoT Core dengan menggunakan MQTT dan MQTT melalui protokol WSS. P AWS ustaka runtime umum (AWS-CRT) menyediakan dukungan protokol komunikasi tingkat rendah dan disertakan dengan Device SDK v2 AWS IoT untuk Python.

Sementara tutorial ini menggunakan MQTT dan MQTT melalui WSS, AWS IoT mendukung perangkat yang menerbitkan permintaan HTTPS. Untuk contoh program Python yang mengirim pesan HTTP dari perangkat, lihat contoh kode HTTPS menggunakan pustaka Python. requests

Untuk informasi tentang bagaimana Anda dapat membuat keputusan berdasarkan informasi tentang protokol mana yang akan digunakan untuk komunikasi perangkat Anda, tinjauMemilih protokol aplikasi untuk komunikasi perangkat Anda.

MQTT

Sam shadow.py pel panggilan mtls_from_path (ditampilkan di sini) mqtt_connection_builder untuk membuat koneksi AWS IoT Core dengan menggunakan protokol MQTT. mtls_from_pathmenggunakan X.509 sertifikat dan TLS v1.2 untuk mengotentikasi perangkat. Pust AWS aka -CRT menangani detail tingkat yang lebih rendah dari koneksi itu.

mqtt_connection = mqtt_connection_builder.mtls_from_path( endpoint=args.endpoint, cert_filepath=args.cert, pri_key_filepath=args.key, ca_filepath=args.ca_file, client_bootstrap=client_bootstrap, on_connection_interrupted=on_connection_interrupted, on_connection_resumed=on_connection_resumed, client_id=args.client_id, clean_session=False, keep_alive_secs=6 )
  • endpointadalah AWS IoT titik akhir Anda yang Anda lewatkan dari baris perintah dan client_id merupakan ID yang secara unik mengidentifikasi perangkat ini di Wilayah AWS.

  • cert_filepath,pri_key_filepath, dan ca_filepath merupakan jalur ke sertifikat perangkat dan file kunci pribadi, dan file CA root.

  • client_bootstrapadalah objek runtime umum yang menangani aktivitas komunikasi soket, dan dibuat instansiasi sebelum panggilan ke. mqtt_connection_builder.mtls_from_path

  • on_connection_interrupteddan on_connection_resumed merupakan fungsi panggilan balik untuk menelepon ketika koneksi perangkat terputus dan dilanjutkan.

  • clean_sessionadalah apakah akan memulai sesi baru yang persisten, atau jika ada, sambungkan kembali ke yang sudah ada. keep_alive_secsadalah nilai keep alive, dalam hitungan detik, untuk mengirimkan CONNECT permintaan. Ping akan secara otomatis dikirim pada interval ini. Server mengasumsikan bahwa koneksi hilang jika tidak menerima ping setelah 1,5 kali nilai ini.

Sam shadow.py pel juga memang websockets_with_default_aws_signing gil mqtt_connection_builder untuk membuat koneksi dengan AWS IoT Core menggunakan protokol MQTT melalui WSS. MQTT over WSS juga menggunakan parameter yang sama dengan MQTT dan mengambil parameter tambahan ini:

  • regionadalah Wilayah pen AWS andatanganan yang digunakan oleh otentikasi Signature V4, dan credentials_provider merupakan AWS kredenSIAL yang disediakan untuk digunakan untuk otentikasi. Region dilewatkan dari baris perintah, dan credentials_provider objek dibuat sesaat sebelum panggilan ke. mqtt_connection_builder.websockets_with_default_aws_signing

  • websocket_proxy_optionsadalah opsi proxy HTTP, jika menggunakan host proxy. Di aplikasi shadow.py sampel, nilai ini dibuat instansiasi tepat sebelum panggilan ke. mqtt_connection_builder.websockets_with_default_aws_signing

Berlangganan topik dan acara Shadow

Sam shadow.py pel mencoba untuk membuat koneksi dan menunggu untuk terhubung sepenuhnya. Jika tidak terhubung, perintah akan mengantri. Setelah terhubung, sampel berlangganan acara delta dan memperbarui dan mendapatkan pesan, dan menerbitkan pesan dengan tingkat Kualitas Layanan (QoS) 1 (mqtt.QoS.AT_LEAST_ONCE).

Ketika perangkat berlangganan pesan dengan QoS level 1, broker pesan menyimpan pesan yang berlangganan perangkat hingga dapat dikirim ke perangkat. Pialang pesan mengirim ulang pesan sampai menerima PUBACK respons dari perangkat.

Untuk informasi lebih lanjut tentang protokol MQTT, lihat Tinjau protokol MQTT danMQTT.

Untuk informasi selengkapnya tentang bagaimana MQTT, MQTT melalui WSS, sesi persisten, dan level QoS yang digunakan dalam tutorial ini, lihat. Tinjau aplikasi contoh SDK Perangkat pubsub.py

Langkah 3: Memecahkan masalah dengan aplikasi sampel shadow.py

Saat Anda menjalankan aplikasi shadow.py sampel, Anda akan melihat beberapa pesan ditampilkan di terminal dan prompt untuk memasukkan desired nilai. Jika program menimbulkan kesalahan, maka untuk men-debug kesalahan, Anda dapat mulai dengan memeriksa apakah Anda menjalankan perintah yang benar untuk sistem Anda.

Dalam beberapa kasus, pesan kesalahan mungkin menunjukkan masalah koneksi dan terlihat mirip dengan: Host name was invalid for dns resolution atauConnection was closed unexpectedly. Dalam kasus seperti itu, berikut adalah beberapa hal yang dapat Anda periksa:

  • Periksa alamat titik akhir dalam perintah

    Tinjau endpoint argumen dalam perintah yang Anda masukkan untuk menjalankan aplikasi sampel, (misalnya,a3qEXAMPLEffp-ats.iot.us-west-2.amazonaws.com) dan periksa nilai ini di AWS IoT konsol.

    Untuk memeriksa apakah Anda menggunakan nilai yang benar:

    1. Di AWS IoT konsol, pilih Kel ola dan kemudian pilih Th ings.

    2. Pilih hal yang Anda buat untuk aplikasi sampel Anda (misalnya, My_light_bulb) lalu pilih Inter act.

    Pada halaman detail hal, titik akhir Anda ditampilkan di bagian HTTPS. Anda juga akan melihat pesan yang mengatakan: This thing already appears to be connected.

  • Periksa aktivasi sertifikat

    Sertifikat mengotentikasi perangkat Anda dengan AWS IoT Core.

    Untuk memeriksa apakah sertifikat Anda aktif:

    1. Di AWS IoT konsol, pilih Kel ola dan kemudian pilih Th ings.

    2. Pilih hal yang Anda buat untuk aplikasi sampel Anda (misalnya, My_light_bulb) lalu pilih Keamanan.

    3. Pilih sertifikat dan kemudian, dari halaman detail sertifikat, pilih Pilih sertifikat dan kemudian, dari halaman detail sertifikat, pilih Tind akan.

    Jika di daftar dropdown Aktifkan tidak tersedia dan Anda hanya dapat memilih N onaktifkan, sertifikat Anda aktif. Jika tidak, pilih Aktif kan dan jalankan kembali program sampel.

    Jika program masih tidak berjalan, periksa nama file sertifikat di certs folder.

  • Periksa kebijakan yang dilampirkan pada sumber daya benda

    Sementara sertifikat mengotentikasi perangkat Anda, AWS IoT kebijakan mengizinkan perangkat untuk melakukan AWS IoT operasi, seperti berlangganan atau menerbitkan topik yang dicadangkan MQTT.

    Untuk memeriksa apakah kebijakan yang benar dilampirkan:

    1. Temukan sertifikat seperti yang dijelaskan sebelumnya, lalu pilih Kebijakan.

    2. Pilih kebijakan yang ditampilkan dan periksa apakah kebijakan tersebut menjelaskanconnect,, subscribereceive, dan publish tindakan yang memberikan izin perangkat untuk mempublikasikan dan berlangganan topik yang dicadangkan MQTT.

      Untuk kebijakan sampel, lihatLangkah 1: Buat AWS IoT kebijakan untuk Device Shadow.

    Jika Anda melihat pesan kesalahan yang menunjukkan masalah saat menyam AWS IoT bung, itu mungkin karena izin yang Anda gunakan untuk kebijakan tersebut. Jika demikian, sebaiknya mulai dengan kebijakan yang menyediakan akses penuh ke AWS IoT sumber daya dan kemudian menjalankan kembali program sampel. Anda dapat mengedit kebijakan saat ini, atau memilih kebijakan saat ini, pilih L epaskan, lalu buat kebijakan lain yang menyediakan akses penuh dan melampirkannya ke sumber daya item Anda. Anda nantinya dapat membatasi kebijakan hanya pada tindakan dan kebijakan yang Anda butuhkan untuk menjalankan program.

    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:*" ], "Resource": "*" } ] }
  • Periksa penginstalan Device SDK Anda

    Jika program masih tidak berjalan, Anda dapat menginstal ulang Device SDK untuk memastikan bahwa penginstalan SDK Anda selesai dan benar.

Langkah 4: Tinjau hasil dan langkah selanjutnya

Dalam tutorial ini, Anda belajar bagaimana untuk:
  • Instal perangkat lunak, alat, dan AWS IoT Device SDK yang diperlukan untuk Python.

  • Memahami bagaimana aplikasi sampel,shadow.py, menggunakan protokol MQTT untuk mengambil dan memperbarui status bayangan saat ini.

  • Jalankan aplikasi contoh untuk Device Shadows dan amati pembaruan ke dokumen Shadow di AWS IoT konsol. Anda juga belajar memecahkan masalah dan memperbaiki kesalahan saat menjalankan program.

Langkah selanjutnya

Anda sekarang dapat menjalankan aplikasi shadow.py sampel dan menggunakan Device Shadows untuk mengontrol status. Anda dapat mengamati pembaruan pada dokumen Shadow di Kon AWS IoT sol dan mengamati peristiwa delta yang ditanggapi aplikasi sampel. Menggunakan klien uji MQTT, Anda dapat berlangganan topik bayangan yang dicadangkan dan mengamati pesan yang diterima oleh topik saat menjalankan program sampel. Untuk informasi selengkapnya tentang cara menjalankan tutorial ini, lihatTutorial: Berinteraksi dengan Device Shadow menggunakan aplikasi sampel dan klien uji MQTT.