Guia de início rápido: provisionar um dispositivo TPM simulado

Neste início rápido, você criará um dispositivo simulado em sua máquina Windows. O dispositivo simulado será configurado para usar um mecanismo de atestado TPM (Trusted Platform Module) para autenticação. Depois de configurar seu dispositivo, você o provisionará para seu hub IoT usando o Serviço de Provisionamento de Dispositivo do Hub IoT do Azure. O código de exemplo será usado para ajudar a registrar o dispositivo com uma instância do Serviço de Provisionamento de Dispositivo.

Se você não estiver familiarizado com o processo de provisionamento, revise a visão geral do provisionamento . Certifique-se também de que executa os passos descritos em Configurar o Serviço de Aprovisionamento de Dispositivos no Hub IoT com o portal do Azure antes de continuar.

O Serviço Aprovisionamento de Dispositivos no IoT do Azure suporta dois tipos de inscrição:

  • Grupos de inscrição que são usados para registrar vários dispositivos relacionados.

  • Inscrições individuais que são usadas para registrar um único dispositivo.

Este artigo demonstra inscrições individuais.

O atestado TPM (Trusted Platform Module) não é suportado no Python SDK. Com o Python, você pode provisionar um dispositivo usando chaves simétricas ou certificados X.509.

Pré-requisitos

Os pré-requisitos a seguir são para um ambiente de desenvolvimento do Windows. Para Linux ou macOS, consulte a seção apropriada em Prepare your development environment na documentação do SDK.

  • Um módulo de segurança de hardware TPM 2.0 na sua máquina baseada no Windows.

  • Instale o .NET Core SDK 6.0 ou posterior em sua máquina baseada no Windows. Você pode usar o seguinte comando para verificar sua versão.

    dotnet --info
    
  • Instale a versão mais recente do Git. Certifique-se de que o Git é adicionado às variáveis de ambiente acessíveis à janela de comando. Consulte as ferramentas de cliente Git da Software Freedom Conservancy para obter a versão mais recente das ferramentas a serem instaladas, que inclui o Git Bash, o aplicativo de linha de git comando que você pode usar para interagir com seu repositório Git local.

Preparar o ambiente de desenvolvimento

Nesta seção, você preparará um ambiente de desenvolvimento usado para criar o Azure IoT C SDK e o exemplo de simulador de dispositivo TPM .

  1. Faça o download do mais recente sistema de compilação CMake.

    Importante

    Confirme se os pré-requisitos do Visual Studio (Visual Studio e a carga de trabalho 'Desenvolvimento de área de trabalho com C++') estão instalados em sua máquina, antes de iniciar a CMake instalação. Depois de os pré-requisitos estarem assegurados e a transferência verificada, instale o sistema de compilação CMake. Além disso, esteja ciente de que versões mais antigas do sistema de compilação CMake não conseguem gerar o arquivo de solução usado neste artigo. Certifique-se de usar a versão mais recente do CMake.

  2. Abra um navegador da Web e vá para a página Lançamento do SDK do Azure IoT C.

  3. Selecione a guia Tags na parte superior da página.

  4. Copie o nome da marca para a versão mais recente do Azure IoT C SDK.

  5. Abra uma linha de comandos ou a shell do Git Bash. Execute os comandos a seguir para clonar a versão mais recente do SDK do Dispositivo IoT do Azure para o repositório C GitHub. Substitua <release-tag> pela tag copiada na etapa anterior, por exemplo: lts_01_2023.

    git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git
    cd azure-iot-sdk-c
    git submodule update --init
    

    Esta operação pode levar vários minutos para ser concluída.

  6. Quando a operação estiver concluída, execute os seguintes comandos a azure-iot-sdk-c partir do diretório:

    mkdir cmake
    cd cmake
    
  1. Abra um ambiente de linha de comando Git CMD ou Git Bash.

  2. Clone o SDK do Azure IoT para repositório GitHub C# usando o seguinte comando:

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  1. Abra um ambiente de linha de comando Git CMD ou Git Bash.

  2. Clone o repositório GitHub azure-utpm-c usando o seguinte comando:

    git clone https://github.com/Azure/azure-utpm-c.git --recursive
    
  1. Abra um ambiente de linha de comando Git CMD ou Git Bash.

  2. Clone o repositório Java GitHub usando o seguinte comando:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    

Criar e executar o simulador de dispositivo TPM

Nesta seção, você criará e executará o simulador TPM. Este simulador escuta através de um socket nas portas 2321 e 2322. Não feche a janela de comando. Você precisará manter este simulador funcionando até o final deste início rápido.

  1. Execute o seguinte comando para criar o Azure IoT C SDK que inclui o código de exemplo do simulador de dispositivo TPM. Uma solução do Visual Studio para o dispositivo simulado cmake é gerada no diretório. Este exemplo fornece um mecanismo de atestado TPM através da autenticação de Token de Assinatura de Acesso Partilhado (SAS).

    cmake -Duse_prov_client:BOOL=ON -Duse_tpm_simulator:BOOL=ON ..
    

    Gorjeta

    Se cmake não encontrar seu compilador C++, você pode obter erros de compilação ao executar o comando acima. Se isso acontecer, tente executar o comando no prompt de comando do Visual Studio.

  2. Quando a compilação é bem-sucedida, as últimas linhas de saída são semelhantes à seguinte saída:

    $ cmake -Duse_prov_client:BOOL=ON ..
    -- Building for: Visual Studio 16 2019
    -- The C compiler identification is MSVC 19.23.28107.0
    -- The CXX compiler identification is MSVC 19.23.28107.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/code/azure-iot-sdk-c/cmake
    
  3. Vá para a pasta raiz do repositório git que você clonou.

  4. Execute o simulador TPM usando o caminho mostrado abaixo.

    cd ..
    .\provisioning_client\deps\utpm\tools\tpm_simulator\Simulator.exe
    

    O simulador não exibe nenhuma saída. Deixe que ele continue a ser executado enquanto simula um dispositivo TPM.

  1. Vá para a pasta raiz do GitHub.

  2. Execute o simulador TPM para ser o HSM do dispositivo simulado.

    .\azure-utpm-c\tools\tpm_simulator\Simulator.exe
    
  3. Crie uma nova pasta vazia chamada registerdevice. Na pasta registerdevice, crie um arquivo package.json usando o seguinte comando no prompt de comando (certifique-se de responder a todas as perguntas feitas ou npm aceitar os padrões, se eles lhe convierem):

    npm init
    
  4. Instale os seguintes pacotes precursores:

    npm install node-gyp -g
    npm install ffi-napi -g
    

    Nota

    Existem alguns problemas conhecidos na instalação dos pacotes acima indicados. Para os resolver estes problemas, execute npm install --global --production windows-build-tools com uma linha de comandos no modo Executar como administrador, execute SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140 depois de substituir o caminho pela versão instalada e, em seguida, volte a executar os comandos de instalação acima indicados.

  5. Instale todos os pacotes necessários executando o seguinte comando no prompt de comando na pasta registerdevice :

    npm install --save azure-iot-device azure-iot-device-mqtt azure-iot-security-tpm azure-iot-provisioning-device-http azure-iot-provisioning-device
    

    O comando instala os seguintes pacotes:

    • Um cliente de segurança que funciona com TPM: azure-iot-security-tpm

    • Um transporte para o dispositivo se conectar ao Serviço de Provisionamento de Dispositivo: ou azure-iot-provisioning-device-httpazure-iot-provisioning-device-amqp

    • Um cliente para usar o cliente de transporte e segurança: azure-iot-provisioning-device

    • O cliente do dispositivo: azure-iot-device

    • Um transporte: qualquer um dos azure-iot-device-amqp, azure-iot-device-mqttou azure-iot-device-http

    • O cliente de segurança que você já instalou: azure-iot-security-tpm

      Nota

      As amostras neste guia de início rápido usam o azure-iot-provisioning-device-http e azure-iot-device-mqtt transporta.

  6. Abra um editor de texto de suas escolhas.

  7. Na pasta registerdevice, crie um novo arquivo ExtractDevice.js.

  8. Adicione as seguintes instruções require no início do ficheiro ExtractDevice.js:

    
    'use strict';
    
    var tpmSecurity = require('azure-iot-security-tpm');
    var tssJs = require("tss.js");
    
    var myTpm = new tpmSecurity.TpmSecurityClient(undefined, new tssJs.Tpm(true));
    
  9. Adicione a seguinte função para implementar o método:

    
    myTpm.getEndorsementKey(function(err, endorsementKey) {
      if (err) {
        console.log('The error returned from get key is: ' + err);
      } else {
        console.log('the endorsement key is: ' + endorsementKey.toString('base64'));
        myTpm.getRegistrationId((getRegistrationIdError, registrationId) => {
          if (getRegistrationIdError) {
            console.log('The error returned from get registration id is: ' + getRegistrationIdError);
          } else {
            console.log('The Registration Id is: ' + registrationId);
            process.exit();
          }
        });
      }
    });
    
  10. Guarde e feche o ficheiro ExtractDevice.js.

    node ExtractDevice.js
    
  11. Execute o exemplo.

  12. A janela de saída exibe a chave de endosso e a ID de registro necessária para o registro do dispositivo. Copie estes valores.

  1. Execute o simulador TPM para ser o HSM do dispositivo simulado.

  2. Selecione Permitir acesso. O simulador escuta sobre um soquete nas portas 2321 e 2322. Não feche esta janela de comando; Você precisa manter este simulador funcionando até o final deste guia de início rápido.

    .\azure-iot-sdk-java\provisioning\provisioning-tools\tpm-simulator\Simulator.exe
    

    TPM Simulator

  3. Abra um segundo prompt de comando.

  4. No segundo prompt de comando, navegue até a pasta raiz e crie as dependências de exemplo.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    
  5. Navegue para a pasta de exemplo.

    cd provisioning/provisioning-samples/provisioning-tpm-sample
    

Ler as chaves criptográficas do dispositivo TPM

Nesta seção, você criará e executará um exemplo que lê a chave de endosso e a ID de registro do simulador TPM que você deixou em execução e ainda está escutando pelas portas 2321 e 2322. Estes valores serão utilizados na inscrição de dispositivos na instância do Serviço Aprovisionamento de Dispositivos.

  1. Inicie o Visual Studio.

  2. Abra a solução gerada na pasta cmake chamada azure_iot_sdks.sln.

  3. No menu do Visual Studio, selecione Build (Compilar) >Build Solution (Compilar Solução) para criar todos os projetos na solução.

  4. Na janela Gerenciador de Soluções do Visual Studio, navegue até a pasta Provision_Tools. Clique com o botão direito do rato no projeto tpm_device_provision e selecione Configurar como Projeto de Arranque.

  5. No menu do Visual Studio, selecione Debug (Depurar) >Start without debugging (Iniciar sem depuração) para executar a solução. O aplicativo lê e exibe uma ID de registro e uma chave de endosso. Anote ou copie esses valores. Eles serão usados na próxima seção para registro de dispositivos.

  1. Entre no portal do Azure, selecione o botão Todos os recursos no menu à esquerda e abra o Serviço de Provisionamento de Dispositivo. Anote o Âmbito do ID e o Ponto Final Global do Serviço de Aprovisionamento.

    Device Provisioning Service information

  2. Edite src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningTpmSample.java para incluir o Âmbito do ID e o Ponto Final Global do Serviço de Aprovisionamento, conforme indicado anteriormente.

    private static final String idScope = "[Your ID scope here]";
    private static final String globalEndpoint = "[Your Provisioning Service Global Endpoint here]";
    private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS;
    
  3. Guarde o ficheiro.

  4. Use os seguintes comandos para construir o projeto, navegue até a pasta de destino e execute o arquivo de .jar criado (substitua {version}pela sua versão do Java):

    mvn clean install
    cd target
    java -jar ./provisioning-tpm-sample-{version}-with-deps.jar
    
  5. Quando o programa começar a ser executado, ele exibirá a chave de endosso e a ID de registro. Copie esses valores para a próxima seção. Certifique-se de deixar o programa em execução.

Nesta seção, você criará e executará um exemplo que lê a chave de endosso do módulo de segurança de hardware do TPM 2.0. Esse valor será usado para o registro de dispositivo com sua instância do Serviço de Provisionamento de Dispositivo.

  1. Numa linha de comandos, altere os diretórios para o diretório de projeto para o exemplo de aprovisionamento de dispositivos TPM.

    cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  2. Escreva o seguinte comando para criar e executar o exemplo de aprovisionamento de dispositivos TPM. Copie a chave de endosso retornada do módulo de segurança de hardware do TPM 2.0 para usar mais tarde ao registrar seu dispositivo.

    dotnet run -- -e
    

Criar uma entrada de inscrição de dispositivos

  1. Entre no portal do Azure e navegue até sua instância do Serviço de Provisionamento de Dispositivo.

  2. Selecione Gerenciar inscrições na seção Configurações do menu de navegação.

  3. Selecione a guia Inscrições individuais e, em seguida, selecione Adicionar inscrição individual.

    Screenshot that shows the add individual enrollment option.

  4. Na página Registro + provisionamento da página Adicionar registro, forneça as seguintes informações para configurar os detalhes do registro:

    Campo Descrição
    Atestado Selecione Trusted Platform Module (TPM) como o mecanismo de atestado.
    Configurações do TPM (Trusted Platform Module) Forneça a chave de endosso que será usada para verificar o dispositivo para este registro. Você pode recuperar a chave de endosso do TPM do seu dispositivo.
    ID de registo Forneça o ID de registro exclusivo para o dispositivo. Você pode recuperar o ID de registro do TPM do seu dispositivo.
    Status de provisionamento Marque a caixa Habilitar este registro se quiser que esse registro esteja disponível para provisionar seu dispositivo. Desmarque esta caixa se quiser que a inscrição seja desativada. Você pode alterar essa configuração mais tarde.
    Política de reaprovisionamento Escolha uma política de reprovisionamento que reflita como você deseja que o DPS manipule dispositivos que solicitam reprovisionamento. Para obter mais informações, consulte Políticas de reprovisionamento.
  5. Selecione Next: Hubs IoT.

  6. Na guia Hubs IoT da página Adicionar registro, forneça as seguintes informações para determinar para quais hubs IoT o registro pode provisionar dispositivos:

    Campo Descrição
    Hubs IoT de destino Selecione um ou mais hubs IoT vinculados ou adicione um novo link a um hub IoT. Para saber mais sobre como vincular hubs IoT à sua instância DPS, consulte Como vincular e gerenciar hubs IoT.
    Política de afetação Se você selecionou mais de um hub IoT vinculado, selecione como deseja atribuir dispositivos aos diferentes hubs. Para saber mais sobre políticas de alocação, consulte Como usar políticas de alocação.

    Se você selecionou apenas um hub IoT vinculado, recomendamos usar a política de distribuição ponderada uniformemente.
  7. Selecione Next: Configurações do dispositivo

  8. Na guia Configurações do dispositivo da página Adicionar registro, forneça as seguintes informações para definir como os dispositivos recém-provisionados serão configurados:

    Campo Descrição
    ID do Dispositivo Forneça um ID de dispositivo que será atribuído ao dispositivo provisionado no Hub IoT. Se não fornecer um ID de dispositivo, o ID de registo será utilizado.
    IoT Edge Verifique a opção Habilitar o IoT Edge em dispositivos provisionados se o dispositivo provisionado executará o Azure IoT Edge. Desmarque esta caixa se este registro for para um dispositivo não habilitado para IoT Edge.
    Tags de dispositivo Use esta caixa de texto para fornecer as tags que você deseja aplicar ao gêmeo de dispositivo do dispositivo provisionado.
    Propriedades desejadas Use esta caixa de texto para fornecer as propriedades desejadas que você deseja aplicar ao gêmeo de dispositivo do dispositivo provisionado.

    Para obter mais informações, veja Understand and use device twins in IoT Hub (Compreender e utilizar dispositivos duplos no Hub IoT).

  9. Selecione Seguinte: Rever + criar.

  10. No separador Rever + criar, verifique todos os seus valores e, em seguida, selecione Criar.

O exemplo de TPM em C# para este início rápido não fornece uma ID de registro. Quando solicitado a adicionar um para a inscrição individual, forneça seu próprio valor.

  1. Entre no portal do Azure e navegue até sua instância do Serviço de Provisionamento de Dispositivo.

  2. Selecione Gerenciar inscrições na seção Configurações do menu de navegação.

  3. Selecione a guia Inscrições individuais e, em seguida, selecione Adicionar inscrição individual.

    Screenshot that shows the add individual enrollment option.

  4. Na página Registro + provisionamento da página Adicionar registro, forneça as seguintes informações para configurar os detalhes do registro:

    Campo Descrição
    Atestado Selecione Trusted Platform Module (TPM) como o mecanismo de atestado.
    Configurações do TPM (Trusted Platform Module) Forneça a chave de endosso que será usada para verificar o dispositivo para este registro. Você pode recuperar a chave de endosso do TPM do seu dispositivo.
    ID de registo Forneça o ID de registro exclusivo para o dispositivo. Você pode recuperar o ID de registro do TPM do seu dispositivo.
    Status de provisionamento Marque a caixa Habilitar este registro se quiser que esse registro esteja disponível para provisionar seu dispositivo. Desmarque esta caixa se quiser que a inscrição seja desativada. Você pode alterar essa configuração mais tarde.
    Política de reaprovisionamento Escolha uma política de reprovisionamento que reflita como você deseja que o DPS manipule dispositivos que solicitam reprovisionamento. Para obter mais informações, consulte Políticas de reprovisionamento.
  5. Selecione Next: Hubs IoT.

  6. Na guia Hubs IoT da página Adicionar registro, forneça as seguintes informações para determinar para quais hubs IoT o registro pode provisionar dispositivos:

    Campo Descrição
    Hubs IoT de destino Selecione um ou mais hubs IoT vinculados ou adicione um novo link a um hub IoT. Para saber mais sobre como vincular hubs IoT à sua instância DPS, consulte Como vincular e gerenciar hubs IoT.
    Política de afetação Se você selecionou mais de um hub IoT vinculado, selecione como deseja atribuir dispositivos aos diferentes hubs. Para saber mais sobre políticas de alocação, consulte Como usar políticas de alocação.

    Se você selecionou apenas um hub IoT vinculado, recomendamos usar a política de distribuição ponderada uniformemente.
  7. Selecione Next: Configurações do dispositivo

  8. Na guia Configurações do dispositivo da página Adicionar registro, forneça as seguintes informações para definir como os dispositivos recém-provisionados serão configurados:

    Campo Descrição
    ID do Dispositivo Forneça um ID de dispositivo que será atribuído ao dispositivo provisionado no Hub IoT. Se não fornecer um ID de dispositivo, o ID de registo será utilizado.
    IoT Edge Verifique a opção Habilitar o IoT Edge em dispositivos provisionados se o dispositivo provisionado executará o Azure IoT Edge. Desmarque esta caixa se este registro for para um dispositivo não habilitado para IoT Edge.
    Tags de dispositivo Use esta caixa de texto para fornecer as tags que você deseja aplicar ao gêmeo de dispositivo do dispositivo provisionado.
    Propriedades desejadas Use esta caixa de texto para fornecer as propriedades desejadas que você deseja aplicar ao gêmeo de dispositivo do dispositivo provisionado.

    Para obter mais informações, veja Understand and use device twins in IoT Hub (Compreender e utilizar dispositivos duplos no Hub IoT).

  9. Selecione Seguinte: Rever + criar.

  10. No separador Rever + criar, verifique todos os seus valores e, em seguida, selecione Criar.

Registar o dispositivo

Nesta seção, você configurará o código de exemplo para usar o protocolo AMQP (Advanced Message Queuing Protocol) para enviar a sequência de inicialização do dispositivo para sua instância do Serviço de Provisionamento de Dispositivo. Essa sequência de inicialização faz com que o dispositivo seja registrado em um hub IoT vinculado à instância do Serviço de Provisionamento de Dispositivo.

  1. No portal do Azure, selecione a guia Visão geral do seu Serviço de Provisionamento de Dispositivo.

  2. Copie o valor ID Scope .

    Extract Device Provisioning Service endpoint information from the portal

  3. Na janela Gerenciador de Soluções do Visual Studio, navegue até a pasta Provision_Samples. Expanda o projeto de exemplo chamado prov_dev_client_sample. Expanda Arquivos de origem e abra prov_dev_client_sample.c.

  4. Junto à parte superior do ficheiro, localize as declarações #define para cada protocolo de dispositivo, conforme mostrado abaixo. Certifique-se de que apenas SAMPLE_AMQP tem os comentários anulados.

    Atualmente, o protocolo MQTT não é suportado para o Registro Individual do TPM.

    //
    // The protocol you wish to use should be uncommented
    //
    //#define SAMPLE_MQTT
    //#define SAMPLE_MQTT_OVER_WEBSOCKETS
    #define SAMPLE_AMQP
    //#define SAMPLE_AMQP_OVER_WEBSOCKETS
    //#define SAMPLE_HTTP
    
  5. Localize a constante id_scope e substitua o valor pelo seu Âmbito do ID que copiou anteriormente.

    static const char* id_scope = "0ne00002193";
    
  6. Localize a definição da função main() no mesmo ficheiro. Certifique-se de que a hsm_type variável está definida como SECURE_DEVICE_TYPE_TPM mostrado abaixo.

    SECURE_DEVICE_TYPE hsm_type;
    hsm_type = SECURE_DEVICE_TYPE_TPM;
    //hsm_type = SECURE_DEVICE_TYPE_X509;
    //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
    
  7. Clique com o botão direito do mouse no projeto prov_dev_client_sample e selecione Definir como projeto de inicialização.

  8. No menu do Visual Studio, selecione Debug (Depurar) >Start without debugging (Iniciar sem depuração) para executar a solução. No prompt para reconstruir o projeto, selecione Sim, para reconstruir o projeto antes de executar.

    A saída seguinte é um exemplo do cliente do dispositivo de aprovisionamento a arrancar e a ligar com êxito a uma instância do Serviço de Aprovisionamento de Dispositivos para obter informações e registar o hub IoT:

    Provisioning API Version: 1.2.7
    
    Registering... Press enter key to interrupt.
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service:
    test-docs-hub.azure-devices.net, deviceId: test-docs-cert-device
    
  1. No portal do Azure, selecione a guia Visão geral do seu Serviço de Provisionamento de Dispositivo.

  2. Copie o valor ID Scope .

    Copy provisioning service Scope ID from the portal blade

  3. Numa linha de comandos, altere os diretórios para o diretório de projeto para o exemplo de aprovisionamento de dispositivos TPM.

     cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  4. Execute o seguinte comando para registar o seu dispositivo. Substitua <IdScope> pelo valor do DPS copiado e <RegistrationId> pelo valor usado ao criar o registro do dispositivo.

    dotnet run -- -s <IdScope> -r <RegistrationId>
    

    Se o registro do dispositivo foi bem-sucedido, você verá as seguintes mensagens:

    Initializing security using the local TPM...
    Initializing the device provisioning client...
    Initialized for registration Id <RegistrationId>.
    Registering with the device provisioning service...
    Registration status: Assigned.
    Device <RegistrationId> registered to <HubName>.azure-devices.net.
    Creating TPM authentication for IoT Hub...
    Testing the provisioned device with IoT Hub...
    Sending a telemetry message...
    Finished.
    
  1. No portal do Azure, selecione a guia Visão geral do seu Serviço de Provisionamento de Dispositivo.

  2. Copie o valor ID Scope .

    Extract Device Provisioning Service endpoint information from the portal blade

  3. Abra um editor de texto de sua escolha.

  4. Na pasta registerdevice, crie um novo arquivo RegisterDevice.js.

  5. Adicione as seguintes instruções require no início do ficheiro RegisterDevice.js:

    
    'use strict';
    
    var ProvisioningTransport = require('azure-iot-provisioning-device-http').Http;
    var iotHubTransport = require('azure-iot-device-mqtt').Mqtt;
    var Client = require('azure-iot-device').Client;
    var Message = require('azure-iot-device').Message;
    var tpmSecurity = require('azure-iot-security-tpm');
    var ProvisioningDeviceClient = require('azure-iot-provisioning-device').ProvisioningDeviceClient;
    

    Nota

    O SDK de IoT do Azure para Node.js suporta protocolos adicionais, como AMQP, AMQP WS e MQTT WS. Para obter mais exemplos, veja SDK do Serviço de Aprovisionamento de Dispositivos para exemplos de Node.js.

  6. Adicione as variáveis globalDeviceEndpoint e idScope, e utilize-as para criar uma instância de ProvisioningDeviceClient. Substitua {globalDeviceEndpoint} e {idScope} pelos valores de Ponto Final do Dispositivo Global e Âmbito do ID do Passo 1:

    
    var provisioningHost = '{globalDeviceEndpoint}';
    var idScope = '{idScope}';
    
    var tssJs = require("tss.js");
    var securityClient = new tpmSecurity.TpmSecurityClient('', new tssJs.Tpm(true));
    // if using non-simulated device, replace the above line with following:
    //var securityClient = new tpmSecurity.TpmSecurityClient();
    
    var provisioningClient = ProvisioningDeviceClient.create(provisioningHost, idScope, new ProvisioningTransport(), securityClient);
    
  7. Adicione a seguinte função para implementar o método no dispositivo:

    
    provisioningClient.register(function(err, result) {
      if (err) {
        console.log("error registering device: " + err);
      } else {
        console.log('registration succeeded');
        console.log('assigned hub=' + result.registrationState.assignedHub);
        console.log('deviceId=' + result.registrationState.deviceId);
        var tpmAuthenticationProvider = tpmSecurity.TpmAuthenticationProvider.fromTpmSecurityClient(result.registrationState.deviceId, result.registrationState.assignedHub, securityClient);
        var hubClient = Client.fromAuthenticationProvider(tpmAuthenticationProvider, iotHubTransport);
    
        var connectCallback = function (err) {
          if (err) {
            console.error('Could not connect: ' + err.message);
          } else {
            console.log('Client connected');
            var message = new Message('Hello world');
            hubClient.sendEvent(message, printResultFor('send'));
          }
        };
    
        hubClient.open(connectCallback);
    
        function printResultFor(op) {
          return function printResult(err, res) {
            if (err) console.log(op + ' error: ' + err.toString());
            if (res) console.log(op + ' status: ' + res.constructor.name);
            process.exit(1);
          };
        }
      }
    });
    
  8. Guarde e feche o ficheiro RegisterDevice.js.

  9. Execute o seguinte comando:

    node RegisterDevice.js
    
  10. Repare nas mensagens que simulam o arranque e a ligação do dispositivo ao Serviço Aprovisionamento de Dispositivos para obter as informações do seu hub IoT.

  1. Na janela de comando que executa o código de exemplo Java em sua máquina, pressione Enter para continuar executando o aplicativo. Repare nas mensagens que simulam o arranque e a ligação do dispositivo ao Serviço Aprovisionamento de Dispositivos para obter as informações do seu hub IoT.

    Java TPM device program final

Confirme o registro de provisionamento do dispositivo

  1. Inicie sessão no portal do Azure.

  2. No menu à esquerda ou na página do portal, selecione Todos os recursos.

  3. Selecione o hub IoT ao qual seu dispositivo foi atribuído.

  4. No menu Explorers, selecione Dispositivos IoT.

  1. Se o dispositivo tiver sido provisionado com êxito, o ID do dispositivo deverá aparecer na lista, com Status definido como habilitado. Se não vir o dispositivo, selecione Atualizar na parte superior da página.

    Device is registered with the IoT hub for C

  1. Se o dispositivo tiver sido provisionado com êxito, o ID do dispositivo deverá aparecer na lista, com Status definido como habilitado. Se não vir o dispositivo, selecione Atualizar na parte superior da página.

    Device is registered with the IoT hub for C#

  1. Se o dispositivo tiver sido provisionado com êxito, o ID do dispositivo deverá aparecer na lista, com Status definido como habilitado. Se não vir o dispositivo, selecione Atualizar na parte superior da página.

    Device is registered with the IoT hub for Node.js

  1. Se o dispositivo tiver sido provisionado com êxito, o ID do dispositivo deverá aparecer na lista, com Status definido como habilitado. Se não vir o dispositivo, selecione Atualizar na parte superior da página.

    Device is registered with the IoT hub

Nota

Se tiver alterado o estado inicial do dispositivo duplo face ao valor predefinido na entrada de inscrição do seu dispositivo, este pode extrair o estado pretendido do dispositivo duplo a partir do hub e agir em conformidade. Para obter mais informações, veja Understand and use device twins in IoT Hub (Compreender e utilizar dispositivos duplos no Hub IoT).

Clean up resources (Limpar recursos)

Se você planeja continuar trabalhando e explorando o exemplo de cliente de dispositivo, não limpe os recursos criados neste início rápido. Se você não planeja continuar, use as etapas a seguir para excluir todos os recursos criados por este início rápido.

Excluir o registro do dispositivo

  1. Feche a janela da saída do exemplo de dispositivo cliente no seu computador.

  2. No menu à esquerda no portal do Azure, selecione Todos os recursos.

  3. Selecione o Serviço de Provisionamento de Dispositivo.

  4. No menu Configurações, selecione Gerenciar inscrições.

  5. Selecione a guia Inscrições individuais.

  6. Marque a caixa de seleção ao lado da ID de registro do dispositivo que você inscreveu neste início rápido.

  7. Na parte superior da página, selecione Eliminar.

Excluir o registro do dispositivo do Hub IoT

  1. No menu à esquerda no portal do Azure, selecione Todos os recursos.

  2. Selecione seu hub IoT.

  3. No menu Explorers, selecione dispositivos IoT.

  4. Marque a caixa de seleção ao lado da ID do dispositivo que você registrou neste início rápido.

  5. Na parte superior da página, selecione Eliminar.

Próximos passos

Neste início rápido, você provisionou um único dispositivo para seu hub IoT usando um registro individual. Em seguida, saiba como provisionar vários dispositivos em vários hubs.