Menanggapi kejadian IoT Hub menggunakan Event Grid untuk memicu tindakan
Azure IoT Hub terintegrasi dengan Azure Event Grid, sehingga pengguna dapat mengirim notifikasi kejadian ke layanan lain dan memicu proses hilir. Konfigurasikan aplikasi bisnis Anda untuk mendengarkan kejadian IoT Hub sehingga Anda dapat menanggapi kejadian penting dengan cara yang andal, dapat diskalakan, dan aman. Misalnya, bangun aplikasi yang memperbarui database, membuat tiket kerja, dan mengirimkan pemberitahuan email setiap kali perangkat IoT baru didaftarkan ke hub IoT Anda.
Azure Event Grid adalah layanan perutean kejadian yang dikelola penuh yang menggunakan model publikasi-berlangganan. Event Grid memiliki dukungan bawaan untuk layanan Azure seperti Azure Functions dan Azure Logic Apps, dan dapat memberikan pemberitahuan kejadian ke layanan non-Azure menggunakan webhook. Untuk daftar lengkap handler peristiwa yang didukung Event Grid, lihat Pengenalan Azure Event Grid.
Untuk menonton video yang mengulas integrasi ini, lihat integrasi Azure IoT Hub dengan Azure Event Grid.
Ketersediaan regional
Integrasi Event Grid tersedia untuk hub IoT yang terletak di wilayah tempat Event Grid didukung. Untuk melihat daftar wilayah terbaru, baca Produk yang tersedia menurut wilayah.
Tipe peristiwa
Azure IoT Hub menerbitkan jenis kejadian berikut:
Jenis peristiwa | Deskripsi |
---|---|
Microsoft.Devices.DeviceCreated | Diterbitkan saat perangkat didaftarkan ke hub IoT. |
Microsoft.Devices.DeviceDeleted | Diterbitkan saat perangkat dihapus dari hub IoT. |
Microsoft.Devices.DeviceConnected | Diterbitkan saat perangkat disambungkan ke hub IoT. |
Microsoft.Devices.DeviceDisconnected | Diterbitkan saat perangkat terputus sambungannya dari hub IoT. |
Microsoft.Devices.DeviceTelemetry | Diterbitkan saat pesan telemetri dikirim ke hub IoT |
Gunakan portal Microsoft Azure atau Azure CLI untuk mengonfigurasi kejadian mana yang akan diterbitkan dari setiap hub IoT. Misalnya, coba tutorial Mengirim pemberitahuan email tentang kejadian Azure IoT Hub menggunakan Azure Logic Apps.
Skema peristiwa
Kejadian Azure IoT Hub berisi semua informasi yang Anda perlukan untuk merespons perubahan dalam siklus hidup perangkat Anda. Anda dapat mengidentifikasi kejadian IoT Hub dengan memeriksa apakah properti eventType dimulai dengan Microsoft.Devices. Untuk informasi selanjutnya tentang cara menggunakan properti kejadian Event Grid, lihat skema kejadian Event Grid.
Skema yang tersambung dengan perangkat
Contoh berikut menunjukkan skema kejadian yang tersambung perangkat:
[{
"id": "f6bbf8f4-d365-520d-a878-17bf7238abd8",
"topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"eventType": "Microsoft.Devices.DeviceConnected",
"eventTime": "2018-06-02T19:17:44.4383997Z",
"data": {
"deviceConnectionStateEventInfo": {
"sequenceNumber":
"000000000000000001D4132452F67CE200000002000000000000000000000001"
},
"hubName": "egtesthub1",
"deviceId": "LogicAppTestDevice",
"moduleId" : "DeviceModuleID",
},
"dataVersion": "1",
"metadataVersion": "1"
}]
Skema telemetri perangkat
Pesan telemetri perangkat harus disajikan dalam format JSON yang valid dengan contentType diatur ke application/json dan contentEncoding diatur ke UTF-8 di properti sistem pesan. Kedua properti ini tidak peka huruf besar/kecil. Jika pengodean konten tidak diatur, maka IoT Hub menulis pesan dalam format berkode base 64.
Anda dapat memperkaya peristiwa telemetri perangkat sebelum dipublikasikan ke Event Grid dengan memilih titik akhir sebagai Event Grid. Untuk mengetahui informasi selengkapnya, baca pengayaan pesan.
Contoh berikut menunjukkan skema kejadian telemetri perangkat:
[{
"id": "9af86784-8d40-fe2g-8b2a-bab65e106785",
"topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"eventType": "Microsoft.Devices.DeviceTelemetry",
"eventTime": "2019-01-07T20:58:30.48Z",
"data": {
"body": {
"Weather": {
"Temperature": 900
},
"Location": "USA"
},
"properties": {
"Status": "Active"
},
"systemProperties": {
"iothub-content-type": "application/json",
"iothub-content-encoding": "utf-8",
"iothub-connection-device-id": "d1",
"iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
"iothub-connection-auth-generation-id": "123455432199234570",
"iothub-enqueuedtime": "2019-01-07T20:58:30.48Z",
"iothub-message-source": "Telemetry"
}
},
"dataVersion": "",
"metadataVersion": "1"
}]
Skema yang dibuat perangkat
Contoh berikut menunjukkan skema kejadian yang dibuat perangkat:
[{
"id": "56afc886-767b-d359-d59e-0da7877166b2",
"topic": "/SUBSCRIPTIONS/<subscription ID>/RESOURCEGROUPS/<resource group name>/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/<hub name>",
"subject": "devices/LogicAppTestDevice",
"eventType": "Microsoft.Devices.DeviceCreated",
"eventTime": "2018-01-02T19:17:44.4383997Z",
"data": {
"twin": {
"deviceId": "LogicAppTestDevice",
"etag": "AAAAAAAAAAE=",
"deviceEtag":"null",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00",
"connectionState": "Disconnected",
"lastActivityTime": "0001-01-01T00:00:00",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 2,
"properties": {
"desired": {
"$metadata": {
"$lastUpdated": "2018-01-02T19:17:44.4383997Z"
},
"$version": 1
},
"reported": {
"$metadata": {
"$lastUpdated": "2018-01-02T19:17:44.4383997Z"
},
"$version": 1
}
}
},
"hubName": "egtesthub1",
"deviceId": "LogicAppTestDevice"
},
"dataVersion": "1",
"metadataVersion": "1"
}]
Peringatan
Data kembar yang terkait dengan peristiwa pembuatan perangkat adalah konfigurasi default dan tidak boleh diandalkan untuk properti perangkat aktual authenticationType
dan lainnya di perangkat yang baru dibuat. Untuk authenticationType
dan properti perangkat lainnya di perangkat yang baru dibuat, gunakan daftarkan pengelola API yang tersedia di SDK Azure IoT.
Untuk deskripsi terperinci dari setiap properti, lihat Skema kejadian Azure Event Grid untuk IoT Hub.
Memfilter kejadian
Event Grid dapat digunakan untuk memfilter jenis kejadian, subjek, dan konten data. Saat membuat langganan Event Grid, Anda dapat memilih untuk berlangganan kejadian IoT yang dipilih.
- Jenis kejadian: Untuk melihat jenis kejadian IoT Hub, baca jenis kejadian.
- Subjek: Untuk kejadian IoT Hub, subjeknya adalah nama perangkat. Subjek mengambil format
devices/{deviceId}
. Anda dapat memfilter subjek berdasarkan kecocokan Diawali dengan (awalan) dan Diakhiri dengan (akhiran). Filter menggunakan operatorAND
, sehingga kejadian dengan subjek yang cocok dengan awalan dan akhiran dikirimkan kepada pelanggan. - Konten data: Konten data diisi oleh IoT Hub menggunakan format pesan tersebut. Anda dapat memilih jenis kejadian yang dikirimkan berdasarkan konten pesan telemetri. Sebagai contoh, baca pemfilteran tingkat lanjut. Untuk memfilter pada isi pesan telemetri, Anda harus mengatur contentType menjadi application/json dan contentEncoding menjadi UTF-8 di properti sistem pesan. Kedua properti ini tidak peka huruf besar/kecil.
Untuk peristiwa telemetri perangkat, IoT Hub akan membuat rute pesan default yang disebut RouteToEventGrid berdasarkan langganan. Untuk memfilter pesan sebelum data telemetri dikirim, perbarui kueri perutean.
Batasan untuk peristiwa status sambungan perangkat
Peristiwa perangkat yang terhubung dan perangkat terputus tersedia untuk perangkat yang terhubung menggunakan protokol MQTT atau AMQP, atau menggunakan salah satu protokol ini melalui WebSocket. Permintaan yang dibuat hanya dengan HTTPS tidak akan memicu pemberitahuan status koneksi perangkat.
Untuk informasi tentang memantau status perangkat dengan Event Grid, lihat Memantau status koneksi perangkat.
Interval status koneksi perangkat
IoT Hub mencoba melaporkan setiap peristiwa perubahan status koneksi perangkat, tetapi beberapa mungkin terlewatkan. Minimal, IoT Hub melaporkan peristiwa perubahan status koneksi yang terjadi 60 detik terpisah satu sama lain. Perilaku ini dapat menyebabkan hasil seperti beberapa peristiwa koneksi perangkat yang dilaporkan tanpa perangkat memutuskan peristiwa di antara mereka.
Tips untuk menggunakan kejadian
Aplikasi yang menangani kejadian IoT Hub harus mengikuti praktik yang disarankan ini:
- Beberapa langganan dapat dikonfigurasi untuk merutekan kejadian ke penanganan aktivitas yang sama, sehingga jangan anggap kejadian berasal dari sumber tertentu. Selalu periksa topik pesan untuk memastikan bahwa itu berasal dari hub IoT yang Anda harapkan.
- Jangan berasumsi bahwa semua kejadian yang Anda terima adalah jenis yang Anda harapkan. Selalu periksa eventType sebelum memproses pesan.
- Pesan dapat diterima tidak sesuai urutan atau setelah penundaan. Gunakan bidang etag untuk memahami apakah informasi Anda tentang objek sudah diperbarui untuk kejadian yang dibuat perangkat atau yang dihapus perangkat.
Langkah berikutnya
- Pelajari cara mengurutkan kejadian yang tersambung dan terputus dari perangkat
- Membandingkan perbedaan antara perutean kejadian dan pesan IoT Hub
- Pelajari selengkapnya tentang cara menggunakan Event Grid dan Azure Monitor untuk memantau, mendiagnosis, dan memecahkan masalah konektivitas perangkat ke IoT Hub