Udostępnij za pośrednictwem


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 reprovisionponownego 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