Přenos datových částí mezi zařízeními a DPS

Zařízení, která se registrují v DPS, musí při registraci poskytnout ID registrace a platné přihlašovací údaje (klíče nebo certifikáty X.509). Můžou ale existovat řešení IoT nebo scénáře, ve kterých se ze zařízení vyžadují další data. Webhook vlastních zásad přidělování může například použít informace, jako je číslo modelu zařízení, a vybrat centrum IoT pro zřízení zařízení. Podobně může zařízení vyžadovat další data v odpovědi na registraci, aby se usnadnila logika na straně klienta. Služba DPS poskytuje možnost pro zařízení odesílat i přijímat volitelnou datovou část při registraci.

Kdy ji použít

Mezi běžné scénáře odesílání volitelných datových částí patří:

  • Vlastní zásady přidělování můžou datovou část zařízení použít k výběru centra IoT pro zařízení nebo nastavení jeho počátečního dvojčete. Můžete například chtít přidělit zařízení na základě modelu zařízení. V takovém případě můžete zařízení nakonfigurovat tak, aby při registraci nahlásilo informace o modelu. Služba DPS předá datovou část zařízení do webhooku vlastního přidělení. Pak se váš webhook může rozhodnout, pro které centrum IoT se zařízení zřídí, na základě informací o modelu zařízení. V případě potřeby může webhook vracet data zpět do zařízení jako objekt JSON v odpovědi webhooku. Další informace najdete v tématu Použití datových částí zařízení ve vlastním přidělení.

  • Zařízení ioT technologie Plug and Play (PnP) můžou datovou část použít k odeslání ID modelu při registraci v DPS. Příklady tohoto použití najdete v ukázkách PnP v sadě SDK nebo ukázkových úložištích. Například termostat C# PnP nebo Node.js regulátor teploty PnP.

  • Zařízení IoT Central, která se připojují přes DPS, by měla dodržovat konvence technologie Plug and Play IoT a při registraci posílat ID modelu. IoT Central použije ID modelu k přiřazení zařízení ke správné šabloně zařízení. Další informace najdete v tématu Implementace zařízení a osvědčené postupy pro IoT Central.

Zařízení odesílá datovou část do DPS.

Když vaše zařízení volá zaregistrovat zařízení k registraci v DPS, může do vlastnosti datové části zahrnout další data. Například následující JSON ukazuje text požadavku na registraci pomocí ověření identity 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 } 
} 

Vlastnost datové části musí být objekt JSON a může obsahovat všechna data relevantní pro vaše řešení IoT nebo scénář.

Služba DPS vrací data do zařízení.

Služba DPS může v odpovědi na registraci vracet data zpět do zařízení. V současné době se tato funkce používá výhradně ve scénářích vlastního přidělování. Pokud webhook vlastních zásad přidělování potřebuje vracet data do zařízení, může data předat zpět jako objekt JSON v odpovědi webhooku. DPS pak tato data předá zpět ve vlastnosti registrationState.payload v odpovědi Register Device. Například následující JSON ukazuje text úspěšné odpovědi pro registraci pomocí ověření identity 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 }
   }
}

Vlastnost datové části musí být objekt JSON a může obsahovat všechna data relevantní pro vaše řešení IoT nebo scénář.

Podpora SDK

Tato funkce je dostupná v klientských sadách SDK jazyka C, C#, JAVA a Node.js. Další informace o sadách SDK Azure IoT, které jsou k dispozici pro službu IoT Hub a IoT Hub Device Provisioning, najdete v sadách SDK Microsoft Azure IoT.

Podpora IoT Edge

Od verze 1.4 podporuje IoT Edge odesílání datové části obsažené v souboru JSON. Soubor datové části se načte a odešle službě DPS, když je zařízení zaregistrované (znovu), což se obvykle stává při prvním spuštění iotedge config apply . Můžete ho také vynutit opětovné čtení a registraci pomocí příkazu pro opětovné zřízení rozhraní iotedge system reprovisionpříkazového řádku .

Níže je příklad fragmentu kódu, ze /etc/aziot/config.toml kterého payload je vlastnost nastavena na cestu k místnímu souboru JSON.

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

Datový soubor (v tomto případě /home/aziot/payload.json) může obsahovat libovolný platný json, například:

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

Další kroky