Azure IoT SDK - проверьте, зарегистрировано ли уже устройство - PullRequest
0 голосов
/ 20 июня 2020

Я использую Azure IoT C SDK на своем устройстве.

Мое приложение выполняет подготовку в соответствии с образцом кода prov_dev_client_ll_sample.c, но после этого также обрабатывает обмен данными со своим двойником на облако et c. через MQTT в соответствии с образцом кода iothub_client_device_twin_and_methods_sample.c.

В идеале, я предполагаю, что лог инициализации c должен выполняться только в самый первый раз, когда устройство загружается и регистрируется на портале, а не каждый раз загружается.

Есть ли способ / функция, чтобы проверить, было ли устройство уже зарегистрировано на портале, перед выполнением журнала инициализации. c?

Я думаю, это не так много в любом случае навредить выполнению протокола инициализации c, поскольку он выясняет, что устройство уже зарегистрировано на портале?

1 Ответ

3 голосов
/ 20 июня 2020

Вы можете использовать REST API - Поиск статуса регистрации устройства , чтобы получить статус регистрации устройства.

Ниже приведен пример запроса POST для устройства 10 статус регистрации в соответствующем Центре Интернета вещей приложения IoT Central ( iotcScopeId = 0ne11111111 ):

POST запроса:

  https://global.azure-devices-provisioning.net/0ne11111111/registrations/device10?api-version=2019-03-31

заголовок:

  Authorization: sas

, где токен sas может быть сгенерирован следующей функцией (подробнее здесь ):

 string sas = SharedAccessSignatureBuilder.GetSASToken($"{iotcScopeId}/registrations/{deviceId}", deviceKey, "registration");

полезная нагрузка:

 {
   "registrationId":"device10"
 }

ответ:

{
    "registrationId":"device10",
    "createdDateTimeUtc":"2020-06-20T12:38:45.451863Z",
    "assignedHub":"iotc-xxxxxxx.azure-devices.net",
    "deviceId":"device10",
    "status":"assigned",
    "substatus":"initialAssignment",
    "lastUpdatedDateTimeUtc":"2020-06-20T12:38:45.6268772Z",
    "etag":"xxxxx"
}

в случае отсутствия устройства ответ:

 {
   "errorCode": 404202,
   "trackingId": "481a4060-37c1-40e2-8a23-d225e49781c6",
   "message": "Registration not found.",
   "timestampUtc": "2020-06-20T12:36:43.8782738Z"
 }
...