Cara mentransfer payload antara perangkat dan DPS

Perangkat yang mendaftar dengan DPS diperlukan untuk memberikan ID pendaftaran dan kredensial yang valid (kunci atau sertifikat X.509) saat mereka mendaftar. Namun, mungkin ada solusi atau skenario IoT di mana data tambahan diperlukan dari perangkat. Misalnya, webhook kebijakan alokasi kustom dapat menggunakan informasi seperti nomor model perangkat untuk memilih hub IoT untuk memprovisikan perangkat. Demikian juga, perangkat mungkin memerlukan data tambahan dalam respons pendaftaran untuk memfasilitasi logika sisi kliennya. DPS menyediakan kemampuan bagi perangkat untuk mengirim dan menerima payload opsional saat mendaftar.

Kapan harus menggunakannya

Skenario umum untuk mengirim payload opsional adalah:

  • Kebijakan alokasi kustom dapat menggunakan payload perangkat untuk membantu memilih hub IoT untuk perangkat atau mengatur kembar awalnya. Misalnya, Anda mungkin ingin mengalokasikan perangkat berdasarkan model perangkat. Dalam hal ini, Anda dapat mengonfigurasi perangkat untuk melaporkan informasi modelnya saat mendaftar. DPS akan meneruskan payload perangkat ke webhook alokasi kustom. Kemudian webhook Anda dapat memutuskan hub IoT mana yang akan disediakan perangkat berdasarkan informasi model perangkat. Jika diperlukan, webhook juga dapat mengembalikan data kembali ke perangkat sebagai objek JSON dalam respons webhook. Untuk mempelajari selengkapnya, lihat Menggunakan payload perangkat dalam alokasi kustom.

  • Perangkat IoT Plug and Play (PnP)dapat menggunakan payload untuk mengirim ID model mereka ketika mereka mendaftar dengan DPS. Anda dapat menemukan contoh penggunaan ini dalam sampel PnP di SDK atau repositori sampel. Misalnya, termostat C# PnP atau Node.js pengontrol suhu PnP.

  • Perangkat IoT Central yang terhubung melalui DPS harus mengikuti konvensi IoT Plug and Play dan mengirim ID model mereka saat mendaftar. IoT Central menggunakan ID model untuk menetapkan perangkat ke templat perangkat yang benar. Untuk mempelajari lebih lanjut, lihat Implementasi perangkat dan praktik terbaik untuk IoT Central.

Perangkat mengirim payload data ke DPS

Saat perangkat Anda memanggil Daftarkan Perangkat untuk mendaftar dengan DPS, perangkat dapat menyertakan data tambahan di properti payload . Misalnya, JSON berikut menunjukkan isi permintaan untuk mendaftar menggunakan pengesahan TPM:

{ 
    "registrationId": "mydevice", 
    "tpm": { 
        "endorsementKey": "xxxx-device-endorsement-key-xxxx", 
        "storageRootKey": "xxx-device-storage-root-key-xxxx" 
    }, 
    "payload": { A JSON object that contains your additional data } 
} 

Properti payload harus berupa objek JSON dan dapat berisi data apa pun yang relevan dengan solusi atau skenario IoT Anda.

DPS mengembalikan data ke perangkat

DPS dapat mengembalikan data kembali ke perangkat dalam respons pendaftaran. Saat ini, fitur ini secara eksklusif digunakan dalam skenario alokasi kustom. Jika webhook kebijakan alokasi kustom perlu mengembalikan data ke perangkat, itu dapat meneruskan data kembali sebagai objek JSON dalam respons webhook. DPS kemudian akan meneruskan data tersebut kembali di properti registrationState.payload dalam respons Daftarkan Perangkat. Misalnya, JSON berikut menunjukkan isi respons yang berhasil untuk mendaftar menggunakan pengesahan TPM.

{
   "operationId":"5.316aac5bdc130deb.b1e02da8-xxxx-xxxx-xxxx-7ea7a6b7f550",
   "status":"assigned",
   "registrationState":{
      "registrationId":"my-tpm-device",
      "createdDateTimeUtc":"2022-08-31T22:02:50.5163352Z",
      "assignedHub":"sample-iot-hub-1.azure-devices.net",
      "deviceId":"my-tpm-device",
      "status":"assigned",
      "substatus":"initialAssignment",
      "lastUpdatedDateTimeUtc":"2022-08-31T22:02:50.7370676Z",
      "etag":"xxxx-etag-value-xxxx",
      "tpm": {"authenticationKey": "xxxx-encrypted-authentication-key-xxxxx"},
      "payload": { A JSON object that contains the data returned by the webhook }
   }
}

Properti payload harus berupa objek JSON dan dapat berisi data apa pun yang relevan dengan solusi atau skenario IoT Anda.

Dukungan SDK

Fitur ini tersedia di C, C#, JAVA dan Node.js SDK klien. Untuk mempelajari selengkapnya tentang Azure IoT SDK yang tersedia untuk IoT Hub dan layanan Provisi Perangkat IoT Hub, lihat Microsoft Azure IoT SDK.

Dukungan IoT Edge

Dimulai dengan versi 1.4, IoT Edge mendukung pengiriman payload data yang terkandung dalam file JSON. File payload dibaca dan dikirim ke DPS ketika perangkat (re)terdaftar yang biasanya terjadi ketika Anda menjalankan iotedge config apply untuk pertama kalinya. Anda juga dapat memaksanya untuk dibaca ulang dan didaftarkan dengan menggunakan perintah iotedge system reprovisionprovisi ulang CLI .

Di bawah ini adalah contoh cuplikan dari /etc/aziot/config.toml tempat payload properti diatur ke jalur file JSON lokal.

   [provisioning]
   source = "dps"
   global_endpoint = "https://global.azure-devices-provisioning.net"
   id_scope = "0ab1234C5D6"

   # Uncomment to send a custom payload during DPS registration
   payload = { uri = "file:///home/aziot/payload.json" }
 

File payload (dalam hal /home/aziot/payload.jsonini ) dapat berisi JSON yang valid seperti:

{
    "modelId": "dtmi:com:example:edgedevice;1"
}

Langkah berikutnya