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 danAWS IoTPerangkat SDK untuk Python dan jalankanshadow.py
contoh aplikasi untuk mengedit dokumen Shadow dan mengontrol status bayangan.
Dalam tutorial ini, Anda akan belajar cara:
-
Gunakan perangkat lunak yang diinstal danAWS IoTPerangkat SDK untuk Python untuk menjalankan aplikasi sampel.
-
Pelajari cara memasukkan nilai menggunakan aplikasi sampel menerbitkan nilai yang diinginkan diAWS IoTkonsol.
-
Tinjau
shadow.py
contoh aplikasi dan bagaimana menggunakan protokol MQTT untuk memperbarui status bayangan.
Sebelum Anda menjalankan tutorial ini:
Anda harus telah mengaturAkun AWS, mengkonfigurasi perangkat Raspberry Pi Anda, dan membuatAWS IoThal dan kebijakan yang memberikan izin perangkat untuk mempublikasikan dan berlangganan topik yang dipesan MQTT dari layanan Device Shadow. Untuk informasi selengkapnya, lihat Tutorial: Mempersiapkan Raspberry Pi Anda untuk menjalankan aplikasi bayangan.
Anda juga harus menginstal Git, Python, danAWS IoTSDK for Python. Tutorial ini dibangun di atas konsep-konsep yang disajikan dalam tutorialConnect 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 Device SDK dan kemudian kembali ke tutorial ini untuk menjalankanshadow.py
aplikasi sampel.
Dalam tutorial ini, Anda akan:
Tutorial ini memakan waktu sekitar 20 menit untuk menyelesaikannya.
Langkah 1: Jalankan aplikasi contoh shadow.py
Sebelum Anda menjalankanshadow.py
contoh aplikasi, Anda akan memerlukan informasi berikut selain nama dan lokasi file sertifikat yang Anda instal.
Parameter |
Dimana menemukan nilainya |
---|---|
your-iot-thing-nama |
NamaAWS IoThal yang Anda buat sebelumnyaLangkah 2: Membuat sumber daya hal dan melampirkan kebijakan untuk hal. Untuk menemukan nilai ini, diAWS IoTkonsol |
your-iot-endpoint |
Parameter
|
Instal dan jalankan aplikasi sampel
-
Buka direktori aplikasi sampel.
cd ~/aws-iot-device-sdk-python-v2/samples
-
Di jendela baris perintah, ganti
your-iot-endpoint
danyour-iot-thing-nama
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_nameyour-iot-thing-name
-
Amati bahwa aplikasi sampel:
-
Terhubung keAWSLayanan IoT untuk akun Anda.
-
Berlangganan
Delta
peristiwa danUpdate
danGet
tanggapan. -
Meminta Anda untuk memasukkan nilai yang diinginkan di terminal.
-
Menampilkan output yang serupa dengan yang 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 kesulitan menjalankanshadow.py
contoh aplikasi, reviewLangkah 3: Memecahkan masalah denganshadow.pyaplikasi sampel. Untuk mendapatkan informasi tambahan yang dapat membantu Anda memperbaiki masalah, tambahkan--verbosity debug
parameter ke baris perintah sehingga aplikasi sampel menampilkan pesan rinci tentang apa yang dilakukannya.
Masukkan nilai dan amati pembaruan dalam dokumen Shadow
Anda dapat memasukkan nilai di terminal untuk menentukandesired
nilai, yang juga memperbaruireported
nilai. Katakanlah Anda memasukkan warnayellow
di terminal. Parameterreported
nilai juga diperbarui untuk 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'.
Ketika Anda mempublikasikan permintaan pemutakhiran ini,AWS IoTmenciptakan default, bayangan klasik untuk sumber daya hal. Anda dapat mengamati permintaan pembaruan yang Anda publikasikan kereported
dandesired
nilai-nilai dalamAWS IoTkonsol dengan melihat dokumen Shadow untuk sumber daya hal yang Anda buat (misalnya,My_light_bulb
). Untuk melihat pembaruan dalam dokumen Shadow:
-
DiAWS IoTkonsol, pilihKeloladan kemudian pilihThings.
-
Dalam daftar hal-hal yang ditampilkan, pilih hal yang Anda buat, pilihBayangan, dan kemudian pilihBayangan klasik.
Dokumen Shadow akan serupa dengan yang berikut ini, menunjukkanreported
dandesired
nilai diatur ke warnayellow
. Anda melihat nilai-nilai ini diStatus bayanganbagian dari dokumen.
{ "desired": { "welcome": "aws-iot", "color": "yellow" }, "reported": { "welcome": "aws-iot", "color": "yellow" } }
Anda juga melihatMetadatabagian yang berisi informasi timestamp dan nomor versi permintaan.
Anda dapat menggunakan versi dokumen negara untuk memastikan Anda memperbarui versi terbaru dari dokumen Shadow perangkat. Jika Anda mengirim permintaan pembaruan lain, nomor versi bertambah 1. Ketika 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 pada informasi negara, lanjutkan ke tutorial berikutnyaTutorial: Berinteraksi dengan Device Shadow menggunakan aplikasi sampel dan klien uji MQTTseperti yang dijelaskan dalamLangkah 4: Tinjau hasil dan langkah selanjutnyabagian dari tutorial ini. Opsional, Anda juga dapat mempelajari tentangshadow.py
kode sampel dan bagaimana menggunakan protokol MQTT di bagian berikut.
Langkah 2: Tinjau aplikasi sampel shadow.py Device SDK
Bagian ini mengulasshadow.py
contoh aplikasi dariAWS IoTSDK v2 for Pythondigunakan dalam tutorial ini. Di sini, kami akan meninjau bagaimana menghubungkannyaAWS IoT Coredengan menggunakan MQTT dan MQTT lebih protokol WSS. ParameterAWSwaktu aktif umum (AWS-CRT)
Sementara tutorial ini menggunakan MQTT dan MQTT lebih WSS,AWS IoTmendukung perangkat yang mempublikasikan permintaan HTTPS. Untuk contoh program Python yang mengirimkan pesan HTTP dari perangkat, lihatContoh kode HTTPSmenggunakan Pythonrequests
perpustakaan.
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
Parametershadow.py
panggilan sampelmtls_from_path
(ditampilkan di sini) dimqtt_connection_builder
mtls_from_path
menggunakan sertifikat X.509 dan TLS v1.2 untuk mengotentikasi perangkat. ParameterAWSperpustakaan -CRT menangani rincian 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 )
-
endpoint
adalahAWS IoTendpoint yang Anda lewatkan dari baris perintah danclient_id
adalah ID yang mengidentifikasi perangkat ini secara unik diWilayah AWS. -
cert_filepath
,pri_key_filepath
, danca_filepath
adalah jalur ke sertifikat perangkat dan file kunci pribadi, dan file root CA. -
client_bootstrap
adalah objek runtime umum yang menangani kegiatan komunikasi soket, dan dipakai sebelum panggilan kemqtt_connection_builder.mtls_from_path
. -
on_connection_interrupted
danon_connection_resumed
adalah fungsi callback untuk memanggil ketika koneksi perangkat terganggu dan dilanjutkan. -
clean_session
adalah apakah akan memulai sesi baru, persisten, atau jika ada, sambungkan kembali ke sesi yang sudah ada.keep_alive_secs
adalah nilai tetap hidup, dalam hitungan detik, untuk mengirimCONNECT
permintaan. Ping akan secara otomatis dikirim pada interval ini. Server mengasumsikan bahwa koneksi hilang jika tidak menerima ping setelah 1,5 kali nilai ini.
Parametershadow.py
sampel juga panggilanwebsockets_with_default_aws_signing
di dalammqtt_connection_builder
-
region
adalahAWSpenandatanganan Wilayah digunakan oleh otentikasi Signature V4,credentials_provider
adalahAWSkredensi yang disediakan untuk digunakan untuk otentikasi. Wilayah dilewatkan dari baris perintah, dancredentials_provider
objek dipakai sesaat sebelum panggilan kemqtt_connection_builder.websockets_with_default_aws_signing
. -
websocket_proxy_options
adalah opsi proxy HTTP, jika menggunakan host proxy. Dishadow.py
contoh aplikasi, nilai ini dipakai sesaat sebelum panggilan kemqtt_connection_builder.websockets_with_default_aws_signing
.
Berlangganan topik dan acara Shadow
Parametershadow.py
sampel mencoba untuk membangun koneksi dan menunggu untuk sepenuhnya terhubung. Jika tidak terhubung, perintah akan antri. Setelah terhubung, sampel berlangganan peristiwa delta dan memperbarui dan mendapatkan pesan, dan menerbitkan pesan dengan kualitas layanan (QoS) tingkat 1 (mqtt.QoS.AT_LEAST_ONCE
).
Ketika perangkat berlangganan pesan dengan QoS level 1, broker pesan menyimpan pesan bahwa perangkat berlangganan sampai mereka dapat dikirim ke perangkat. Broker pesan mengirim ulang pesan sampai menerimaPUBACK
respon dari perangkat.
Untuk informasi selengkapnya tentang protokol MQTT, lihatTinjau MQTT protokolnyadanMQTT.
Untuk informasi lebih lanjut tentang bagaimana MQTT, MQTT lebih WSS, sesi persisten, dan tingkat QoS yang digunakan dalam tutorial ini, lihatTinjau aplikasi SDK contoh Perangkat pubsub.py.
Langkah 3: Memecahkan masalah denganshadow.py
aplikasi sampel
Ketika Anda menjalankanshadow.py
contoh aplikasi, Anda akan melihat beberapa pesan yang ditampilkan di terminal dan prompt untuk memasukkandesired
nilai. Jika program melempar 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 tersebut, berikut adalah beberapa hal yang dapat Anda periksa:
-
Periksa alamat endpoint 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 diAWS IoTkonsol.Untuk memeriksa apakah Anda menggunakan nilai yang benar:
-
DiAWS IoTkonsol, pilihKeloladan kemudian pilihThings.
-
Pilih hal yang Anda buat untuk aplikasi sampel Anda (misalnya,MY_LIGHT_Bulb) dan kemudian pilihInteraksi.
Pada halaman detail objek, titik akhir Anda ditampilkan di halamanHTTPSbagian. Anda juga harus melihat pesan yang mengatakan:
This thing already appears to be connected.
-
-
Periksa aktivasi sertifikat
Sertifikat mengautentikasi perangkat AndaAWS IoT Core.
Untuk memeriksa apakah sertifikat Anda aktif:
-
DiAWS IoTkonsol, pilihKeloladan kemudian pilihThings.
-
Pilih hal yang Anda buat untuk aplikasi sampel Anda (misalnya,MY_LIGHT_Bulb) dan kemudian pilihKeamanan.
-
Pilih sertifikat dan kemudian, dari halaman rincian sertifikat, pilih Pilih sertifikat dan kemudian, dari halaman rincian sertifikat, pilihTindakan.
Jika dalam daftar dropdownAktifkantidak tersedia dan Anda hanya dapat memilihNonaktifkan, sertifikat Anda aktif. Jika tidak, pilihAktifkandan jalankan kembali program sampel.
Jika program masih tidak berjalan, periksa nama berkas sertifikat di
certs
folder. -
-
Periksa kebijakan yang dilampirkan pada sumber daya hal
Sementara sertifikat mengautentikasi perangkat Anda,AWS IoTkebijakan mengizinkan perangkat untuk melakukanAWS IoToperasi, seperti berlangganan atau menerbitkan topik cadangan MQTT.
Untuk memeriksa apakah kebijakan yang benar terlampir:
-
Temukan sertifikat seperti yang dijelaskan sebelumnya, lalu pilihKebijakan.
-
Pilih kebijakan yang ditampilkan dan periksa apakah kebijakan tersebut menjelaskan
connect
,subscribe
,receive
, danpublish
tindakan yang memberikan izin perangkat untuk mempublikasikan dan berlangganan topik yang dipesan MQTT.Untuk kebijakan contoh, lihatLangkah 1: MembuatAWS IoTkebijakan untuk Device Shadow.
Jika Anda melihat pesan kesalahan yang menunjukkan masalah saat terhubung keAWS IoT, bisa jadi karena izin yang Anda gunakan untuk kebijakan. Jika demikian, kami menyarankan Anda untuk memulai dengan kebijakan yang menyediakan akses penuh keAWS IoTsumber daya dan kemudian menjalankan kembali program sampel. Anda dapat mengedit kebijakan saat ini, atau memilih kebijakan saat ini, pilihLepaskan, dan kemudian membuat kebijakan lain yang menyediakan akses penuh dan melampirkannya ke sumber daya hal Anda. Anda kemudian dapat membatasi kebijakan untuk hanya tindakan dan kebijakan yang Anda butuhkan untuk menjalankan program.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:*" ], "Resource": "*" } ] }
-
-
Periksa instalasi SDK Perangkat
Jika program masih belum berjalan, Anda dapat menginstal ulang Device SDK untuk memastikan bahwa instalasi SDK Anda selesai dan benar.
Langkah 4: Tinjau hasil dan langkah selanjutnya
Dalam tutorial ini, Anda belajar bagaimana:
-
Menginstal perangkat lunak, alat, dan perangkat lunak yang diperlukanAWS IoTSDK for Python.
-
Memahami bagaimana aplikasi sampel,
shadow.py
, menggunakan protokol MQTT untuk mengambil dan memperbarui status bayangan saat ini. -
Jalankan contoh aplikasi untuk Device Shadows dan amati pembaruan ke dokumen Shadow diAWS IoTkonsol. Anda juga belajar memecahkan masalah dan memperbaiki kesalahan saat menjalankan program.
Langkah selanjutnya
Sekarang Anda dapat menjalankanshadow.py
contoh aplikasi dan menggunakan Device Shadows untuk mengontrol negara. Anda dapat mengamati pembaruan pada dokumen Shadow diAWS IoTKonsol dan amati peristiwa delta yang merespons aplikasi sampel. Dengan menggunakan klien uji MQTT, Anda dapat berlangganan topik bayangan yang dipesan 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.