Начало работы с удостоверением модуля Центр Интернета вещей и двойником модуля с помощью портал Azure и устройства .NET
Удостоверение и двойник модуля аналогичны удостоверению и двойнику устройства Центра Интернета вещей Azure, однако они предоставляют более высокую степень детализации. В то время как удостоверение и двойник устройства Центра Интернета вещей Azure позволяют серверному приложению настраивать устройство и отображать сведения о состоянии устройства, удостоверение и двойник модуля предоставляют эти возможности для отдельных компонентов устройства. На совместимых устройствах с несколькими компонентами, например устройствах с операционной системой или устройствах со встроенным ПО, удостоверения и двойники модулей позволяют изолировать конфигурацию и условия для каждого компонента.
Примечание.
Функции, описанные в этой статье, доступны только на стандартном уровне Центра Интернета вещей. Дополнительные сведения о базовых и бесплатных уровнях Центр Интернета вещей см. в разделе "Выбор подходящего уровня Центр Интернета вещей" для решения.
В этой статье раскрываются следующие темы:
Создание удостоверения модуля на портале.
Используйте пакет SDK для устройства .NET, чтобы обновить двойник модуля из устройства.
Примечание.
Дополнительные сведения о средствах SDK, доступных для создания приложения устройства и внутреннего приложения, см. в статье Пакеты SDK для Интернета вещей Azure.
Необходимые компоненты
Visual Studio.
Центр Интернета вещей в подписке Azure. Если у вас еще нет центра, выполните действия, описанные в разделе Создание центра Интернета вещей.
Устройство, зарегистрированное в центре Интернета вещей. Если у вас нет устройства в Центре Интернета вещей, выполните действия, описанные в разделе "Регистрация устройства".
Проверка подлинности модуля
Для проверки подлинности удостоверений модулей можно использовать симметричные ключи или сертификаты X.509. Для проверки подлинности сертификата X.509 сертификат модуля должен иметь общее имя (CN).CN=<deviceid>/<moduleid>
Например:
openssl req -new -key d1m1.key.pem -out d1m1.csr -subj "/CN=device01\/module01"
Создание удостоверения модуля на портале
В рамках одного удостоверения устройства можно создать до 20 удостоверений модуля. Чтобы добавить удостоверение:
На существующем устройстве на портале Azure выберите Добавить удостоверение модуля, чтобы создать свое первое удостоверение модуля.
Введите имя myFirstModule. Сохраните удостоверение модуля.
В нижней части экрана появится новое удостоверение модуля. Выберите его, чтобы просмотреть сведения.
Сохраните строку подключения (первичный ключ). Это значение будет использоваться в следующем разделе для настройки модуля на устройстве в консольном приложении.
Обновление двойника модуля с помощью пакета SDK для устройства .NET
Давайте теперь попробуем обменяться данными с облаком со своего имитированного устройства. После создания удостоверения модуля двойник модуля будет неявно создан в Центре Интернета вещей. В этом разделе вы создадите консольное приложение .NET на имитированном устройстве, которое обновляет сообщаемые свойства двойника модуля.
Создание проекта Visual Studio
Чтобы создать приложение, которое обновляет сообщаемые свойства двойника модуля:
В Visual Studio последовательно выберите элементы Создать новый проект и Консольное приложение (.NET Framework). Затем нажмите кнопку Далее.
В окне настройки нового проекта введите в поле Имя проекта значение UpdateModuleTwinReportedProperties. Выберите Далее для продолжения.
Оставьте платформу .NET по умолчанию и нажмите кнопку Создать.
Установка последнего пакета SDK для устройств Центра Интернета вещей Azure для .NET
Функции идентификации модуля и двойника модуля доступны только в пакетах SDK для предварительного выпуска Центр Интернета вещей устройств. Чтобы установить расширение, выполните следующие действия:
В Visual Studio выберите элементы Сервис>Диспетчер пакетов NuGet>Управление пакетами NuGet для решения
Выберите элемент Обзор, а затем — элемент Включить предварительные выпуски. Найдите Microsoft.Azure.Devices.Client. Выберите последнюю версию и установите ее.
Теперь у вас есть доступ ко всем возможностям этого модуля.
Создание консольного приложения UpdateModuleTwinReportedProperties
Внимание
В этой статье содержатся шаги по подключению устройства с помощью подписанного URL-адреса, также называемого проверкой подлинности симметричного ключа. Этот метод проверки подлинности удобнее для тестирования и оценки, но проверка подлинности устройства с помощью сертификатов X.509 является более безопасным подходом. Дополнительные сведения см. в разделе "Рекомендации > по обеспечению безопасности подключений".
Выполните следующие действия, чтобы создать приложение:
- Добавьте следующие инструкции
using
в начало файла Program.cs :
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using Newtonsoft.Json;
- Добавьте следующие поля в класс Program . Замените заполнитель реальным значением строки подключения к модулю, которую вы скопировали ранее.
private const string ModuleConnectionString = "<Your module connection string>";
private static ModuleClient Client = null;
- Добавьте метод OnDesiredPropertyChanged в класс Program:
private static async Task OnDesiredPropertyChanged(TwinCollection desiredProperties, object userContext)
{
Console.WriteLine("desired property change:");
Console.WriteLine(JsonConvert.SerializeObject(desiredProperties));
Console.WriteLine("Sending current time as reported property");
TwinCollection reportedProperties = new TwinCollection
{
["DateTimeLastDesiredPropertyChangeReceived"] = DateTime.Now
};
await Client.UpdateReportedPropertiesAsync(reportedProperties).ConfigureAwait(false);
}
- Наконец, замените метод Main следующим кодом:
static void Main(string[] args)
{
Microsoft.Azure.Devices.Client.TransportType transport = Microsoft.Azure.Devices.Client.TransportType.Amqp;
try
{
Client = ModuleClient.CreateFromConnectionString(ModuleConnectionString, transport);
Client.SetConnectionStatusChangesHandler(ConnectionStatusChangeHandler);
Client.SetDesiredPropertyUpdateCallbackAsync(OnDesiredPropertyChanged, null).Wait();
Console.WriteLine("Retrieving twin");
var twinTask = Client.GetTwinAsync();
twinTask.Wait();
var twin = twinTask.Result;
Console.WriteLine(JsonConvert.SerializeObject(twin));
Console.WriteLine("Sending app start time as reported property");
TwinCollection reportedProperties = new TwinCollection();
reportedProperties["DateTimeLastAppLaunch"] = DateTime.Now;
Client.UpdateReportedPropertiesAsync(reportedProperties);
}
catch (AggregateException ex)
{
Console.WriteLine("Error in sample: {0}", ex);
}
Console.WriteLine("Waiting for Events. Press enter to exit...");
Console.ReadKey();
Client.CloseAsync().Wait();
}
private static void ConnectionStatusChangeHandler(ConnectionStatus status, ConnectionStatusChangeReason reason)
{
Console.WriteLine($"Status {status} changed: {reason}");
}
Вы можете создать и запустить это приложение с помощью клавиши F5.
Теперь вы знаете, как извлечь двойник модуля и обновить сообщаемые свойства с помощью протокола AMQP.
Следующие шаги
Чтобы продолжить знакомство с Центром Интернета вещей и изучить другие сценарии Интернета вещей, см. следующие ресурсы: