Delen via


Hoe payloads tussen apparaten en DPS te verplaatsen

Apparaten die zich bij DPS registreren, moeten een registratie-id en geldige referenties (sleutels of X.509-certificaten) opgeven wanneer ze zich registreren. Er kunnen echter IoT-oplossingen of scenario's zijn waarin meer gegevens van het apparaat nodig zijn. Een webhook voor aangepast toewijzingsbeleid kan bijvoorbeeld informatie zoals een apparaatmodelnummer gebruiken om een IoT-hub te selecteren om het apparaat in te richten. Op dezelfde manier vereist een apparaat mogelijk meer gegevens in het registratieantwoord om de logica aan de clientzijde te vergemakkelijken. DPS biedt de mogelijkheid voor apparaten om zowel een optionele nettolading te verzenden als te ontvangen wanneer ze zich registreren.

Wanneer te gebruiken

Veelvoorkomende scenario's voor het verzenden van optionele payloads zijn:

Apparaat verzendt nettolading van gegevens naar DPS

Wanneer uw apparaat Apparaat registreren aanroept om te registreren bij DPS, kan het meer data bevatten in de payload-eigenschap. In de volgende JSON ziet u bijvoorbeeld de hoofdtekst voor een aanvraag voor het registreren met behulp van TPM-attestation:

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

De payload-eigenschap moet een JSON-object zijn en kan alle gegevens bevatten die relevant zijn voor uw IoT-oplossing of -scenario.

DPS retourneert gegevens naar het apparaat

DPS kan gegevens terugsturen naar het apparaat in het registratieantwoord. Deze functie wordt momenteel uitsluitend gebruikt in aangepaste toewijzingsscenario's. Als de webhook van het aangepaste toewijzingsbeleid gegevens naar het apparaat moet retourneren, kunnen de gegevens als een JSON-object worden doorgegeven in het antwoord van de webhook. DPS geeft die gegevens vervolgens weer door in de eigenschap registrationState.payload in het antwoord Apparaat registreren. Een voorbeeld van een succesvolle respons bij registratie met behulp van TPM-attestatie wordt weergegeven in de volgende JSON.

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

De payload-eigenschap moet een JSON-object zijn en kan alle gegevens bevatten die relevant zijn voor uw IoT-oplossing of -scenario.

SDK-ondersteuning

Deze functie is beschikbaar in C,C#, JAVA en Node.js client-SDK's. Zie Microsoft Azure IoT SDK's voor meer informatie over de Azure IoT SDK's die beschikbaar zijn voor IoT Hub en IoT Hub Device Provisioning Service.

IoT Edge-ondersteuning

Vanaf versie 1.4 ondersteunt IoT Edge het verzenden van een nettolading van gegevens in een JSON-bestand. Het payloadbestand wordt gelezen en verzonden naar DPS wanneer het apparaat (opnieuw) is geregistreerd, wat meestal gebeurt wanneer u iotedge config apply voor het eerst uitvoert. U kunt ook afdwingen dat deze opnieuw wordt gelezen en geregistreerd met behulp van de opdracht iotedge system reprovisionvoor opnieuw inrichten van de CLI.

Het volgende voorbeeld is een fragment van /etc/aziot/config.toml, waar de payload eigenschap is ingesteld op het pad van een lokaal JSON-bestand.

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

Het nettoladingbestand (in dit geval /home/aziot/payload.json) kan een geldige JSON bevatten, zoals:

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

Volgende stappen