Tutorial: Mengirim notifikasi Amazon SNS - AWS IoT Core

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

Tutorial: Mengirim notifikasi Amazon SNS

Tutorial ini menunjukkan cara membuat AWS IoT aturan yang mengirimkan data pesan MQTT ke topik Amazon SNS sehingga dapat dikirim sebagai pesan teks SMS.

Dalam tutorial ini, Anda membuat aturan yang mengirimkan data pesan dari sensor cuaca ke semua pelanggan topik Amazon SNS, 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 payload pesan baru sebagai dokumen JSON ke topik SNS, yang memberi tahu semua pelanggan ke topik SNS.

Apa yang akan Anda pelajari dalam tutorial ini:
  • Cara membuat dan menguji notifikasi Amazon SNS

  • Cara memanggil notifikasi Amazon SNS dari suatu aturan AWS IoT

  • Cara menggunakan kueri dan fungsi SQL sederhana dalam pernyataan kueri aturan

  • Cara menggunakan klien MQTT untuk menguji aturan AWS IoT

Tutorial ini membutuhkan waktu sekitar 30 menit untuk menyelesaikannya.

Sebelum Anda memulai tutorial ini, pastikan Anda memiliki:

Langkah 1: Buat topik Amazon SNS yang mengirim pesan teks SMS

Untuk membuat topik Amazon SNS yang mengirim pesan teks SMS
  1. Buat topik Amazon SNS.

    1. Masuk ke konsol Amazon SNS.

    2. Di panel navigasi kiri, pilih Topics (Topik).

    3. Di halaman Topics (Topik), pilih Create topic (Buat topik).

    4. Di Detail, pilih tipe Standar. Secara default, konsol membuat topik FIFO.

    5. Di Nama, masukkan nama topik SNS. Untuk tutorial ini, masukkan high_temp_notice.

    6. Gulir ke akhir halaman dan pilih Buat topik.

      Konsol membuka halaman Detail topik baru.

  2. Buat langganan Amazon SNS.

    catatan

    Nomor telepon yang Anda gunakan dalam langganan ini mungkin dikenakan biaya pesan teks dari pesan yang akan Anda kirim dalam tutorial ini.

    1. Di halaman detail topik high_temp_notice, pilih Buat langganan.

    2. Di Buat langganan, di bagian Detail, dalam daftar Protokol, pilih SMS.

    3. 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.

    4. Pilih Buat langganan.

  3. Uji notifikasi Amazon SNS.

    1. Di konsol Amazon SNS, di panel navigasi kiri, pilih Topik.

    2. Untuk membuka halaman detail topik, di Topik, dalam daftar topik, pilih high_temp_notice.

    3. Untuk membuka halaman Publikasikan pesan ke topik, di halaman detail high_temp_notice, pilih Publikasikan pesan.

    4. Di Publikasikan pesan ke topik, di bagian Isi pesan, di Badan pesan untuk dikirim ke titik akhir, masukkan pesan singkat.

    5. Gulir ke bawah ke bagian bawah halaman dan pilih Publikasikan pesan.

    6. 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 konsol Amazon SNS sebelum melanjutkan tutorial.

Langkah 2: Buat AWS IoT aturan untuk mengirim pesan teks

AWS IoT Aturan yang akan Anda buat dalam tutorial ini berlangganan topik device/device_id/data MQTT di device_id mana ID perangkat yang mengirim pesan. Topik-topik ini dijelaskan dalam filter topik sebagaidevice/+/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 device_id dari nama topik, temperature nilai dari payload pesan, dan menambahkan nilai konstan untuk batas pengujian, dan mengirimkan nilai ini sebagai dokumen JSON ke topik notifikasi Amazon SNS.

Misalnya, pesan MQTT 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, device_id dari nama topik, dan menambahkan max_temperature nilai konstan untuk mengirim payload pesan yang terlihat seperti ini ke topik Amazon SNS:

{ "device_id": "32", "reported_temperature": 38, "max_temperature": 30 }
Untuk membuat AWS IoT aturan untuk mendeteksi nilai suhu over-limit dan membuat data untuk dikirim ke topik Amazon SNS
  1. Buka hub AturanAWS IoT konsol.

  2. Jika ini adalah aturan pertama Anda, pilih Buat, atau Buat aturan.

  3. Di Buat aturan:

    1. 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.

    2. 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.

  4. Dalam pernyataan kueri Aturan Buat aturan:

    1. Dalam Menggunakan versi SQL, pilih 2016-03-23.

    2. 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 pesan MQTT dengan topik yang cocok dengan filter device/+/data topik dan yang memiliki temperature nilai lebih besar dari 30.

      • Memilih elemen kedua dari string topik dan menetapkannya 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 ke max_temperature bidang.

  5. Untuk membuka daftar tindakan aturan untuk aturan ini, di Tetapkan satu atau beberapa tindakan, pilih Tambah tindakan.

  6. Di Pilih tindakan, pilih Kirim pesan sebagai pemberitahuan push SNS.

  7. Untuk membuka halaman konfigurasi tindakan yang dipilih, di bagian bawah daftar tindakan, pilih Konfigurasi tindakan.

  8. Dalam tindakan Konfigurasi:

    1. Di target SNS, pilih Pilih, temukan topik SNS Anda bernama high_temp_notice, dan pilih Select.

    2. Dalam format Pesan, pilih RAW.

    3. Di Pilih atau buat peran untuk memberikan AWS IoT akses untuk melakukan tindakan ini, pilih Buat Peran.

    4. Di Buat peran baru, di Nama, masukkan nama unik untuk peran baru. Untuk tutorial ini, gunakan sns_rule_role.

    5. 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 target SNS.

  9. Pilih Tambah tindakan dan kembali ke halaman Buat aturan.

    Di ubin tindakan baru, di bawah Kirim pesan sebagai pemberitahuan push SNS, Anda dapat melihat topik SNS yang akan dipanggil aturan Anda.

    Ini adalah satu-satunya tindakan aturan yang akan Anda tambahkan ke aturan ini.

  10. 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 pemberitahuan Amazon SNS

Untuk menguji aturan baru Anda, Anda akan menggunakan klien MQTT untuk mempublikasikan dan berlangganan pesan MQTT yang digunakan oleh aturan ini.

Buka klien MQTT di AWS IoT konsol di jendela baru. Ini akan memungkinkan Anda mengedit aturan tanpa kehilangan konfigurasi klien MQTT Anda. Jika Anda meninggalkan klien MQTT untuk pergi ke halaman lain di konsol, itu tidak akan menyimpan langganan atau log pesan apa pun.

Untuk menggunakan klien MQTT untuk menguji aturan Anda
  1. Di klien MQTT di AWS IoT konsol, berlangganan topik input, dalam hal ini,. device/+/data

    1. Di klien MQTT, di bawah Langganan, pilih Berlangganan topik.

    2. Dalam topik Langganan, masukkan topik filter topik masukan,device/+/data.

    3. Simpan sisa bidang di pengaturan defaultnya.

    4. Pilih Berlangganan topik.

      Di kolom Langganan, di bawah Publikasikan ke topik, device/+/data muncul.

  2. Publikasikan pesan ke topik input dengan ID perangkat tertentu,device/32/data. Anda tidak dapat mempublikasikan ke topik MQTT yang berisi karakter wildcard.

    1. Di klien MQTT, di bawah Langganan, pilih Publikasikan ke topik.

    2. Di bidang Publikasikan, masukkan nama topik masukan,device/32/data.

    3. 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 } }
    4. Pilih Publikasikan ke topik untuk mempublikasikan pesan MQTT Anda.

  3. Konfirmasikan bahwa pesan teks telah dikirim.

    1. Di klien MQTT, 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.

    2. 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 } }
    3. Periksa ponsel yang Anda gunakan untuk berlangganan topik SNS 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 dan temperature nilainya numerik. Hal ini karena topic()fungsi mengekstrak string dari nama topik pesan masukan sementara temperature nilai menggunakan nilai numerik dari payload pesan masukan.

      Jika Anda ingin membuat nilai device_id nilai numerik, ganti topic(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.

  4. Coba kirim pesan MQTT di mana suhunya tidak melebihi batas.

    1. Di klien MQTT, di bawah Langganan, pilih Publikasikan ke topik.

    2. Di bidang Publikasikan, masukkan nama topik masukan,device/33/data.

    3. 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 } }
    4. Untuk mengirim pesan MQTT Anda, 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 Anda

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 masukan di klien MQTT

    Setiap kali Anda mempublikasikan pesan masukan Anda ke device/22/data topik, pesan itu akan muncul di klien MQTT, jika Anda berlangganan filter device/+/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 klien MQTT, 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 pesan SMS

    Agar aturan Anda berfungsi, itu harus memiliki kebijakan yang benar yang mengizinkannya untuk menerima pesan dan mengirim pemberitahuan SNS, dan itu harus menerima pesan.

    Hal-hal yang harus diperiksa
    • Periksa klien MQTT Anda dan aturan yang Anda buat Wilayah AWS

      Konsol tempat Anda menjalankan klien MQTT 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 klausa FROM dari pernyataan kueri aturan.

      Periksa ejaan filter topik dalam pernyataan kueri aturan dengan topik di klien MQTT. Nama topik peka huruf besar/kecil dan topik pesan harus cocok dengan filter topik dalam pernyataan kueri aturan.

    • Periksa isi payload pesan masukan

      Agar aturan berfungsi, ia harus menemukan bidang data di payload pesan yang dideklarasikan dalam pernyataan SELECT.

      Periksa ejaan temperature bidang dalam pernyataan kueri aturan dengan payload pesan di klien MQTT. Nama bidang peka huruf besar/kecil dan temperature bidang dalam pernyataan kueri aturan harus identik dengan temperature bidang di payload pesan.

      Pastikan dokumen JSON di 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 notifikasi Amazon SNS.

  • Anda menggunakan kueri dan fungsi SQL sederhana dalam pernyataan kueri aturan untuk membuat pesan baru untuk notifikasi Anda.

  • Anda membuat AWS IoT aturan untuk mengirim notifikasi Amazon SNS yang menggunakan payload pesan yang disesuaikan.

  • Anda menggunakan klien MQTT untuk menguji aturan Anda. AWS IoT

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 namamax_temperature!

  • Tambahkan tindakan aturan penerbitan ulang untuk mengirim pesan MQTT saat pemberitahuan SNS dikirim.

  • Coba tutorial berikutnya dalam seri ini dan pelajari caranyaTutorial: Menyimpan data perangkat dalam tabel DynamoDB.