Share via


Introdução às identidades do módulo Hub IoT e aos módulos duplos com a CLI do Azure

As identidades dos módulos e os módulos duplos são semelhantes a Hub IoT do Azure identidades de dispositivos e dispositivos duplos, mas proporcionam uma granularidade mais fina. Da mesma forma que Hub IoT do Azure identidades de dispositivos e dispositivos duplos permitem que uma aplicação de back-end configure um dispositivo e forneça visibilidade sobre as condições do dispositivo, as identidades do módulo e os módulos duplos fornecem estas capacidades para os componentes individuais de um dispositivo. Em dispositivos compatíveis com vários componentes, como dispositivos do sistema operativo ou dispositivos de firmware, identidades de módulos e módulos duplos permitem 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 de Hub IoT. Para obter mais informações sobre as camadas de Hub IoT básicas e padrão/gratuitas, consulte Escolher o escalão de Hub IoT adequado para a sua solução.

Este artigo mostra-lhe como criar uma sessão da CLI do Azure na qual:

  • Crie uma identidade de dispositivo e, em seguida, crie uma identidade de módulo para esse dispositivo.

  • Atualize um conjunto de propriedades pretendidas para o módulo duplo associado à identidade do módulo.

Pré-requisitos

  • CLI do Azure. Também pode executar os comandos neste artigo com o Azure Cloud Shell, uma shell interativa da CLI que é executada no seu browser ou numa aplicação como o Terminal do Windows. Se utilizar o Cloud Shell, não precisa de instalar nada. Se preferir utilizar a CLI localmente, este artigo requer a versão 2.36 ou posterior da CLI do Azure. Executar az --version para localizar a versão. Para instalar ou atualizar localmente a CLI do Azure, veja Instalar a CLI do Azure.

  • Um hub IoT. Crie uma com a CLI ou a portal do Azure.

  • Certifique-se de que a porta 8883 está aberta na firewall. Os exemplos neste artigo utilizam o protocolo MQTT, que comunica através da porta 8883. Esta porta pode ser bloqueada em alguns ambientes de rede empresarial e educacional. Para obter mais informações e formas de resolver este problema, veja Ligar ao Hub IoT (MQTT).

Autenticação do módulo

Pode utilizar chaves simétricas ou certificados X.509 para autenticar identidades do módulo. Para 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"

Preparar o Cloud Shell

Se quiser utilizar o Cloud Shell do Azure, primeiro tem de o iniciar e configurar. Se utilizar a CLI localmente, avance para a secção Preparar uma sessão da CLI .

  1. Selecione o ícone Cloud Shell no cabeçalho da página no portal do Azure.

    Captura de ecrã a mostrar os controlos globais a partir do cabeçalho de página do portal do Azure, realçando o ícone Cloud Shell.

    Nota

    Se esta for a primeira vez que utiliza o Cloud Shell, pede-lhe para criar armazenamento, que é necessário para utilizar o Cloud Shell. Selecione uma subscrição para criar uma conta de armazenamento e a partilha de Ficheiros do Microsoft Azure.

  2. Utilize o seletor de ambiente na barra de ferramentas Cloud Shell para selecionar o ambiente da CLI preferencial. Este artigo utiliza o ambiente bash . Também pode utilizar o ambiente do PowerShell .

    Nota

    Alguns comandos requerem sintaxe ou formatação diferentes nos ambientes do Bash e do PowerShell . Para obter mais informações, veja Sugestões para utilizar a CLI do Azure com êxito.

    Captura de ecrã a mostrar uma janela do Azure Cloud Shell, realçando o seletor de ambiente na barra de ferramentas.

Preparar uma sessão da CLI

Em seguida, tem de preparar uma sessão da CLI do Azure. Se estiver a utilizar o Cloud Shell, execute a sessão num separador Cloud Shell. Se utilizar um cliente da CLI local, execute a sessão numa instância da CLI.

  1. Se estiver a utilizar o Cloud Shell, avance para o passo seguinte. Caso contrário, execute o comando az login na sessão da CLI para iniciar sessão na sua conta do Azure.

    Se estiver a utilizar o Cloud Shell, tem sessão iniciada automaticamente na sua conta do Azure. Toda a comunicação entre a sessão da CLI do Azure e o hub IoT é autenticada e encriptada. Como resultado, este artigo não precisa de autenticação extra que utilizaria com um dispositivo real, como uma cadeia de ligação. Para obter mais informações sobre como iniciar sessão com a CLI do Azure, veja Iniciar sessão com a CLI do Azure.

    az login
    
  2. Na sessão da CLI, execute o comando az extension add . O comando adiciona a Extensão IoT do Microsoft Azure para a CLI do Azure à shell da CLI. A extensão adiciona comandos específicos Hub IoT, IoT Edge e IoT Device Provisioning Service (DPS) à CLI do Azure. Depois de instalar a extensão, não precisa de a instalar novamente em nenhuma sessão Cloud Shell.

    az extension add --name azure-iot
    

    Nota

    Este artigo utiliza a versão mais recente da extensão do Azure IoT, denominada azure-iot. A versão legada chama-se azure-cli-iot-ext. Só deve ter uma versão instalada de cada vez. Pode utilizar o comando az extension list para validar as extensões atualmente instaladas.

    Utilize az extension remove --name azure-cli-iot-ext para remover a versão legada da extensão.

    Utilize az extension add --name azure-iot para adicionar a nova versão da extensão.

    Para ver que extensões instalou, utilize az extension list.

Criar uma identidade de dispositivo e identidade do módulo

Nesta secção, vai criar uma identidade de dispositivo para o hub IoT na sessão da CLI e, em seguida, criar uma identidade de módulo com essa identidade de dispositivo. Pode criar até 50 identidades de módulos em cada identidade do dispositivo.

Para criar uma identidade de dispositivo e identidade do módulo:

  1. Na sessão da CLI, execute o comando az iot hub device-identity create , substituindo os seguintes marcadores de posição pelos respetivos valores correspondentes. Este comando cria a identidade do dispositivo para o módulo.

    {DeviceName}. O nome do seu dispositivo.

    {HubName}. O nome do seu hub IoT.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. Na sessão da CLI, execute o comando az iot hub module-identity create , substituindo os seguintes marcadores de posição pelos respetivos valores correspondentes. Este comando cria a identidade do módulo para o módulo, na identidade do dispositivo que criou no passo anterior.

    {DeviceName}. O nome do seu dispositivo.

    {HubName}. O nome do seu hub IoT.

    {ModuleName}. O nome do módulo do seu dispositivo.

    az iot hub module-identity create --device-id {DeviceName} --hub-name {HubName} \
                                      --module-id {ModuleName}
    

Atualizar o módulo duplo

Quando uma identidade de módulo é criada, é criado implicitamente um módulo duplo no Hub IoT. Nesta secção, vai utilizar a sessão da CLI para atualizar um conjunto de propriedades pretendidas no módulo duplo associado à identidade do módulo que criou na secção anterior.

  1. Na sessão da CLI, execute o comando az iot hub module-twin update , substituindo os seguintes marcadores de posição pelos respetivos valores correspondentes. Neste exemplo, estamos a atualizar várias propriedades pretendidas no módulo duplo para a identidade do módulo que criámos na secção anterior.

    {DeviceName}. O nome do seu dispositivo.

    {HubName}. O nome do seu hub IoT.

    {ModuleName}. O nome do módulo do seu dispositivo.

    az iot hub module-twin update --device-id {DeviceName} --hub-name {HubName} \
                                  --module-id {ModuleName} \
                                  --desired '{"conditions":{"temperature":{"warning":75, "critical":100}}}'
    
  2. Na sessão da CLI, confirme que a resposta JSON mostra os resultados da operação de atualização. No exemplo de resposta JSON seguinte, utilizámos SampleDevice e SampleModule para os {DeviceName} marcadores de posição e {ModuleName} , respetivamente, no comando da az iot hub module-twin update CLI.

    {
      "authenticationType": "sas",
      "capabilities": null,
      "cloudToDeviceMessageCount": 0,
      "connectionState": "Disconnected",
      "deviceEtag": "Mzg0OEN1NzW=",
      "deviceId": "SampleDevice",
      "deviceScope": null,
      "etag": "AAAAAAAAAAI=",
      "lastActivityTime": "0001-01-01T00:00:00+00:00",
      "modelId": "",
      "moduleId": "SampleModule",
      "parentScopes": null,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
            "$lastUpdatedVersion": 2,
            "conditions": {
              "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
              "$lastUpdatedVersion": 2,
              "temperature": {
                "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                "$lastUpdatedVersion": 2,
                "critical": {
                  "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                  "$lastUpdatedVersion": 2
                },
                "warning": {
                  "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                  "$lastUpdatedVersion": 2
                }
              }
            }
          },
          "$version": 2,
          "conditions": {
            "temperature": {
              "critical": 100,
              "warning": 75
            }
          }
        },
        "reported": {
          "$metadata": {
            "$lastUpdated": "0001-01-01T00:00:00Z"
          },
          "$version": 1
        }
      },
      "status": "enabled",
      "statusReason": null,
      "statusUpdateTime": "0001-01-01T00:00:00+00:00",
      "tags": null,
      "version": 3,
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      }
    }
    

Passos seguintes

Para saber como utilizar a CLI do Azure para expandir a sua solução de IoT e agendar atualizações em dispositivos, veja Agendar e transmitir tarefas.

Para continuar a começar a utilizar padrões de gestão de dispositivos e Hub IoT, como a atualização ponto a ponto baseada em imagens, consulte o artigo Atualização de Dispositivos para Hub IoT do Azure utilizando a Imagem de Referência raspberry Pi 3 B+.