Partilhar via


Introdução à identidade do módulo Hub IoT e ao módulo duplo com o portal do Azure e um dispositivo .NET

As identidades de módulo e os módulos duplos assemelham-se à identidade do dispositivo e ao dispositivo duplo do Hub IoT do Azure, exceto no facto de oferecerem melhor granularidade. Embora Hub IoT do Azure identidade do dispositivo e o dispositivo duplo ativem a aplicação de back-end para configurar um dispositivo e fornecer visibilidade sobre as condições do dispositivo, uma identidade do módulo e o módulo duplo fornecem estas capacidades para componentes individuais de um dispositivo. Em dispositivos compatíveis com vários componentes, tais como dispositivos de sistema operativo ou dispositivos de firmware, identidades de módulos e módulos duplos permitem uma configuração e condições isoladas para cada componente.

Nota

As funcionalidades descritas neste artigo só estão disponíveis no escalão padrão do Hub IoT. Para obter mais informações sobre os escalões de Hub IoT básico e standard/gratuito, consulte Escolher o escalão de Hub IoT certo para a sua solução.

Neste artigo, irá aprender a:

  • Crie uma identidade de módulo no portal.

  • Utilize um SDK de dispositivo .NET para atualizar o módulo duplo a partir do seu dispositivo.

Nota

Veja SDKs do Azure IoT para obter mais informações sobre as ferramentas do SDK disponíveis para criar aplicações de dispositivos e de back-end.

Pré-requisitos

Autenticação de módulos

Pode utilizar chaves simétricas ou certificados X.509 para autenticar identidades de módulos. Para a autenticação de certificado X.509, o certificado do módulo tem de ter o respetivo nome comum (CN) formatado como CN=<deviceid>/<moduleid>. Por exemplo:

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

Criar uma identidade de módulo no portal

Numa identidade do dispositivo, pode criar até 20 identidades de módulo. Para adicionar uma identidade, siga estes passos:

  1. No seu dispositivo existente no portal do Azure, selecione Adicionar Identidade do Módulo para criar a sua primeira identidade de módulo.

  2. Introduza o nome myFirstModule. Guarde a identidade do módulo.

    Captura de ecrã a mostrar a página

    A nova identidade do módulo é apresentada na parte inferior do ecrã. Selecione-o para ver os detalhes da identidade do módulo.

    Captura de ecrã a mostrar o menu Detalhes da Identidade do Módulo.

Guarde a Cadeia de ligação (chave primária). Utilize-o na secção seguinte para configurar o módulo no dispositivo numa aplicação de consola.

Atualizar o módulo duplo com o SDK de dispositivo .NET

Agora, vamos comunicar com a cloud a partir do seu dispositivo simulado. Quando uma identidade de módulo é criada, é criado implicitamente um módulo duplo no Hub IoT. Nesta secção, vai criar uma aplicação de consola .NET no seu dispositivo simulado que atualiza as propriedades reportadas do módulo duplo.

Criar um projeto do Visual Studio

Para criar uma aplicação que atualize o módulo duplo, as propriedades reportadas, siga estes passos:

  1. No Visual Studio, selecione Criar um novo projeto, selecione Aplicação de Consola (.NET Framework) e selecione Seguinte.

  2. Em Configurar o novo projeto, introduza UpdateModuleTwinReportedProperties como o Nome do projeto. Selecione Seguinte para continuar.

    Captura de ecrã a mostrar o pop-up

  3. Mantenha o .NET Framework predefinido e, em seguida, selecione Criar.

Instalar o SDK de dispositivo .NET mais recente Hub IoT do Azure

A identidade do módulo e o módulo duplo só estão disponíveis nos SDKs do dispositivo de pré-lançamento Hub IoT. Para instalá-la, siga estes passos:

  1. No Visual Studio, abra Ferramentas> Gestor > dePacotes NuGetGerir Pacotes NuGet para Solução.

  2. Selecione Procurar e, em seguida, selecione Incluir pré-lançamento. Procure Microsoft.Azure.Devices.Client. Selecione a versão mais recente e instale-a.

    Captura de ecrã a mostrar como instalar o Microsoft.Azure.Devices.Client.

    Agora, tem acesso a todas as funcionalidades de módulo.

Criar a aplicação de consola UpdateModuleTwinReportedProperties

Para criar a sua aplicação, siga estes passos:

  1. Adicione as seguintes using instruções na parte superior do ficheiro Program.cs :
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using Newtonsoft.Json;
  1. Adicione os seguintes campos à classe Programa. Substitua o valor do marcador de posição pela cadeia de ligação do módulo que guardou anteriormente.
private const string ModuleConnectionString = "<Your module connection string>";
private static ModuleClient Client = null;
  1. Adicione o seguinte método OnDesiredPropertyChanged à classe 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. Por fim, substitua o método Main pelo seguinte código:
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}");
}

Pode criar e executar esta aplicação com F5.

Agora já sabe como obter o módulo duplo e atualizar as propriedades reportadas com o protocolo AMQP.

Passos seguintes

Para continuar a introdução ao Hub IoT e explorar outros cenários de IoT, veja: