Cara menggunakan kunci konten melalui HTTPS tanpa SDK
Dalam artikel panduan ini, Anda akan menyediakan perangkat menggunakan kunci konten melalui HTTPS tanpa menggunakan SDK perangkat Azure IoT DPS. Sebagian besar bahasa menyediakan pustaka untuk mengirim permintaan HTTP, tetapi, daripada fokus pada bahasa tertentu, dalam artikel ini, Anda akan menggunakan alat baris perintah cURL untuk mengirim dan menerima melalui HTTPS.
Anda dapat mengikuti langkah-langkah dalam artikel ini di komputer Linux atau Windows. Jika Anda menjalankan Subsistem Windows untuk Linux (WSL) atau berjalan di komputer Linux, Anda dapat memasukkan semua perintah pada sistem lokal Anda dalam perintah Bash. Jika Anda menjalankan di Windows, masukkan semua perintah pada sistem lokal Anda dalam permintaan GitBash.
Ada jalur yang berbeda melalui artikel ini tergantung pada jenis entri pendaftaran yang Anda pilih untuk digunakan. Setelah menginstal prasyarat, pastikan untuk membaca Gambaran Umum sebelum melanjutkan.
Prasyarat
Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
Selesaikan langkah-langkah dalam Menyiapkan IoT Hub Device Provisioning Service dengan portal Microsoft Azure.
Pastikan Python 3.7 atau yang lebih baru diinstal pada komputer Anda. Anda dapat memeriksa versi Python Anda dengan menjalankan
python --version
.Jika Anda menjalankan di Windows, instal versi terbaru Git. Pastikan Git ditambahkan ke variabel lingkungan yang dapat diakses oleh jendela perintah. Lihat alat klien Git Software Freedom Conservancy untuk versi terbaru alat
git
yang akan diinstal, yang mencakup Git Bash, aplikasi baris perintah yang dapat Anda gunakan untuk berinteraksi dengan repositori Git lokal. Di Windows, Anda akan memasukkan semua perintah pada sistem lokal Anda dalam permintaan GitBash.Azure CLI. Anda memiliki dua opsi untuk menjalankan perintah Azure CLI dalam artikel ini:
- Gunakanlah Azure Cloud Shell, sebuah shell interaktif yang menjalankan perintah CLI di browser Anda. Opsi ini direkomendasikan karena Anda tidak butuh instal apapun. Jika Anda menggunakan Cloud Shell untuk pertama kalinya, log masuk ke portal Microsoft Azure. Ikutilah langkah-langkah tersebut di mulai cepat Cloud Shell menuju Mulai Cloud Shell dan Pilih lingkungan Azure CLI.
- Secara opsional, menjalankan Azure CLI pada mesin lokal Anda. Jika Azure CLI sudah diinstal, menjalankan
az upgrade
untuk meningkatkan CLI tersebut dan ekstensi menjadi versi terbaru. Untuk memasang Azure CLI, lihat Memasang Azure CLI.
Jika Anda menjalankan di lingkungan Linux atau WSL, buka perintah Bash untuk menjalankan perintah secara lokal. Jika Anda menjalankan di lingkungan Windows, buka permintaan GitBash.
Gambaran Umum
Untuk artikel ini, Anda dapat menggunakan pendaftaran individu atau grup pendaftaran untuk memprovisikan melalui DPS.
Untuk pendaftaran individu, selesaikan Gunakan pendaftaran individual.
Untuk grup pendaftaran, selesaikan Gunakan grup pendaftaran.
Setelah Anda membuat entri pendaftaran individu atau grup pendaftaran, lanjutkan untuk membuat token SAS dan mendaftarkan perangkat Anda dengan DPS.
Gunakan pendaftaran individu
Jika Anda ingin membuat pendaftaran individu baru untuk digunakan untuk artikel ini, Anda dapat menggunakan perintah az iot dps enrollment create untuk membuat pendaftaran individual untuk pengesahan kunci konten.
Perintah berikut membuat entri pendaftaran dengan kebijakan alokasi default untuk instans DPS Anda dan memungkinkan DPS menetapkan kunci primer dan sekunder untuk perangkat Anda:
az iot dps enrollment create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --attestation-type symmetrickey
Ganti nama grup sumber daya dan instans DPS Anda.
ID pendaftaran adalah ID pendaftaran untuk perangkat Anda. ID pendaftaran adalah string yang tidak peka huruf besar/kecil (panjangnya hingga 128 karakter) karakter alfanumerik ditambah karakter khusus:
'-'
,'.'
,'_'
,':'
. Karakter terakhir harus alfanumerik atau tanda hubung ('-'
). Pastikan ID pendaftaran yang Anda gunakan dalam perintah mematuhi format ini.
Kunci konten yang ditetapkan dikembalikan dalam properti pengesahan dalam respons:
{
"allocationPolicy": null,
"attestation": {
"symmetricKey": {
"primaryKey": "G3vn0IZH9oK3d4wsxFpWBtd2KUrtjI+39dZVRf26To8w9OX0LaFV9yZ93ELXY7voqHEUsNhnb9bt717UP87KxA==",
"secondaryKey": "4lNxgD3lUAOEOied5/xOocyiUSCAgS+4b9OvXLDi8ug46/CJzIn/3rN6Ys6gW8SMDDxMQDaMRnIoSd1HJ5qn/g=="
},
"tpm": null,
"type": "symmetricKey",
"x509": null
},
...
}
Catat kunci utama dan ID pendaftaran (ID pendaftaran) untuk entri pendaftaran individual Anda, Anda akan menggunakannya nanti di artikel ini.
Jika Anda ingin menggunakan pendaftaran individu yang ada untuk artikel ini, Anda bisa mendapatkan kunci utama dengan perintah az iot dps enrollment show :
az iot dps enrollment show -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --show-keys true
Menggunakan grup pendaftaran
Jika Anda ingin membuat grup pendaftaran baru untuk digunakan untuk artikel ini, Anda dapat menggunakan perintah az iot dps enrollment-group create untuk membuat grup pendaftaran untuk pengesahan kunci konten.
Perintah berikut membuat entri grup pendaftaran dengan kebijakan alokasi default untuk instans DPS Anda dan memungkinkan DPS menetapkan kunci primer dan sekunder untuk grup pendaftaran:
az iot dps enrollment-group create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id}
Ganti nama grup sumber daya dan instans DPS Anda.
ID pendaftaran adalah string yang tidak peka huruf besar/kecil (panjang hingga 128 karakter) dari karakter alfanumerik ditambah karakter khusus:
'-'
, ,'.'
'_'
,':'
. Karakter terakhir harus alfanumerik atau tanda hubung ('-'
). Ini bisa berupa nama apa pun yang Anda pilih untuk digunakan untuk grup pendaftaran.
Kunci konten yang ditetapkan dikembalikan dalam properti pengesahan dalam respons:
{
"allocationPolicy": null,
"attestation": {
"symmetricKey": {
"primaryKey": "G3vn0IZH9oK3d4wsxFpWBtd2KUrtjI+39dZVRf26To8w9OX0LaFV9yZ93ELXY7voqHEUsNhnb9bt717UP87KxA==",
"secondaryKey": "4lNxgD3lUAOEOied5/xOocyiUSCAgS+4b9OvXLDi8ug46/CJzIn/3rN6Ys6gW8SMDDxMQDaMRnIoSd1HJ5qn/g=="
},
"tpm": null,
"type": "symmetricKey",
"x509": null
},
...
}
Catat kunci primer.
Jika Anda ingin menggunakan pendaftaran individu yang ada untuk artikel ini, Anda bisa mendapatkan kunci utama dengan perintah az iot dps enrollment-group show :
az iot dps enrollment-group show -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --show-keys true
Turunkan kunci perangkat
Saat menggunakan pengesahan kunci konten dengan pendaftaran grup, Anda tidak menggunakan kunci grup pendaftaran secara langsung. Sebagai gantinya, Anda mendapatkan kunci unik untuk setiap perangkat dari kunci grup pendaftaran. Untuk informasi selengkapnya, lihat Pendaftaran Grup dengan kunci konten.
Di bagian ini, Anda akan membuat kunci perangkat dari kunci primer grup pendaftaran untuk menghitung HMAC-SHA256 dari ID pendaftaran unik untuk perangkat. Hasilnya kemudian akan diubah menjadi format Base64.
Hasilkan kunci unik Anda menggunakan openssl. Anda akan menggunakan skrip shell Bash berikut. Ganti
{primary-key}
dengan Kunci Primer grup pendaftaran yang Anda salin sebelumnya dan ganti{contoso-simdevice}
dengan ID pendaftaran yang ingin Anda gunakan untuk perangkat. ID pendaftaran adalah string yang tidak peka huruf besar/kecil (panjangnya hingga 128 karakter) karakter alfanumerik ditambah karakter khusus:'-'
,'.'
,'_'
,':'
. Karakter terakhir harus alfanumerik atau tanda hubung ('-'
).KEY={primary-key} REG_ID={contoso-simdevice} keybytes=$(echo $KEY | base64 --decode | xxd -p -u -c 1000) echo -n $REG_ID | openssl sha256 -mac HMAC -macopt hexkey:$keybytes -binary | base64
Skrip akan menampilkan sesuatu seperti kunci berikut:
p3w2DQr9WqEGBLUSlFi1jPQ7UWQL4siAGy75HFTFbf8=
Catat kunci perangkat turunan dan ID pendaftaran yang Anda gunakan untuk membuatnya, Anda akan menggunakannya di bagian berikutnya.
Anda juga dapat menggunakan Azure CLI atau PowerShell untuk mendapatkan kunci perangkat. Untuk mempelajari lebih lanjut, lihat Mendapatkan kunci perangkat.
Membuat token SAS
Saat menggunakan pengesahan kunci konten, perangkat mengautentikasi dengan DPS menggunakan token Tanda Tangan Akses Bersama (SAS). Untuk provisi perangkat melalui pendaftaran individu, token ditandatangani menggunakan kunci primer atau sekunder yang ditetapkan dalam entri pendaftaran. Untuk provisi perangkat melalui grup pendaftaran, token ditandatangani menggunakan kunci perangkat turunan, yang, pada gilirannya, telah dibuat menggunakan kunci primer atau sekunder yang ditetapkan dalam entri grup pendaftaran. Token menentukan waktu kedaluwarsa dan URI sumber daya target.
Skrip Python berikut dapat digunakan untuk menghasilkan token SAS:
from base64 import b64encode, b64decode
from hashlib import sha256
from time import time
from urllib.parse import quote_plus, urlencode
from hmac import HMAC
def generate_sas_token(uri, key, policy_name, expiry=3600):
ttl = time() + expiry
sign_key = "%s\n%d" % ((quote_plus(uri)), int(ttl))
print(sign_key)
signature = b64encode(HMAC(b64decode(key), sign_key.encode('utf-8'), sha256).digest())
rawtoken = {
'sr' : uri,
'sig': signature,
'se' : str(int(ttl))
}
if policy_name is not None:
rawtoken['skn'] = policy_name
return 'SharedAccessSignature ' + urlencode(rawtoken)
uri = '[resource_uri]'
key = '[device_key]'
expiry = [expiry_in_seconds]
policy= '[policy]'
print(generate_sas_token(uri, key, policy, expiry))
Mana:
[resource_uri]
adalah URI sumber daya yang coba Anda akses dengan token ini. Untuk DPS, ini adalah formulir[dps_id_scope]/registrations/[dps_registration_id]
, di mana[dps_id_scope]
adalah cakupan ID instans DPS Anda, dan[dps_registration_id]
merupakan ID pendaftaran yang Anda gunakan untuk perangkat Anda.Anda bisa mendapatkan cakupan ID untuk instans DPS Anda dari panel Gambaran Umum instans Anda di portal Azure, atau Anda dapat menggunakan perintah az iot dps show Azure CLI (ganti tempat penampung dengan nama grup sumber daya dan instans DPS Anda):
az iot dps show -g {resource_group_name} --name {dps_name}
[device_key]
adalah kunci perangkat yang terkait dengan perangkat Anda. Kunci ini adalah kunci yang ditentukan atau dibuat secara otomatis untuk Anda dalam pendaftaran individu, atau kunci turunan untuk pendaftaran grup.Jika Anda menggunakan pendaftaran individual, gunakan kunci utama yang Anda simpan di Menggunakan pendaftaran individual.
Jika Anda menggunakan grup pendaftaran, gunakan kunci perangkat turunan yang Anda buat di Menggunakan grup pendaftaran.
[expiry_in_seconds]
adalah periode validitas token SAS ini dalam hitungan detik.[policy]
adalah kebijakan yang terkait dengan kunci perangkat. Untuk pendaftaran perangkat DPS, kebijakan dikodekan secara permanen ke 'pendaftaran'.
Contoh set input untuk perangkat yang disebut my-symkey-device
dengan periode validitas 30 hari mungkin terlihat seperti ini.
uri = '0ne00111111/registrations/my-symkey-device'
key = '18RQk/hOPJR9EbsJlk2j8WA6vWaj/yi+oaYg7zmxfQNdOyMSu+SJ8O7TSlZhDJCYmn4rzEiVKIzNiVAWjLxrGA=='
expiry = 2592000
policy='registration'
Ubah skrip untuk perangkat dan instans DPS Anda dan simpan sebagai file Python; misalnya, generate_token.py. Jalankan skrip, misalnya, python generate_token.py
. Ini harus menghasilkan token SAS yang mirip dengan yang berikut:
0ne00111111%2Fregistrations%2Fmy-symkey-device
1663952627
SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration
Salin dan simpan seluruh baris yang dimulai dengan SharedAccessSignature
. Baris ini adalah token SAS. Anda akan membutuhkannya di bagian berikut.
Untuk mempelajari selengkapnya tentang menggunakan token SAS dengan DPS dan strukturnya, lihat Mengontrol Akses ke DPS dengan SAS.
Mendaftarkan perangkat Anda
Anda memanggil Daftarkan REST API Perangkat untuk memprovisikan perangkat Anda melalui DPS.
Gunakan perintah curl berikut:
curl -L -i -X PUT -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: [sas_token]' -d '{"registrationId": "[registration_id]"}' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31
Mana:
-L
memberi tahu curl untuk mengikuti pengalihan HTTP.–i
memberi tahu curl untuk menyertakan header protokol dalam output. Header ini tidak benar-benar diperlukan, tetapi dapat berguna.-X PUT
memberi tahu curl bahwa ini adalah perintah HTTP PUT. Diperlukan untuk panggilan API ini.-H 'Content-Type: application/json'
memberi tahu DPS bahwa kami memposting konten JSON dan harus berupa 'aplikasi/json'.-H 'Content-Encoding: utf-8'
memberi tahu DPS pengodean yang kami gunakan untuk isi pesan kami. Atur ke nilai yang tepat untuk OS/klien Anda; namun, umumnyautf-8
.-H 'Authorization: [sas_token]'
memberi tahu DPS untuk mengautentikasi menggunakan token SAS Anda. Ganti [sas_token] dengan token yang Anda buat di Membuat token SAS.-d '{"registrationId": "[registration_id]"}'
–d
, parameternya adalah 'data' atau isi pesan yang kami posting. Harus JSON, dalam bentuk '{"registrationId":"[registration_id"}'. Perhatikan bahwa untuk curl, dibungkus dalam tanda kutip tunggal; jika tidak, Anda perlu menghindari tanda kutip ganda di JSON.Terakhir, parameter terakhir adalah URL yang akan diposting. Untuk DPS "reguler" (yaitu bukan lokal), titik akhir DPS global, global.azure-devices-provisioning.net, digunakan:
https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31
. Perhatikan bahwa Anda harus mengganti[dps_scope_id]
dan[registration_id]
dengan nilai yang sesuai.
Contohnya:
curl -L -i -X PUT -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration' -d '{"registrationId": "my-symkey-device"}' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-symkey-device/register?api-version=2021-06-01
Panggilan yang berhasil akan memiliki respons yang mirip dengan yang berikut ini:
HTTP/1.1 202 Accepted
Date: Wed, 31 Aug 2022 22:02:49 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Location: https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-symkey-device/register
Retry-After: 3
x-ms-request-id: a021814f-0cf6-4ce9-a1e9-ead7eb5118d9
Strict-Transport-Security: max-age=31536000; includeSubDomains
{"operationId":"5.316aac5bdc130deb.b1e02da8-c3a0-4ff2-a121-7ea7a6b7f550","status":"assigning"}
Respons berisi ID operasi dan status. Dalam hal ini, status diatur ke assigning
. Pendaftaran DPS adalah, berpotensi, operasi jangka panjang, sehingga dilakukan secara asinkron. Biasanya, Anda akan melakukan polling untuk status menggunakan REST API Pencarian Status Operasi untuk menentukan kapan perangkat Anda telah ditetapkan atau apakah kegagalan telah terjadi.
Nilai status yang valid untuk DPS adalah:
assigned
: nilai pengembalian dari panggilan status akan menunjukkan IoT Hub tempat perangkat ditetapkan.assigning
: operasi masih berjalan.disabled
: catatan pendaftaran dinonaktifkan di DPS, sehingga perangkat tidak dapat ditetapkan.failed
: penugasan gagal. AkanerrorCode
ada danerrorMessage
dikembalikan dalam rekamanregistrationState
dalam respons untuk menunjukkan apa yang gagal.unassigned
Untuk memanggil API Pencarian Status Operasi, gunakan perintah curl berikut:
curl -L -i -X GET -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: [sas_token]' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/operations/[operation_id]?api-version=2019-03-31
Anda akan menggunakan cakupan ID, ID pendaftaran, dan token SAS yang sama seperti yang Anda lakukan dalam permintaan Daftarkan Perangkat . Gunakan ID operasi yang dikembalikan dalam respons Daftarkan Perangkat .
Contohnya:
curl -L -i -X GET -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: SharedAccessSignature sr=0ne00111111%2Fregistrations%2Fmy-symkey-device&sig=eNwg52xQdFTNf7bgPAlAJBCIcONivq%2Fck1lf3wtxI4A%3D&se=1663952627&skn=registration' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-symkey-device/operations/5.316aac5bdc130deb.f4f1828c-4dab-4ca9-98b2-dfc63b5835d6?api-version=2021-06-01
Output berikut menunjukkan respons untuk perangkat yang telah berhasil ditetapkan. Perhatikan bahwa status
properti adalah assigned
dan bahwa registrationState.assignedHub
properti diatur ke hub IoT tempat perangkat disediakan.
HTTP/1.1 200 OK
Date: Wed, 31 Aug 2022 22:05:23 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
x-ms-request-id: ffb98d42-023e-4e75-afb0-1807ff091cbb
Strict-Transport-Security: max-age=31536000; includeSubDomains
{
"operationId":"5.316aac5bdc130deb.b1e02da8-c3a0-4ff2-a121-7ea7a6b7f550",
"status":"assigned",
"registrationState":{
"registrationId":"my-symkey-device",
"createdDateTimeUtc":"2022-08-31T22:02:50.5163352Z",
"assignedHub":"MyExampleHub.azure-devices.net",
"deviceId":"my-symkey-device",
"status":"assigned",
"substatus":"initialAssignment",
"lastUpdatedDateTimeUtc":"2022-08-31T22:02:50.7370676Z",
"etag":"IjY5MDAzNTUyLTAwMDAtMDMwMC0wMDAwLTYzMGZkYThhMDAwMCI="
}
}
Mengirim pesan telemetri
Sebelum dapat mengirim pesan telemetri, Anda perlu membuat token SAS untuk hub IoT tempat perangkat ditetapkan. Anda menandatangani token ini menggunakan kunci primer atau kunci perangkat turunan yang sama dengan yang Anda gunakan untuk menandatangani token SAS untuk instans DPS Anda.
Membuat token SAS untuk hub IoT Anda
Untuk membuat token SAS, Anda dapat menjalankan kode yang sama dengan yang Anda lakukan untuk membuat token untuk instans DPS Anda dengan perubahan berikut:
uri = '[resource_uri]'
key = '[device_key]'
expiry = [expiry_in_seconds]
policy= None
Mana:
[resource_uri]
adalah URI sumber daya yang coba Anda akses dengan token ini. Untuk perangkat yang mengirim pesan ke hub IoT, itu adalah formulir[iot-hub-host-name]/devices/[device-id]
.Untuk
[iot-hub-host-name]
, gunakan nama host IoT Hub yangassignedHub
dikembalikan di properti di bagian sebelumnya.Untuk
[device-id]
, gunakan ID perangkat yang dikembalikan dideviceId
properti di bagian sebelumnya.
[device_key]
adalah kunci perangkat yang terkait dengan perangkat Anda. Kunci ini adalah kunci yang ditentukan atau dibuat secara otomatis untuk Anda dalam pendaftaran individu, atau kunci turunan untuk pendaftaran grup. (Ini adalah kunci yang sama dengan yang Anda gunakan sebelumnya untuk membuat token untuk DPS.)Jika Anda menggunakan pendaftaran individual, gunakan kunci utama yang Anda simpan di Menggunakan pendaftaran individual.
Jika Anda menggunakan grup pendaftaran, gunakan kunci perangkat turunan yang Anda buat di Menggunakan grup pendaftaran.
[expiry_in_seconds]
adalah periode validitas token SAS ini dalam hitungan detik.policy=None
Tidak ada kebijakan yang diperlukan untuk perangkat yang mengirim telemetri ke hub IoT, sehingga parameter ini diatur keNone
.
Contoh set input untuk perangkat yang disebut my-symkey-device
mengirim ke IoT Hub bernama MyExampleHub
dengan periode validitas token satu jam mungkin terlihat seperti ini:
uri = 'MyExampleHub.azure-devices.net/devices/my-symkey-device'
key = '18RQk/hOPJR9EbsJlk2j8WA6vWaj/yi+oaYg7zmxfQNdOyMSu+SJ8O7TSlZhDJCYmn4rzEiVKIzNiVAWjLxrGA=='
expiry = 3600
policy= None
Output berikut menunjukkan token SAS sampel untuk input ini:
SharedAccessSignature sr=MyExampleHub.azure-devices.net%2Fdevices%2Fmy-symkey-device&sig=f%2BwW8XOKeJOtiPc9Iwjc4OpExvPM7NlhM9qxN2a1aAM%3D&se=1663119026
Untuk mempelajari selengkapnya tentang membuat token SAS untuk IoT Hub, termasuk contoh kode dalam bahasa pemrograman lain, lihat Mengontrol akses ke IoT Hub menggunakan Tanda Tangan Akses Bersama.
Catatan
Sebagai kenyamanan, Anda dapat menggunakan perintah Azure CLI az iot hub generate-sas-token untuk mendapatkan token SAS untuk perangkat yang terdaftar di hub IoT. Misalnya, perintah berikut menghasilkan token SAS dengan durasi satu jam. {iothub_name}
Untuk , Anda hanya memerlukan bagian pertama dari hame host, misalnya, MyExampleHub
.
az iot hub generate-sas-token -d {device_id} -n {iothub_name}
Mengirim data ke hub IoT Anda
Anda memanggil IoT Hub Send Device Event REST API untuk mengirim telemetri ke perangkat.
Gunakan perintah curl berikut:
curl -L -i -X POST -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: [sas_token]' -d '{"temperature": 30}' https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13
Mana:
-X POST
memberi tahu curl bahwa ini adalah perintah HTTP POST. Diperlukan untuk panggilan API ini.-H 'Content-Type: application/json'
memberi tahu IoT Hub bahwa kami memposting konten JSON dan harus 'application/json'.-H 'Content-Encoding: utf-8'
memberi tahu IoT Hub pengodean yang kami gunakan untuk isi pesan kami. Atur ke nilai yang tepat untuk OS/klien Anda; namun, umumnyautf-8
.-H 'Authorization: [sas_token]'
memberi tahu IoT Hub untuk mengautentikasi menggunakan token SAS Anda. Ganti[sas_token]
dengan token yang Anda buat untuk hub IoT yang ditetapkan.-d '{"temperature": 30}'
–d
, parameternya adalah 'data' atau isi pesan yang kami posting. Untuk artikel ini, kami memposting satu titik data suhu. Jenis konten ditentukan sebagai aplikasi/json, jadi, untuk permintaan ini, isinya adalah JSON. Perhatikan bahwa untuk curl, dibungkus dalam tanda kutip tunggal; jika tidak, Anda perlu menghindari tanda kutip ganda di JSON.Parameter terakhir adalah URL yang akan diposting. Untuk API Kirim Peristiwa Perangkat, URL-nya adalah:
https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13
.Ganti
[assigned_iot_hub_name]
dengan nama hub IoT tempat perangkat Anda ditetapkan.Ganti
[device_id]
dengan ID perangkat yang ditetapkan saat Anda mendaftarkan perangkat Anda. Untuk perangkat yang menyediakan melalui grup pendaftaran, ID perangkat akan menjadi ID pendaftaran. Untuk pendaftaran individual, Anda dapat, secara opsional, menentukan ID perangkat yang berbeda dari ID pendaftaran dalam entri pendaftaran.
Misalnya, untuk perangkat dengan ID perangkat mengirim my-symkey-device
titik data telemetri ke hub IoT bernama MyExampleHub
:
curl -L -i -X POST -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -H 'Authorization: SharedAccessSignature sr=MyExampleHub.azure-devices.net%2Fdevices%2Fmy-symkey-device&sig=f%2BwW8XOKeJOtiPc9Iwjc4OpExvPM7NlhM9qxN2a1aAM%3D&se=1663119026' -d '{"temperature": 30}' https://MyExampleHub.azure-devices.net/devices/my-symkey-device/messages/events?api-version=2020-03-13
Panggilan yang berhasil akan memiliki respons yang mirip dengan yang berikut ini:
HTTP/1.1 204 No Content
Content-Length: 0
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: 9e278582-3561-417b-b807-76426195920f
Date: Wed, 14 Sep 2022 00:32:53 GMT
Langkah berikutnya
Untuk mempelajari selengkapnya tentang pengesahan kunci konten, lihat Pengesahan kunci konten.
Untuk mempelajari selengkapnya tentang token SAS dan strukturnya, lihat Mengontrol akses ke DPS dengan SAS.