Получение строки подключения Azure IOT Hub из приложения UWP на подготовленном устройстве

У меня есть Raspberry Pi под управлением Windows IOT Core, который был подготовлен для Azure IOT Hub. Я пишу приложение UWP и хочу отправлять сообщения в IOT Hub, для чего мне нужно Microsoft.Azure.Devices.Client.DeviceClient. DeviceClient нужна строка подключения, которую я могу жестко закодировать в приложении для тестирования.

Как я:

  1. Проверить, настроено ли устройство, на котором запущено приложение, для IOT Hub?
  2. Получить строку подключения для IOT Hub?

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


person zivkan    schedule 20.07.2019    source источник


Ответы (2)


Microsoft.Azure.Devices.Client.DeviceClient - это пакеты SDK для устройств Центра Интернета вещей. Он используется для отправки телеметрии в ваш центр Интернета вещей и, при необходимости, получения сообщений, заданий, методов или двойных обновлений от вашего центра Интернета вещей. Но если вы хотите получить строку подключения для IoT Hub и проверить, настроено ли устройство для IoT Hub, вам необходимо использовать SDK службы Центра Интернета вещей s. Он позволяет создавать серверные приложения для управления центром Интернета вещей и при желании отправлять сообщения, планировать задания, вызывать прямые методы или отправлять требуемые обновления свойств на ваши устройства или модули Интернета вещей. Но вам также необходимо установить в приложении строку подключения DeviceId и iot-хаба. Не рекомендуется создавать строку подключения на стороне клиента устройства. SDK поддерживает приложение UWP для работы в Windows IoT Core.

person Michael Xu - MSFT    schedule 22.07.2019
comment
Спасибо, что нашли время написать, но я задал вопрос, потому что я уже видел все эти документы и до сих пор не могу понять, какие API использовать. В SDK службы Центра Интернета вещей есть API-интерфейсы для получения сообщений d2c и отправки сообщений c2d, поэтому я не понимаю, зачем использовать его на своем устройстве, с которого я хочу отправлять телеметрию. Я не вижу API-интерфейсов, чтобы проверить, подготовлено ли устройство, на котором в данный момент выполняется код, и, если да, то как создать DeviceClient. Как производители устройств, выпускающие тысячи устройств, используют Центр Интернета вещей? Невозможно масштабировать создание настраиваемого развертывания для каждого устройства. - person zivkan; 22.07.2019

Я думаю, вы могли бы попробовать проверить мост UWP. Это библиотека WinRT, которую можно использовать для подключения к агенту устройства и чтения строки подключения из TPM.

Вы можете собрать библиотеку DMBridgeComponent из репозитория azure-client-tools на GitHub (https://github.com/ms-iot/azure-client-tools), а затем сослаться на него из своего приложения UWP.

Затем, чтобы прочитать строку подключения, вам просто понадобится следующий код:

using DMBridgeComponent;
...

var tpm = new TpmBridge();

// Get connection string from TPM
var slotNumberValue = 0;
var connectionString = tpm.GetConnectionString(slotNumberValue, 36000);

Установите slotNumberValue на любой слот, который вы использовали при инициализации устройства. По умолчанию обычно 0.

Здесь есть дополнительная информация (https://github.com/ms-iot/azure-client-tools/blob/master/docs/device-agent/uwp-bridge.md). Вот где я нашел образец кода.

person Connor Joseph Early    schedule 10.05.2021
comment
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - Из отзыва - person David Maze; 11.05.2021
comment
Я отредактировал, чтобы добавить соответствующий образец кода, который был в ссылке на ответ. - person Connor Joseph Early; 11.05.2021