Jak przenieść ładunki między urządzeniami i usługą DPS
Urządzenia rejestrujące się w usłudze DPS są wymagane do podania identyfikatora rejestracji i prawidłowych poświadczeń (kluczy lub certyfikatów X.509) podczas rejestrowania. Mogą jednak istnieć rozwiązania IoT lub scenariusze, w których potrzebne są dodatkowe dane z urządzenia. Na przykład niestandardowy element webhook zasad alokacji może używać informacji, takich jak numer modelu urządzenia, aby wybrać centrum IoT Hub w celu aprowizacji urządzenia. Podobnie urządzenie może wymagać dodatkowych danych w odpowiedzi na rejestrację, aby ułatwić logikę po stronie klienta. Usługa DPS umożliwia urządzeniom wysyłanie i odbieranie opcjonalnego ładunku podczas rejestrowania.
Zastosowanie
Typowe scenariusze wysyłania opcjonalnych ładunków to:
Niestandardowe zasady alokacji mogą używać ładunku urządzenia, aby ułatwić wybranie centrum IoT dla urządzenia lub ustawienie początkowej reprezentacji bliźniaczej. Możesz na przykład przydzielić urządzenia na podstawie modelu urządzenia. W takim przypadku można skonfigurować urządzenie w celu raportowania informacji o modelu podczas rejestrowania. Usługa DPS przekaże ładunek urządzenia do niestandardowego elementu webhook alokacji. Następnie element webhook może zdecydować, które centrum IoT Hub zostanie aprowizowane na podstawie informacji o modelu urządzenia. W razie potrzeby element webhook może również zwracać dane z powrotem do urządzenia jako obiekt JSON w odpowiedzi elementu webhook. Aby dowiedzieć się więcej, zobacz Używanie ładunków urządzeń w ramach alokacji niestandardowej.
Urządzenia IoT Plug and Play (PnP) mogą używać ładunku do wysyłania identyfikatora modelu podczas rejestrowania się w usłudze DPS. Przykłady tego użycia można znaleźć w przykładach pnP w zestawie SDK lub przykładowych repozytoriach. Na przykład termostat w języku C# PnP lub Node.js kontroler temperatury PnP.
Urządzenia usługi IoT Central , które łączą się za pośrednictwem usługi DPS , powinny przestrzegać konwencji IoT Plug and Play i wysyłać identyfikator modelu podczas rejestrowania. Usługa IoT Central używa identyfikatora modelu do przypisania urządzenia do odpowiedniego szablonu urządzenia. Aby dowiedzieć się więcej, zobacz Implementacja urządzeń i najlepsze rozwiązania dotyczące usługi IoT Central.
Urządzenie wysyła ładunek danych do usługi DPS
Gdy urządzenie wywołuje metodę Rejestrowanie urządzenia w celu zarejestrowania w usłudze DPS, może zawierać dodatkowe dane we właściwości ładunku. Na przykład poniższy kod JSON przedstawia treść żądania zarejestrowania przy użyciu zaświadczania 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 }
}
Właściwość ładunku musi być obiektem JSON i może zawierać dowolne dane istotne dla rozwiązania lub scenariusza IoT.
Usługa DPS zwraca dane do urządzenia
Usługa DPS może zwracać dane z powrotem do urządzenia w odpowiedzi na rejestrację. Obecnie ta funkcja jest używana wyłącznie w niestandardowych scenariuszach alokacji. Jeśli niestandardowy element webhook zasad alokacji musi zwracać dane do urządzenia, może przekazać dane z powrotem jako obiekt JSON w odpowiedzi elementu webhook. Następnie usługa DPS przekaże te dane z powrotem we właściwości registrationState.payload w odpowiedzi Rejestruj urządzenie. Na przykład poniższy kod JSON przedstawia treść pomyślnej odpowiedzi na rejestrację przy użyciu zaświadczania 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 }
}
}
Właściwość ładunku musi być obiektem JSON i może zawierać dowolne dane istotne dla rozwiązania lub scenariusza IoT.
Pomoc techniczna SDK
Ta funkcja jest dostępna w zestawach SDK klienta C, C#, JAVA i Node.js. Aby dowiedzieć się więcej na temat zestawów SDK usługi Azure IoT dostępnych dla usług IoT Hub i IoT Hub Device Provisioning, zobacz Zestawy SDK usługi Microsoft Azure IoT.
Obsługa usługi IoT Edge
Począwszy od wersji 1.4, usługa IoT Edge obsługuje wysyłanie ładunku danych zawartego w pliku JSON. Plik ładunku jest odczytywany i wysyłany do usługi DPS, gdy urządzenie jest (ponownie zarejestrowane), co zwykle występuje po iotedge config apply
uruchomieniu po raz pierwszy. Można również wymusić jego ponowne odczytanie i zarejestrowanie przy użyciu polecenia iotedge system reprovision
ponownego aprowizacji interfejsu wiersza polecenia .
Poniżej znajduje się przykładowy fragment kodu, z /etc/aziot/config.toml
którego payload
właściwość jest ustawiona na ścieżkę lokalnego pliku 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" }
Plik ładunku (w tym przypadku /home/aziot/payload.json
) może zawierać dowolny prawidłowy kod JSON, taki jak:
{
"modelId": "dtmi:com:example:edgedevice;1"
}
Następne kroki
Aby zapoznać się z omówieniem niestandardowych zasad alokacji, zobacz Omówienie niestandardowych zasad alokacji
Aby dowiedzieć się, jak aprowizować urządzenia przy użyciu niestandardowych zasad alokacji, zobacz Używanie niestandardowych zasad alokacji