Поделиться через


Начало работы с удостоверением модуля Центр Интернета вещей и двойником модуля с помощью портал Azure и устройства .NET

Удостоверение и двойник модуля аналогичны удостоверению и двойнику устройства Центра Интернета вещей Azure, однако они предоставляют более высокую степень детализации. В то время как удостоверение и двойник устройства Центра Интернета вещей Azure позволяют серверному приложению настраивать устройство и отображать сведения о состоянии устройства, удостоверение и двойник модуля предоставляют эти возможности для отдельных компонентов устройства. На совместимых устройствах с несколькими компонентами, например устройствах с операционной системой или устройствах со встроенным ПО, удостоверения и двойники модулей позволяют изолировать конфигурацию и условия для каждого компонента.

Примечание.

Функции, описанные в этой статье, доступны только на стандартном уровне Центра Интернета вещей. Дополнительные сведения о базовых и бесплатных уровнях Центр Интернета вещей см. в разделе "Выбор подходящего уровня Центр Интернета вещей" для решения.

В этой статье раскрываются следующие темы:

  • Создание удостоверения модуля на портале.

  • Используйте пакет SDK для устройства .NET, чтобы обновить двойник модуля из устройства.

Примечание.

Дополнительные сведения о средствах SDK, доступных для создания приложения устройства и внутреннего приложения, см. в статье Пакеты SDK для Интернета вещей Azure.

Необходимые компоненты

Проверка подлинности модуля

Для проверки подлинности удостоверений модулей можно использовать симметричные ключи или сертификаты X.509. Для проверки подлинности сертификата X.509 сертификат модуля должен иметь общее имя (CN).CN=<deviceid>/<moduleid> Например:

openssl req -new -key d1m1.key.pem -out d1m1.csr -subj "/CN=device01\/module01"

Создание удостоверения модуля на портале

В рамках одного удостоверения устройства можно создать до 20 удостоверений модуля. Чтобы добавить удостоверение:

  1. На существующем устройстве на портале Azure выберите Добавить удостоверение модуля, чтобы создать свое первое удостоверение модуля.

  2. Введите имя myFirstModule. Сохраните удостоверение модуля.

  3. В нижней части экрана появится новое удостоверение модуля. Выберите его, чтобы просмотреть сведения.

  4. Сохраните строку подключения (первичный ключ). Это значение будет использоваться в следующем разделе для настройки модуля на устройстве в консольном приложении.

    Снимок экрана: меню

Обновление двойника модуля с помощью пакета SDK для устройства .NET

Давайте теперь попробуем обменяться данными с облаком со своего имитированного устройства. После создания удостоверения модуля двойник модуля будет неявно создан в Центре Интернета вещей. В этом разделе вы создадите консольное приложение .NET на имитированном устройстве, которое обновляет сообщаемые свойства двойника модуля.

Создание проекта Visual Studio

Чтобы создать приложение, которое обновляет сообщаемые свойства двойника модуля:

  1. В Visual Studio последовательно выберите элементы Создать новый проект и Консольное приложение (.NET Framework). Затем нажмите кнопку Далее.

  2. В окне настройки нового проекта введите в поле Имя проекта значение UpdateModuleTwinReportedProperties. Выберите Далее для продолжения.

    Снимок экрана: всплывающее окно

  3. Оставьте платформу .NET по умолчанию и нажмите кнопку Создать.

Установка последнего пакета SDK для устройств Центра Интернета вещей Azure для .NET

Функции идентификации модуля и двойника модуля доступны только в пакетах SDK для предварительного выпуска Центр Интернета вещей устройств. Чтобы установить расширение, выполните следующие действия:

  1. В Visual Studio выберите элементы Сервис>Диспетчер пакетов NuGet>Управление пакетами NuGet для решения

  2. Выберите элемент Обзор, а затем — элемент Включить предварительные выпуски. Найдите Microsoft.Azure.Devices.Client. Выберите последнюю версию и установите ее.

    Снимок экрана: установка Microsoft.Azure.Devices.Client.

    Теперь у вас есть доступ ко всем возможностям этого модуля.

Создание консольного приложения UpdateModuleTwinReportedProperties

Внимание

В этой статье содержатся шаги по подключению устройства с помощью подписанного URL-адреса, также называемого проверкой подлинности симметричного ключа. Этот метод проверки подлинности удобнее для тестирования и оценки, но проверка подлинности устройства с помощью сертификатов X.509 является более безопасным подходом. Дополнительные сведения см. в разделе "Рекомендации > по обеспечению безопасности подключений".

Выполните следующие действия, чтобы создать приложение:

  1. Добавьте следующие инструкции using в начало файла Program.cs :
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using Newtonsoft.Json;
  1. Добавьте следующие поля в класс Program . Замените заполнитель реальным значением строки подключения к модулю, которую вы скопировали ранее.
private const string ModuleConnectionString = "<Your module connection string>";
private static ModuleClient Client = null;
  1. Добавьте метод 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);
    }
  1. Наконец, замените метод 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.

Следующие шаги

Чтобы продолжить знакомство с Центром Интернета вещей и изучить другие сценарии Интернета вещей, см. следующие ресурсы: