Payloads overdragen tussen apparaten en DPS

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 aanvullende gegevens van het apparaat nodig zijn. Een webhook voor aangepast toewijzingsbeleid kan bijvoorbeeld informatie gebruiken zoals een apparaatmodelnummer om een IoT-hub te selecteren om het apparaat in te richten. Op dezelfde manier kan een apparaat aanvullende gegevens in het registratieantwoord vereisen 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 nettoladingen zijn:

  • Aangepast toewijzingsbeleid kan de nettolading van het apparaat gebruiken om een IoT-hub voor een apparaat te selecteren of de eerste dubbel in te stellen. U kunt bijvoorbeeld uw apparaten toewijzen op basis van het apparaatmodel. In dit geval kunt u het apparaat configureren om de modelgegevens te rapporteren wanneer het wordt geregistreerd. DPS geeft de nettolading van het apparaat door aan de webhook voor aangepaste toewijzing. Vervolgens kan uw webhook bepalen voor welke IoT-hub het apparaat wordt ingericht op basis van de gegevens van het apparaatmodel. Indien nodig kan de webhook ook gegevens retourneren naar het apparaat als een JSON-object in het antwoord van de webhook. Zie Nettoladingen van apparaten gebruiken in aangepaste toewijzing voor meer informatie.

  • IoT Plug en Play -apparaten (PnP) kunnen de nettolading gebruiken om hun model-id te verzenden wanneer ze zich registreren bij DPS. Voorbeelden van dit gebruik vindt u in de PnP-voorbeelden in de SDK of voorbeeldopslagplaatsen. Bijvoorbeeld C# PnP-thermostaat of Node.js PnP-temperatuurregelaar.

  • IoT Central-apparaten die verbinding maken via DPS, moeten voldoen aan de Conventies van IoT Plug en Play en hun model-id verzenden wanneer ze zich registreren. IoT Central gebruikt de model-id om het apparaat toe te wijzen aan de juiste apparaatsjabloon. Zie Apparaatimplementatie en aanbevolen procedures voor IoT Central voor meer informatie.

Apparaat verzendt nettolading van gegevens naar DPS

Wanneer uw apparaat Apparaat registreren aanroept om te registreren bij DPS, kan het extra gegevens bevatten in de eigenschap nettolading. 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 eigenschap nettolading 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. In de volgende JSON ziet u bijvoorbeeld de hoofdtekst van een geslaagd antwoord om te registreren met behulp van TPM-attestation.

{
   "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 eigenschap nettolading 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 nettoladingbestand wordt gelezen en verzonden naar DPS wanneer het apparaat (opnieuw) is geregistreerd, wat meestal gebeurt wanneer u voor het eerst wordt uitgevoerd iotedge config apply . U kunt ook afdwingen dat deze opnieuw wordt gelezen en geregistreerd met behulp van de opdracht iotedge system reprovisionvoor opnieuw inrichten van de CLI.

Hieronder ziet u een voorbeeldfragment van /etc/aziot/config.toml waaruit 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