Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Mengirim SNS pemberitahuan Amazon
Tutorial ini menunjukkan cara membuat AWS IoT aturan yang mengirim data MQTT pesan ke SNS topik Amazon sehingga dapat dikirim sebagai pesan SMS teks.
Dalam tutorial ini, Anda membuat aturan yang mengirimkan data pesan dari sensor cuaca ke semua pelanggan SNS topik Amazon, setiap kali suhu melebihi nilai yang ditetapkan dalam aturan. Aturan mendeteksi ketika suhu yang dilaporkan melebihi nilai yang ditetapkan oleh aturan, dan kemudian membuat muatan pesan baru yang hanya mencakup ID perangkat, suhu yang dilaporkan, dan batas suhu yang terlampaui. Aturan mengirimkan muatan pesan baru sebagai JSON dokumen ke suatu SNS topik, yang memberi tahu semua pelanggan tentang topik tersebutSNS.
Apa yang akan Anda pelajari dalam tutorial ini:
-
Cara membuat dan menguji SNS notifikasi Amazon
-
Cara memanggil SNS notifikasi Amazon dari suatu AWS IoT aturan
-
Cara menggunakan SQL kueri dan fungsi sederhana dalam pernyataan kueri aturan
-
Cara menggunakan MQTT klien untuk menguji AWS IoT aturan
Tutorial ini membutuhkan waktu sekitar 30 menit untuk menyelesaikannya.
Dalam tutorial ini, Anda akan:
Sebelum Anda memulai tutorial ini, pastikan Anda memiliki:
-
Mengatur Akun AWS
Anda akan membutuhkan AWS IoT konsol Akun AWS dan Anda untuk menyelesaikan tutorial ini.
-
Diulas Lihat MQTT pesan dengan AWS IoT MQTT klien
Pastikan Anda dapat menggunakan MQTT klien untuk berlangganan dan mempublikasikan ke suatu topik. Anda akan menggunakan MQTT klien untuk menguji aturan baru Anda dalam prosedur ini.
-
Meninjau Layanan Pemberitahuan Sederhana Amazon
Jika Anda belum pernah menggunakan Amazon SNS sebelumnya, tinjau Menyiapkan akses untuk Amazon SNS. Jika Anda sudah menyelesaikan AWS IoT tutorial lain, Anda Akun AWS harus sudah dikonfigurasi dengan benar.
Langkah 1: Buat SNS topik Amazon yang mengirim pesan SMS teks
Prosedur ini menjelaskan cara membuat SNS topik Amazon sensor cuaca Anda dapat mengirim data pesan ke. SNSTopik Amazon kemudian akan memberi tahu semua pelanggannya melalui pesan SMS teks tentang batas suhu yang terlampaui.
Untuk membuat SNS topik Amazon yang mengirim pesan SMS teks
-
Buat SNS topik Amazon.
-
Masuk ke SNSkonsol Amazon
. -
Di panel navigasi kiri, pilih Topics (Topik).
-
Di halaman Topics (Topik), pilih Create topic (Buat topik).
-
Di Detail, pilih tipe Standar. Secara default, konsol membuat FIFO topik.
-
Di Nama, masukkan nama SNS topik. Untuk tutorial ini, masukkan
high_temp_notice
. -
Gulir ke akhir halaman dan pilih Buat topik.
Konsol membuka halaman Detail topik baru.
-
-
Buat SNS langganan Amazon.
catatan
Nomor telepon yang Anda gunakan dalam langganan ini mungkin dikenakan biaya pesan teks dari pesan yang akan Anda kirim dalam tutorial ini.
-
Di halaman detail topik high_temp_notice, pilih Buat langganan.
-
Di Buat langganan, di bagian Detail, dalam daftar Protokol, pilih SMS.
-
Di Endpoint, masukkan nomor telepon yang dapat menerima pesan teks. Pastikan untuk memasukkannya sedemikian rupa sehingga dimulai dengan
+
, termasuk kode negara dan area, dan tidak menyertakan karakter tanda baca lainnya. -
Pilih Buat langganan.
-
-
Uji SNS notifikasi Amazon.
-
Di SNSkonsol Amazon
, di panel navigasi kiri, pilih Topik. -
Untuk membuka halaman detail topik, di Topik, dalam daftar topik, pilih high_temp_notice.
-
Untuk membuka halaman Publikasikan pesan ke topik, di halaman detail high_temp_notice, pilih Publikasikan pesan.
-
Di Publikasikan pesan ke topik, di bagian Isi pesan, di Badan pesan untuk dikirim ke titik akhir, masukkan pesan singkat.
-
Gulir ke bawah ke bagian bawah halaman dan pilih Publikasikan pesan.
-
Di telepon dengan nomor yang Anda gunakan sebelumnya saat membuat langganan, konfirmasikan bahwa pesan telah diterima.
Jika Anda tidak menerima pesan tes, periksa kembali nomor telepon dan pengaturan telepon Anda.
Pastikan Anda dapat mempublikasikan pesan pengujian dari SNSkonsol Amazon
sebelum melanjutkan tutorial. -
Langkah 2: Buat AWS IoT aturan untuk mengirim pesan teks
AWS IoT Aturan yang akan Anda buat dalam tutorial ini berlangganan device/
MQTT topik di device_id
/data
mana ID perangkat yang mengirim pesan. Topik-topik ini dijelaskan dalam filter topik sebagaidevice_id
device/+/data
, di mana +
adalah karakter wildcard yang cocok dengan string apa pun di antara dua karakter garis miring ke depan. Aturan ini juga menguji nilai temperature
bidang dalam payload pesan.
Saat aturan menerima pesan dari topik yang cocok, aturan akan mengambil
dari nama topik, device_id
temperature
nilai dari payload pesan, dan menambahkan nilai konstan untuk batas pengujian, dan mengirimkan nilai ini sebagai JSON dokumen ke topik SNS notifikasi Amazon.
Misalnya, MQTT pesan dari perangkat sensor cuaca nomor 32 menggunakan device/32/data
topik dan memiliki muatan pesan yang terlihat seperti ini:
{ "temperature": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
Pernyataan kueri aturan mengambil temperature
nilai dari payload pesan,
dari nama topik, dan menambahkan device_id
max_temperature
nilai konstan untuk mengirim payload pesan yang terlihat seperti ini ke topik AmazonSNS:
{ "device_id": "32", "reported_temperature": 38, "max_temperature": 30 }
Untuk membuat AWS IoT aturan untuk mendeteksi nilai suhu melebihi batas dan membuat data untuk dikirim ke topik Amazon SNS
-
Buka hub AturanAWS IoT konsol
. -
Jika ini adalah aturan pertama Anda, pilih Buat, atau Buat aturan.
-
Di Buat aturan:
-
Di Nama, masukkan
temp_limit_notify
.Ingat bahwa nama aturan harus unik di dalam Anda Akun AWS dan Wilayah, dan tidak dapat memiliki spasi apa pun. Kami telah menggunakan karakter garis bawah dalam nama ini untuk memisahkan kata-kata dalam nama aturan.
-
Dalam Deskripsi, jelaskan aturannya.
Deskripsi yang bermakna membuatnya lebih mudah untuk mengingat apa yang dilakukan aturan ini dan mengapa Anda membuatnya. Deskripsi bisa selama dibutuhkan, jadi sedetail mungkin.
-
-
Dalam pernyataan kueri Aturan Buat aturan:
-
Dalam Menggunakan SQL versi, pilih 2016-03-23.
-
Dalam kotak edit pernyataan kueri aturan, masukkan pernyataan:
SELECT topic(2) as device_id, temperature as reported_temperature, 30 as max_temperature FROM 'device/+/data' WHERE temperature > 30
Pernyataan ini:
-
Mendengarkan MQTT pesan dengan topik yang cocok dengan filter
device/+/data
topik dan yang memilikitemperature
nilai lebih besar dari 30. -
Memilih elemen kedua dari string topik dan menugaskannya ke bidang.
device_id
-
Memilih
temperature
bidang nilai dari payload pesan dan menetapkannya ke bidang.reported_temperature
-
Menciptakan nilai konstan
30
untuk mewakili nilai batas dan menetapkannya kemax_temperature
bidang.
-
-
-
Untuk membuka daftar tindakan aturan untuk aturan ini, di Tetapkan satu atau beberapa tindakan, pilih Tambah tindakan.
-
Di Pilih tindakan, pilih Kirim pesan sebagai pemberitahuan SNS push.
-
Untuk membuka halaman konfigurasi tindakan yang dipilih, di bagian bawah daftar tindakan, pilih Konfigurasi tindakan.
-
Dalam tindakan Konfigurasi:
-
Di SNStarget, pilih Pilih, temukan SNS topik Anda bernama high_temp_notice, dan pilih Pilih.
-
Dalam format Pesan, pilih RAW.
-
Di Pilih atau buat peran untuk memberikan AWS IoT akses untuk melakukan tindakan ini, pilih Buat Peran.
-
Di Buat peran baru, di Nama, masukkan nama unik untuk peran baru. Untuk tutorial ini, gunakan
sns_rule_role
. -
Pilih Buat peran.
Jika Anda mengulangi tutorial ini atau menggunakan kembali peran yang ada, pilih Perbarui peran sebelum melanjutkan. Ini memperbarui dokumen kebijakan peran agar berfungsi dengan SNS target.
-
-
Pilih Tambah tindakan dan kembali ke halaman Buat aturan.
Di ubin tindakan baru, di bawah Kirim pesan sebagai pemberitahuan SNS push, Anda dapat melihat SNS topik yang akan dipanggil aturan Anda.
Ini adalah satu-satunya tindakan aturan yang akan Anda tambahkan ke aturan ini.
-
Untuk membuat aturan dan menyelesaikan langkah ini, di Buat aturan, gulir ke bawah ke bawah dan pilih Buat aturan.
Langkah 3: Uji AWS IoT aturan dan SNS pemberitahuan Amazon
Untuk menguji aturan baru Anda, Anda akan menggunakan MQTT klien untuk mempublikasikan dan berlangganan MQTT pesan yang digunakan oleh aturan ini.
Buka MQTTklien di AWS IoT
konsol
Untuk menggunakan MQTT klien untuk menguji aturan Anda
-
Di MQTTklien di AWS IoT konsol
, berlangganan topik input, dalam hal ini, device/+/data
.-
Di MQTT klien, di bawah Langganan, pilih Berlangganan topik.
-
Dalam topik Langganan, masukkan topik filter topik masukan,
device/+/data
. -
Simpan sisa bidang di pengaturan defaultnya.
-
Pilih Berlangganan topik.
Di kolom Langganan, di bawah Publikasikan ke topik,
device/+/data
muncul.
-
-
Publikasikan pesan ke topik input dengan ID perangkat tertentu,
device/32/data
. Anda tidak dapat mempublikasikan ke MQTT topik yang berisi karakter wildcard.-
Di MQTT klien, di bawah Langganan, pilih Publikasikan ke topik.
-
Di bidang Publikasikan, masukkan nama topik masukan,
device/32/data
. -
Salin data sampel yang ditampilkan di sini dan, di kotak edit di bawah nama topik, tempel data sampel.
{ "temperature": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
Pilih Publikasikan ke topik untuk mempublikasikan MQTT pesan Anda.
-
-
Konfirmasikan bahwa pesan teks telah dikirim.
-
Di MQTT klien, di bawah Langganan, ada titik hijau di sebelah topik yang Anda berlangganan sebelumnya.
Titik hijau menunjukkan bahwa satu atau lebih pesan baru telah diterima sejak terakhir kali Anda melihatnya.
-
Di bawah Langganan, pilih perangkat/+/data untuk memeriksa apakah muatan pesan cocok dengan apa yang baru saja Anda terbitkan dan terlihat seperti ini:
{ "temperature": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
Periksa telepon yang Anda gunakan untuk berlangganan SNS topik dan konfirmasikan isi payload pesan terlihat seperti ini:
{"device_id":"32","reported_temperature":38,"max_temperature":30}
Perhatikan bahwa
device_id
nilainya adalah string yang dikutip dantemperature
nilainya numerik. Hal ini karenatopic()
fungsi mengekstrak string dari nama topik pesan masukan sementaratemperature
nilai menggunakan nilai numerik dari payload pesan masukan.Jika Anda ingin membuat nilai
device_id
nilai numerik, gantitopic(2)
dalam pernyataan kueri aturan dengan:cast(topic(2) AS DECIMAL)
Perhatikan bahwa
topic(2)
mentransmisikan nilai ke numerik,DECIMAL
nilai hanya akan berfungsi jika bagian topik tersebut hanya berisi karakter numerik.
-
-
Coba kirim MQTT pesan di mana suhunya tidak melebihi batas.
-
Di MQTT klien, di bawah Langganan, pilih Publikasikan ke topik.
-
Di bidang Publikasikan, masukkan nama topik masukan,
device/33/data
. -
Salin data sampel yang ditampilkan di sini dan, di kotak edit di bawah nama topik, tempel data sampel.
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
Untuk mengirim MQTT pesan, pilih Publikasikan ke topik.
Anda akan melihat pesan yang Anda kirim dalam
device/+/data
langganan. Namun, karena nilai suhu di bawah suhu maks dalam pernyataan kueri aturan, Anda seharusnya tidak menerima pesan teks.Jika Anda tidak melihat perilaku yang benar, periksa tips pemecahan masalah.
-
Memecahkan masalah aturan pesan SNS
Berikut adalah beberapa hal untuk diperiksa, jika Anda tidak melihat hasil yang Anda harapkan.
-
Anda mendapat spanduk kesalahan
Jika kesalahan muncul saat Anda mempublikasikan pesan input, perbaiki kesalahan itu terlebih dahulu. Langkah-langkah berikut dapat membantu Anda memperbaiki kesalahan itu.
-
Anda tidak melihat pesan input di MQTT klien
Setiap kali Anda mempublikasikan pesan masukan Anda ke
device/22/data
topik, pesan itu akan muncul di MQTT klien, jika Anda berlangganan filterdevice/+/data
topik seperti yang dijelaskan dalam prosedur.Hal-hal yang harus diperiksa
-
Periksa filter topik yang Anda langgani
Jika Anda berlangganan topik pesan input seperti yang dijelaskan dalam prosedur, Anda akan melihat salinan pesan input setiap kali Anda mempublikasikannya.
Jika Anda tidak melihat pesan, periksa nama topik yang Anda langgani dan bandingkan dengan topik yang Anda terbitkan. Nama topik peka huruf besar/kecil dan topik yang Anda langgani harus identik dengan topik yang Anda publikasikan payload pesan.
-
Periksa fungsi publikasi pesan
Di MQTT klien, di bawah Langganan, pilih perangkat/+/data, periksa topik pesan terbitkan, lalu pilih Publikasikan ke topik. Anda akan melihat payload pesan dari kotak edit di bawah topik yang muncul di daftar pesan.
-
-
Anda tidak menerima SMS pesan
Agar aturan Anda berfungsi, itu harus memiliki kebijakan yang benar yang mengizinkannya untuk menerima pesan dan mengirim SNS pemberitahuan, dan itu harus menerima pesan.
Hal-hal yang harus diperiksa
-
Periksa MQTT klien Anda dan aturan yang Anda buat Wilayah AWS
Konsol tempat Anda menjalankan MQTT klien harus berada di AWS Wilayah yang sama dengan aturan yang Anda buat.
-
Periksa apakah nilai suhu dalam muatan pesan melebihi ambang uji
Jika nilai suhu kurang dari atau sama dengan 30, seperti yang didefinisikan dalam pernyataan kueri aturan, aturan tidak akan melakukan tindakannya.
-
Periksa topik pesan masukan dalam pernyataan kueri aturan
Agar aturan berfungsi, aturan harus menerima pesan dengan nama topik yang cocok dengan filter topik dalam FROM klausa pernyataan kueri aturan.
Periksa ejaan filter topik dalam pernyataan kueri aturan dengan topik di MQTT klien. Nama topik peka huruf besar/kecil dan topik pesan harus cocok dengan filter topik dalam pernyataan kueri aturan.
-
Periksa isi muatan pesan masukan
Agar aturan berfungsi, ia harus menemukan bidang data di payload pesan yang dideklarasikan dalam SELECT pernyataan.
Periksa ejaan
temperature
bidang dalam pernyataan kueri aturan dengan payload pesan di MQTT klien. Nama bidang peka huruf besar/kecil dantemperature
bidang dalam pernyataan kueri aturan harus identik dengantemperature
bidang di payload pesan.Pastikan bahwa JSON dokumen dalam payload pesan diformat dengan benar. Jika JSON memiliki kesalahan, seperti koma yang hilang, aturan tidak akan dapat membacanya.
-
Periksa topik pesan yang diterbitkan ulang dalam tindakan aturan
Topik di mana tindakan aturan Republish menerbitkan pesan baru harus sesuai dengan topik yang Anda berlangganan di klien. MQTT
Buka aturan yang Anda buat di konsol dan periksa topik di mana tindakan aturan akan menerbitkan ulang pesan.
-
Periksa peran yang digunakan oleh aturan
Tindakan aturan harus memiliki izin untuk menerima topik asli dan mempublikasikan topik baru.
Kebijakan yang mengizinkan aturan untuk menerima data pesan dan mempublikasikannya khusus untuk topik yang digunakan. Jika mengubah topik yang digunakan untuk mempublikasikan ulang data pesan, Anda harus memperbarui peran tindakan aturan untuk memperbarui kebijakannya agar sesuai dengan topik saat ini.
Jika Anda mencurigai ini masalahnya, edit tindakan aturan Republish dan buat peran baru. Peran baru yang dibuat oleh tindakan aturan menerima otorisasi yang diperlukan untuk melakukan tindakan ini.
-
Langkah 4: Tinjau hasil dan langkah selanjutnya
Dalam tutorial ini:
-
Anda membuat dan menguji topik dan langganan SNS notifikasi Amazon.
-
Anda menggunakan SQL kueri dan fungsi sederhana dalam pernyataan kueri aturan untuk membuat pesan baru untuk pemberitahuan Anda.
-
Anda membuat AWS IoT aturan untuk mengirim SNS notifikasi Amazon yang menggunakan payload pesan yang disesuaikan.
-
Anda menggunakan MQTT klien untuk menguji AWS IoT aturan Anda.
Langkah selanjutnya
Setelah Anda mengirim beberapa pesan teks dengan aturan ini, coba bereksperimen dengannya untuk melihat bagaimana mengubah beberapa aspek tutorial memengaruhi pesan dan kapan dikirim. Berikut adalah beberapa ide untuk Anda mulai.
-
Ubah
device_id
dalam topik pesan masukan dan amati efeknya dalam isi pesan teks. -
Ubah bidang yang dipilih dalam pernyataan kueri aturan dan amati efeknya dalam isi pesan teks.
-
Ubah pengujian dalam pernyataan kueri aturan untuk menguji suhu minimum, bukan suhu maksimum. Ingatlah untuk mengubah nama
max_temperature
! -
Tambahkan tindakan aturan penerbitan ulang untuk mengirim MQTT pesan saat SNS pemberitahuan dikirim.
-
Coba tutorial berikutnya dalam seri ini dan pelajari caranyaTutorial: Menyimpan data perangkat dalam tabel DynamoDB.