Cara menggunakan kunci simetris melalui HTTPS tanpa menggunakan SDK

Dalam artikel petunjuk ini, Anda akan mengkonfigurasi perangkat menggunakan kunci simetris 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 memasukkan semua perintah pada sistem lokal Anda dalam perintah 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 panduan memulai cepat Cloud Shell untuk Memulai Cloud Shell dan Pilih lingkungan Bash.
    • 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 menginstal Azure CLI, lihat Cara menginstal Azure CLI.
  • Jika Anda menjalankan di lingkungan Linux atau WSL, buka perintah Bash untuk menjalankan perintah secara lokal. Jika Anda beroperasi di lingkungan Windows, buka terminal GitBash.

Gambaran Umum

Untuk artikel ini, Anda dapat menggunakan pendaftaran individu atau pendaftaran grup untuk provisioning melalui DPS.

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 dalam artikel ini, Anda dapat menggunakan perintah az iot dps enrollment create untuk membuat pendaftaran individual untuk pengesahan kunci simetris.

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 (panjang hingga 128 karakter), terdiri dari karakter alfanumerik dan karakter khusus: '-', '.', '_', ':'. Karakter terakhir harus alfanumerik atau tanda hubung ('-'). Pastikan ID pendaftaran yang Anda gunakan dalam perintah mematuhi format ini.

Kunci simetris 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 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 dalam artikel ini, Anda dapat menggunakan perintah az iot dps enrollment-group create untuk membuat grup pendaftaran untuk pengesahan kunci simetris.

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 terhadap huruf besar/kecil (panjang hingga 128 karakter) terdiri 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 simetris 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

Dapatkan kunci perangkat

Saat menggunakan pengesahan kunci simetris 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 simetris.

Di bagian ini, Anda menghasilkan kunci perangkat dari kunci utama grup pendaftaran untuk menghitung HMAC-SHA256 dari ID pendaftaran unik untuk perangkat. Hasilnya kemudian dikonversi menjadi format Base64.

  1. Hasilkan kunci unik Anda menggunakan openssl. Anda 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 (panjang hingga 128 karakter), terdiri dari karakter alfanumerik dan 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
    
  2. Skrip menghasilkan 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 Anda menggunakan pengesahan kunci simetris, perangkat mengautentikasi dengan DPS menggunakan token Shared Access Signature (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, dihasilkan 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))

Dimana:

  • [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 contoh 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 membutuhkannya di bagian berikut.

Untuk mempelajari selengkapnya tentang menggunakan token SAS dengan DPS dan strukturnya, lihat Mengontrol akses ke Azure IoT Hub Device Provisioning Service (DPS) dengan tanda tangan akses bersama dan token keamanan.

Mendaftarkan perangkat Anda

Anda memanggil REST API Register Device 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

Dimana:

  • -L memerintahkan curl untuk mengikuti pengalihan HTTP.

  • –i menginstruksikan curl untuk menyertakan header protokol dalam output. Header ini tidak benar-benar diperlukan, tetapi dapat berguna.

  • -X PUT memberi tahu curl bahwa perintah ini adalah perintah HTTP PUT. Diperlukan untuk panggilan API ini.

  • -H 'Content-Type: application/json' memberi tahu DPS bahwa konten yang kami poskan berupa JSON dan harus 'application/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, umumnya utf-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"}'. Untuk curl, itu 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. 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 memberikan respons yang mirip dengan contoh berikut:

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 berpotensi menjadi operasi jangka panjang, sehingga dilakukan secara asinkron. Biasanya, Anda melakukan polling untuk status menggunakan REST API Pencarian Status Operasi untuk menentukan kapan perangkat Anda ditugaskan atau apakah terjadi kegagalan.

Nilai status yang valid untuk DPS adalah:

  • assigned: nilai pengembalian dari panggilan status menunjukkan IoT Hub tempat perangkat ditetapkan.

  • assigning: operasi masih berjalan.

  • disabled: catatan pendaftaran tidak aktif di DPS, sehingga perangkat tidak bisa dialokasikan.

  • failed: penugasan gagal. errorCode dan errorMessage dikembalikan dalam rekaman registrationState 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 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 diatribusi. 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

Dimana:

  • [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 yang dikembalikan dalam properti assignedHub pada bagian sebelumnya.

    • Untuk [device-id], gunakan ID perangkat yang dikembalikan pada properti deviceId 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 ke None.

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 lainnya, 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. Untuk {iothub_name}, Anda hanya memerlukan bagian pertama dari nama 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

Dimana:

  • -X POST memberi tahu curl bahwa perintah ini adalah perintah HTTP POST. Diperlukan untuk panggilan API ini.

  • -H 'Content-Type: application/json' menyampaikan kepada IoT Hub bahwa kami memposting konten JSON dan formatnya harus 'application/json'.

  • -H 'Content-Encoding: utf-8' memberitahukan IoT Hub tentang pengodean yang kami gunakan untuk isi pesan kami. Atur ke nilai yang tepat untuk OS/klien Anda; namun, umumnya utf-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. Untuk curl, itu 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 adalah 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 my-symkey-device mengirim 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 memiliki respons yang mirip dengan contoh berikut:

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