View a markdown version of this page

Tutorial: Mengirim pemberitahuan 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 pemberitahuan 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 pemberitahuan Amazon SNS dari 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 memulai tutorial ini, pastikan Anda memiliki:

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

Prosedur ini menjelaskan cara membuat topik Amazon SNS yang dapat mengirim data pesan oleh sensor cuaca Anda. Topik Amazon SNS kemudian akan memberi tahu semua pelanggannya melalui pesan teks SMS tentang batas suhu yang terlampaui.

Cara membuat topik Amazon SNS yang mengirimkan 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 a+, 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 Top ik.

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

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

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

    5. Gulir ke bawah ke bawah halaman dan pilih Publi kasikan 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 ponsel Anda.

    Pastikan Anda dapat mempublikasikan pesan pengujian dari konsol Amazon SNS sebelum melanjutkan tutorial.

Langkah 2: Buat AWS IoT aturan untuk mengirim pesan teks

A AWS IoT turan yang akan Anda buat dalam tutorial ini berlangganan topik device/device_id/data MQTT di mana device_id adalah 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.

Ketika aturan menerima pesan dari topik yang cocok, aturan mengambil device_id dari nama topik, temperature nilai dari payload pesan, dan menambahkan nilai konstan untuk batas yang diuji, dan mengirimkan nilai-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 payload 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 melebihi batas dan membuat data untuk dikirim ke topik Amazon SNS
  1. Buka hub A turan AWS 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.

      Ingatlah bahwa nama aturan harus unik di dalam Akun AWS dan Wilayah Anda, dan tidak dapat memiliki spasi. Kami telah menggunakan karakter garis bawah dalam nama ini untuk memisahkan kata-kata dalam nama aturan.

    2. Dalam Deskripsi, jelaskan aturannya.

      Deskripsi yang berarti memudahkan untuk mengingat apa yang dilakukan aturan ini dan mengapa Anda membuatnya. Deskripsinya bisa selama dibutuhkan, jadi sedetail mungkin.

  4. Dalam pernyataan kueri aturan Buat aturan:

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

    2. Di 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 device_id bidang.

      • Memilih temperature bidang nilai dari payload pesan dan menetapkannya ke bidang. reported_temperature

      • Membuat nilai konstan 30 untuk mewakili nilai batas dan menetapkannya ke max_temperature bidang.

  5. Untuk membuka daftar tindakan aturan untuk aturan ini, di Meng atur satu atau beberapa tindakan, pilih Tam bah 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 Konfigurasikan tindakan.

  8. Dalam tindakan Konfigurasi:

    1. Di target SNS, pilih Pilih , temukan topik SNS Anda bernama high_temp_ notice, dan pilih Pilih.

    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 Per barui 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 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 Lang ganan, pilih Berlangganan ke topik.

    2. Di Topik berlangganan, masukkan topik filter topik masukan,device/+/data.

    3. Simpan sisa bidang pada 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 Lang ganan, pilih Publi kasikan 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 Lang ganan, 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 payload pesan cocok dengan apa yang baru saja Anda publikasikan dan terlihat seperti ini:

      { "temperature": 38, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
    3. Periksa telepon 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 nil device_id ainya adalah string yang dikutip dan nil temperature ainya numerik. Ini karena topic() fungsi mengekstrak string dari nama topik pesan input sementara nilainya menggunakan temperature nilai numerik dari payload pesan input.

      Jika Anda ingin menjadikan nilai device_id sebagai nilai numerik, ganti topic(2) pernyataan kueri aturan dengan:

      cast(topic(2) AS DECIMAL)

      Perhatikan bahwa memasukkan topic(2) nilai ke angka, DECIMAL nilai hanya akan berfungsi jika bagian topik itu hanya berisi karakter numerik.

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

    1. Di klien MQTT, di bawah Lang ganan, pilih Publi kasikan 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 Publi kasikan 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 tidak boleh 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 menerbitkan pesan input, perbaiki kesalahan itu terlebih dahulu. Langkah-langkah berikut dapat membantu Anda memperbaiki kesalahan itu.

  • Anda tidak melihat pesan input di klien MQTT

    Setiap kali Anda mempublikasikan pesan input 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 berlangganan

      Jika Anda berlangganan topik pesan masukan 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 berlangganan dan bandingkan dengan topik yang Anda publikasikan. Nama topik peka huruf besar/kecil dan topik yang Anda berlangganan harus identik dengan topik tempat Anda menerbitkan payload pesan.

    • Periksa fungsi penerbitan pesan

      Di klien MQTT, di bawah Lang ganan, pilih per angkat/+/data, periksa topik pesan publikasi, lalu pilih Publikasikan ke topik. Anda akan melihat payload pesan dari kotak edit di bawah topik muncul di daftar pesan.

  • Anda tidak menerima pesan SMS

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

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

      Konsol tempat Anda menjalankan klien MQTT harus berada di Wilayah yang sama AWS dengan aturan yang Anda buat.

    • Periksa apakah nilai suhu dalam payload 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 ejaan topik di klien MQTT. Nama topik peka huruf besar/kecil dan topik pesan harus cocok dengan filter topik dalam pernyataan kueri aturan.

    • Periksa isi muatan pesan input

      Agar aturan berfungsi, ia harus menemukan bidang data dalam 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 dalam payload pesan.

      Pastikan dokumen JSON 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 tempat tindakan penerbitan aturan Ulang 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 menerbitkan topik baru.

      Kebijakan yang mengotorisasi aturan untuk menerima data pesan dan menerbitkannya kembali khusus untuk topik yang digunakan. Jika Anda mengubah topik yang digunakan untuk menerbitkan ulang data pesan, Anda harus memperbarui peran tindakan aturan untuk memperbarui kebijakannya agar sesuai dengan topik saat ini.

      Jika Anda menduga ini masalahnya, edit tindakan Publikasikan ulang aturan 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 notifikasi dan langganan Amazon SNS.

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

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

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

Langkah selanjutnya

Setelah Anda mengirim beberapa pesan teks dengan aturan ini, cobalah bereksperimen dengannya untuk melihat bagaimana mengubah beberapa aspek tutorial memengaruhi pesan dan kapan pesan dikirim. Berikut adalah beberapa ide untuk membantu Anda memulai.

  • Ubah device_id topik pesan masukan dan amati efeknya dalam isi pesan teks.

  • Ubah bidang yang dipilih dalam pernyataan kueri aturan dan amati efeknya dalam konten 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.