Cihazlar ve DPS arasında yük aktarma

DPS'ye kaydolan cihazların kayıt sırasında bir kayıt kimliği ve geçerli kimlik bilgileri (anahtarlar veya X.509 sertifikaları) sağlaması gerekir. Ancak cihazdan ek verilere ihtiyaç duyulan IoT çözümleri veya senaryoları olabilir. Örneğin, özel ayırma ilkesi web kancası, cihazı sağlamak üzere bir IoT hub'ı seçmek için cihaz modeli numarası gibi bilgileri kullanabilir. Benzer şekilde, bir cihaz istemci tarafı mantığını kolaylaştırmak için kayıt yanıtında ek veriler gerektirebilir. DPS, cihazların kaydolduğunda hem gönderme hem de isteğe bağlı yük alma özelliği sağlar.

Kullanılması gereken durumlar

İsteğe bağlı yük göndermeye yönelik yaygın senaryolar şunlardır:

  • Özel ayırma ilkeleri , bir cihaz için IoT hub'ı seçmeye veya ilk ikizini ayarlamaya yardımcı olması için cihaz yükünü kullanabilir. Örneğin, cihazlarınızı cihaz modeline göre ayırmak isteyebilirsiniz. Bu durumda, cihazı kaydolduğunda model bilgilerini bildirecek şekilde yapılandırabilirsiniz. DPS, cihazın yükünü özel ayırma web kancasına geçirir. Ardından, cihaz modeli bilgilerine göre cihazın hangi IoT hub'ına sağlanacağına web kancanız karar verebilir. Gerekirse, web kancası verileri web kancası yanıtında bir JSON nesnesi olarak cihaza geri döndürebilir. Daha fazla bilgi edinmek için bkz . Özel ayırmada cihaz yüklerini kullanma.

  • IoT Tak Çalıştır (PnP) cihazları, DPS'ye kaydolduğunda model kimliklerini göndermek için yükü kullanabilir. Bu kullanımın örneklerini SDK'daki PnP örneklerinde veya örnek depolarda bulabilirsiniz. Örneğin, C# PnP termostat veya Node.js PnP sıcaklık denetleyicisi.

  • DPS aracılığıyla bağlanan IoT Central cihazlarının IoT Tak Çalıştır kurallara uyması ve kaydolduğunda model kimliklerini göndermesi gerekir. IoT Central, cihazı doğru cihaz şablonuna atamak için model kimliğini kullanır. Daha fazla bilgi edinmek için bkz . IoT Central için cihaz uygulaması ve en iyi yöntemler.

Cihaz DPS'ye veri yükü gönderiyor

Cihazınız DPS'ye kaydolmak için Cihazı Kaydet'i çağırdığında, yük özelliğine ek veriler içerebilir. Örneğin, aşağıdaki JSON tpm kanıtlama kullanarak kaydolma isteği gövdesini gösterir:

{ 
    "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 } 
} 

Payload özelliği bir JSON nesnesi olmalıdır ve IoT çözümünüz veya senaryonuzla ilgili tüm verileri içerebilir.

DPS, cihaza veri döndürür

DPS, kayıt yanıtında verileri cihaza geri döndürebilir. Şu anda bu özellik özel ayırma senaryolarında özel olarak kullanılmaktadır. Özel ayırma ilkesi web kancasının cihaza veri döndürmesi gerekiyorsa, verileri web kancası yanıtında bir JSON nesnesi olarak geri geçirebilir. DPS daha sonra bu verileri Cihaz Kaydetme yanıtında registrationState.payload özelliğine geri geçirir. Örneğin aşağıdaki JSON, TPM kanıtlama kullanarak kaydolmaya yönelik başarılı bir yanıtın gövdesini gösterir.

{
   "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 }
   }
}

Payload özelliği bir JSON nesnesi olmalıdır ve IoT çözümünüz veya senaryonuzla ilgili tüm verileri içerebilir.

SDK desteği

Bu özellik C, C#, JAVA ve Node.js istemci SDK'larında kullanılabilir. IoT Hub ve IoT Hub Cihaz Sağlama hizmeti için kullanılabilen Azure IoT SDK'ları hakkında daha fazla bilgi edinmek için bkz . Microsoft Azure IoT SDK'ları.

IoT Edge desteği

Sürüm 1.4'den başlayarak IoT Edge, bir JSON dosyasında bulunan veri yükünün gönderilmesini destekler. Yük dosyası okunur ve cihaz (yeniden) kaydedildiğinde DPS'ye gönderilir ve bu genellikle ilk kez çalıştırdığınızda iotedge config apply gerçekleşir. Cli'nin yeniden sağlama komutunu iotedge system reprovisionkullanarak yeniden okunmaya ve kaydedilmeye zorlayabilirsiniz.

Aşağıda, özelliğin yerel bir JSON dosyasının yoluna ayarlandığı payload örnek bir kod parçacığı /etc/aziot/config.toml verilmiştir.

   [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" }
 

Yük dosyası (bu örnekte /home/aziot/payload.json) aşağıdaki gibi geçerli JSON'ları içerebilir:

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

Sonraki adımlar