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


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

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

Примечание.

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

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

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

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

Примечание.

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

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

  • Visual Studio.

  • Центр Интернета вещей. Создайте его с помощью CLI или портала 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. Сохраните удостоверение модуля.

    Снимок экрана: страница

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

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

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

Обновление двойника модуля с помощью пакета 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

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

  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.

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

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