Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os dispositivos registrados com DPS são necessários para fornecer uma ID de registro e credenciais válidas (chaves ou certificados X.509) no momento do registro. No entanto, pode haver soluções de IoT ou cenários em que mais dados são necessários do dispositivo. Por exemplo, um webhook de política de alocação personalizada pode usar informações como um número de modelo de dispositivo para selecionar um hub IoT para o qual provisionar o dispositivo. Da mesma forma, um dispositivo pode exigir mais dados na resposta de registro para facilitar sua lógica do lado do cliente. O DPS fornece aos dispositivos a capacidade de enviar e receber um payload opcional no momento do registro.
Quando usar isso
Cenários comuns para enviar payloads opcionais são:
As políticas de alocação personalizadas podem usar o payload do dispositivo para ajudar a selecionar um hub IoT para um dispositivo ou definir o gêmeo inicial. Por exemplo, talvez você queira alocar seus dispositivos com base no modelo de dispositivo. Nesse caso, você pode configurar o dispositivo para relatar as informações do modelo no momento do registro. O DPS transmite o conteúdo do dispositivo para o webhook de alocação personalizada. Em seguida, o webhook pode decidir para qual hub IoT o dispositivo é provisionado com base nas informações do modelo de dispositivo. Se necessário, o webhook também pode retornar dados ao dispositivo como um objeto JSON na resposta do webhook. Para saber mais, confira Usar conteúdos do dispositivo na alocação personalizada.
Os dispositivos IoT Plug and Play (PnP)podem usar a carga útil para enviar o identificador do modelo ao se registrarem no DPS. Você pode encontrar exemplos desse uso nos exemplos de PnP no SDK ou repositórios de exemplo. Por exemplo, termostato pnP C# ou controlador de temperatura Node.js PnP.
Os dispositivos IoT Central que se conectam por meio do DPS devem seguir as convenções IoT Plug and Play e enviar a ID do modelo no momento do registro. O IoT Central usa a ID do modelo para atribuir o dispositivo ao modelo de dispositivo correto. Para saber mais, confira Implementação de dispositivo e melhores práticas para o IoT Central.
O dispositivo envia o conteúdo de dados para o DPS
Quando o dispositivo chama o Dispositivo de Registro para se registrar no DPS, ele pode incluir dados adicionais na propriedade conteúdo. Por exemplo, o JSON a seguir mostra o corpo de uma solicitação de registro usando o atestado 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 }
}
A propriedade payload deve ser um objeto JSON e pode conter quaisquer dados relevantes para a solução ou o cenário de IoT.
O DPS retorna dados para o dispositivo
O DPS pode retornar dados para o dispositivo na resposta de registro. No momento, esse recurso é usado exclusivamente em cenários de alocação personalizados. Se o webhook de política de alocação personalizada precisar retornar dados para o dispositivo, ele pode devolver os dados como um objeto JSON na resposta do webhook. Em seguida, o DPS passa esses dados de volta na propriedade registrationState.payload na resposta do Dispositivo de Registro. Por exemplo, o JSON a seguir mostra o corpo de uma resposta bem-sucedida para registrar usando o atestado 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 }
}
}
A propriedade payload deve ser um objeto JSON e pode conter quaisquer dados relevantes para a solução ou o cenário de IoT.
Suporte a SDK
Esse recurso está disponível nos SDKs de cliente C, C#, JAVA e Node.js. Para saber mais sobre os SDKs da Internet das Coisas do Azure disponíveis para o Hub IoT e o serviço de Provisionamento de Dispositivos no Hub IoT, consulte SDK do IoT do Microsoft Azure.
Suporte do Azure IoT Edge
A partir da versão 1.4, IoT Edge dá suporte ao envio de uma carga de dados contida em um arquivo JSON. O arquivo de carga é lido e enviado para o DPS quando o dispositivo é (re)registrado, o que normalmente acontece quando você executa iotedge config apply pela primeira vez. Você também pode forçá-lo a ser lido novamente e registrado usando o comando de reprovisionamento da CLI iotedge system reprovision.
O exemplo a seguir é um trecho do /etc/aziot/config.toml, onde a propriedade payload é definida como o caminho de um arquivo JSON local.
[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" }
O arquivo de conteúdo (neste caso /home/aziot/payload.json) pode conter qualquer JSON válido, como:
{
"modelId": "dtmi:com:example:edgedevice;1"
}
Próximas etapas
Para obter uma visão geral das políticas de alocação personalizadas, consulte Noções básicas sobre políticas de alocação personalizadas com o Serviço de Provisionamento de Dispositivos do Hub IoT do Azure.
Para saber como provisionar dispositivos usando uma política de alocação personalizada, consulte Tutorial: Usar políticas de alocação personalizadas com o DPS (Serviço de Provisionamento de Dispositivos).