Передача полезных данных между устройствами и DPS
Устройства, которые регистрируются в DPS, необходимы для предоставления идентификатора регистрации и допустимых учетных данных (ключей или сертификатов X.509) при регистрации. Однако могут существовать решения или сценарии Интернета вещей, в которых требуются дополнительные данные с устройства. Например, веб-перехватчик настраиваемой политики выделения может использовать такие сведения, как номер модели устройства, чтобы выбрать Центр Интернета вещей для подготовки устройства. Аналогичным образом устройство может потребовать дополнительных данных в ответе регистрации, чтобы упростить логику на стороне клиента. DPS предоставляет возможность для устройств отправлять и получать необязательные полезные данные при регистрации.
Сценарии использования
Распространенные сценарии отправки необязательных полезных данных:
Пользовательские политики выделения могут использовать полезные данные устройства, чтобы выбрать центр Интернета вещей для устройства или задать его первоначальный двойник. Например, вы можете выделить устройства на основе модели устройства. В этом случае устройство можно настроить для отправки сведений о модели при регистрации. DPS передает полезные данные устройства в пользовательский веб-перехватчик выделения. Затем веб-перехватчик может решить, какой центр Интернета вещей будет подготовлен на основе сведений об модели устройства. При необходимости веб-перехватчик также может возвращать данные обратно на устройство в виде объекта JSON в ответе веб-перехватчика. Дополнительные сведения см. в разделе "Использование полезных данных устройства" в пользовательском выделении.
Устройства IoT самонастраивающийся (PnP) могут использовать полезные данные для отправки идентификатора модели при регистрации в DPS. Примеры этого использования можно найти в примерах PnP в пакете SDK или примерах репозиториев. Например, термостат C# PnP или Node.js контроллер температуры PnP.
Устройства IoT Central, которые подключаются через DPS, должны соответствовать соглашениям самонастраивающийся Интернета вещей и отправлять идентификатор модели при регистрации. IoT Central использует идентификатор модели для назначения устройства правильному шаблону устройства. Дополнительные сведения см. в статье о реализации устройств и рекомендациях для IoT Central.
Устройство отправляет полезные данные в службу DPS
Когда устройство вызывает регистрацию устройства в DPS, оно может включать дополнительные данные в свойство полезных данных . Например, в следующем формате JSON показан текст запроса на регистрацию с помощью аттестации доверенного платформенного модуля:
{
"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 }
}
Свойство полезных данных должно быть объектом JSON и может содержать любые данные, относящиеся к решению Интернета вещей или сценарию.
Служба DPS возвращает данные на устройство
DPS может вернуть данные на устройство в ответе на регистрацию. В настоящее время эта функция используется исключительно в пользовательских сценариях выделения. Если веб-перехватчик настраиваемой политики выделения должен вернуть данные на устройство, он может передать данные обратно в виде объекта JSON в ответе веб-перехватчика. DPS будет передавать эти данные обратно в свойство registrationState.payload в ответе register Device. Например, в следующем формате 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 }
}
}
Свойство полезных данных должно быть объектом JSON и может содержать любые данные, относящиеся к решению Интернета вещей или сценарию.
Поддержка пакета SDK
Эта функция доступна в клиентских пакетах SDK для C, C#, Java и Node.js. Дополнительные сведения о пакетах SDK Для Интернета вещей Azure, доступных для Центр Интернета вещей и Центр Интернета вещей службе подготовки устройств, см. в пакетах SDK Microsoft Azure IoT.
Поддержка IoT Edge
Начиная с версии 1.4 IoT Edge поддерживает отправку полезных данных, содержащихся в JSON-файле. Файл полезных данных считывается и отправляется в DPS, когда устройство зарегистрировано (повторно),которое обычно происходит при первом запуске iotedge config apply
. Вы также можете принудительно перечитать и зарегистрировать его с помощью команды iotedge system reprovision
повторной подготовки CLI.
Ниже приведен пример фрагмента кода, из /etc/aziot/config.toml
которого payload
свойству присвоен путь к локальному 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" }
Файл полезных данных (в данном случае /home/aziot/payload.json
) может содержать любой допустимый json, например:
{
"modelId": "dtmi:com:example:edgedevice;1"
}
Следующие шаги
Общие сведения о пользовательских политиках выделения см. в разделе "Общие сведения о пользовательских политиках выделения"
Сведения о подготовке устройств с помощью настраиваемой политики выделения см. в статье "Использование настраиваемых политик выделения"