Hasznos adatok átvitele az eszközök és a DPS között

A DPS-ben regisztráló eszközöknek regisztrációs azonosítót és érvényes hitelesítő adatokat (kulcsokat vagy X.509-tanúsítványokat) kell megadniuk a regisztrációkor. Lehetnek azonban olyan IoT-megoldások vagy forgatókönyvek, amelyekben több adatra van szükség az eszközről. Egy egyéni elosztási szabályzat webhook például az eszköz modell számát használva kiválaszthat egy IoT Hubot, amelyhez az eszközt üzembe helyezik. Hasonlóképpen előfordulhat, hogy egy eszköznek több adatra van szüksége a regisztrációs válaszban az ügyféloldali logika megkönnyítése érdekében. A DPS lehetővé teszi az eszközök számára, hogy regisztrálva is elküldhessenek és megkapjanak egy opcionális hasznos adatcsomagot.

Mikor lehet használni

Az alábbiakban következnek az opcionális hasznos adatok küldésének gyakori forgatókönyvei:

  • Az egyéni kiosztási szabályzatok az eszköz terhelési adataival segíthetnek kiválasztani egy IoT központot egy eszközhöz tartozóan, vagy beállíthatják a kezdeti digitális ikert. Előfordulhat például, hogy az eszközmodell alapján szeretné lefoglalni az eszközöket. Ebben az esetben úgy konfigurálhatja az eszközt, hogy regisztrálva jelentse a modelladatait. A DPS átadja az eszköz terhelését az egyéni kiosztási webhooknak. Ezután a webhook eldöntheti, hogy az eszköz melyik IoT Hubra van kiépítve az eszközmodell adatai alapján. Szükség esetén a webhook JSON-objektumként is vissza tudja adni az adatokat az eszköznek a webhook válaszában. További információ: Eszköz terhelési adatainak használata egyedi kiosztásban.

  • Az IoT Plug and Play (PnP)eszközök a hasznos adatok használatával küldhetik el a modellazonosítójukat, amikor regisztrálnak a DPS-ben. Erre a használatra az SDK-ban vagy a mintaadattárakban található PnP-mintákban találhat példákat. Például C# PnP termosztát vagy Node.js PnP hőmérsékletvezérlő.

  • A DPS-sel csatlakozó IoT Central-eszközöknek követniük kell az IoT Plug and Play konvencióinak használatát, és a regisztrációkor el kell küldeniük a modellazonosítójukat. Az IoT Central a modellazonosítóval rendeli hozzá az eszközt a megfelelő eszközsablonhoz. További információkért tekintse meg az eszközök implementálását és az IoT Central ajánlott eljárásait.

Az eszköz adatcsomagot küld a DPS-nek

Amikor az eszköz meghívja az Eszköz regisztrálása funkciót a DPS-ben, több adat is szerepelhet a hasznos adat tulajdonságban. Az alábbi JSON például a TPM-igazolással való regisztrálásra irányuló kérelem törzsét mutatja be:

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

A hasznos adattulajdonságnak JSON-objektumnak kell lennie, és az IoT-megoldással vagy -forgatókönyvvel kapcsolatos adatokat tartalmazhat.

A DPS adatokat ad vissza az eszköznek

A DPS vissza tudja adni az adatokat az eszköznek a regisztrációs válaszban. Ezt a funkciót jelenleg kizárólag egyéni foglalási forgatókönyvekben használják. Ha az egyéni kiosztási szabályzat webhookának adatokat kell visszaadnia az eszköznek, JSON-objektumként továbbíthatja az adatokat a webhook válaszában. A DPS ezután a registerState.payload tulajdonságban adja vissza ezeket az adatokat az eszközregisztráció válaszában. A következő JSON például egy sikeres válasz törzsét mutatja be a TPM-igazolással való regisztrációhoz.

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

A hasznos adattulajdonságnak JSON-objektumnak kell lennie, és az IoT-megoldással vagy -forgatókönyvvel kapcsolatos adatokat tartalmazhat.

SDK-támogatás

Ez a funkció C, C#, JAVA és Node.js ügyféloldali SDK-kban érhető el. Az IoT Hubhoz és az IoT Hub Device Provisioning Service-hez elérhető Azure IoT SDK-król további információt a Microsoft Azure IoT SDK-kban talál.

IoT Edge-támogatás

Az IoT Edge az 1.4-es verziótól kezdve támogatja a JSON-fájlban található adattartalom küldését. A rendszer beolvassa és elküldi a hasznos adatfájlt a DPS-nek, amikor az eszköz (újra)regisztrálva van, ami általában az első iotedge config apply futtatásakor történik. Azt is kényszerítheti, hogy újraolvassák és regisztrálják a parancssori felület újraépítési parancsával iotedge system reprovision.

Az alábbi példa egy /etc/aziot/config.toml-ból származó kódrészlet, ahol a payload tulajdonság a helyi JSON-fájl elérési útjára van állítva.

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

A hasznos adatfájl (ebben az esetben /home/aziot/payload.json) bármilyen érvényes JSON-t tartalmazhat, mint például:

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

Következő lépések