Share via


Tutorial: utilizar um dispositivo simulado para testar a conectividade com o seu hub do IoT

Neste tutorial, irá utilizar ferramentas do portal do Hub IoT do Azure e comandos da CLI do Azure para testar a conectividade do dispositivo. Este tutorial também utiliza um simulador de dispositivos simples que executa no seu computador.

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Neste tutorial, irá aprender a:

  • Verificar a autenticação do dispositivo
  • Verificar a conectividade do dispositivo para a cloud
  • Verificar a conectividade da cloud para o dispositivo
  • Verificar a sincronização de dispositivos duplos

Pré-requisitos

  • Este tutorial usa a CLI do Azure para criar recursos de nuvem. Há duas maneiras de executar comandos da CLI:

    Nota

    Este artigo usa a versão mais recente da extensão do Azure IoT, chamada azure-iot. A versão herdada é chamada azure-cli-iot-extde . Você só deve ter uma versão instalada de cada vez. Você pode usar o comando az extension list para validar as extensões atualmente instaladas.

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

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

    Para ver quais extensões você instalou, use az extension list.

  • O aplicativo de exemplo que você executa neste tutorial usa Node.js. Você precisa Node.js v10.x.x ou posterior em sua máquina de desenvolvimento.

    • Pode transferir o Node.js para múltiplas plataformas em nodejs.org.

    • Pode verificar qual a versão atual do Node.js no seu computador de desenvolvimento através do seguinte comando:

      node --version
      
  • Clone ou baixe o projeto de Node.js de exemplo de exemplos do Azure IoT para Node.js.

  • Verifique se a porta 8883 está aberta no firewall. O exemplo de dispositivo neste tutorial usa o protocolo MQTT, que se comunica pela porta 8883. Essa porta pode estar bloqueada em alguns ambientes de rede corporativa e educacional. Para obter mais informações e maneiras de contornar esse problema, consulte Conectando-se ao Hub IoT (MQTT).

Criar um hub IoT

Nesta seção, você usa a CLI do Azure para criar um hub IoT e um grupo de recursos. Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure são implementados e geridos. Um hub IoT atua como um hub de mensagens central para comunicação bidirecional entre seu aplicativo IoT e os dispositivos.

Se você já tiver um hub IoT em sua assinatura do Azure, poderá ignorar esta seção.

Para criar um hub IoT e um grupo de recursos:

  1. Inicie seu aplicativo CLI. Para executar os comandos da CLI no restante deste artigo, copie a sintaxe do comando, cole-a no aplicativo da CLI, edite valores de variáveis e pressione Enter.

    • Se você estiver usando o Cloud Shell, selecione o botão Experimentar nos comandos da CLI para iniciar o Cloud Shell em uma janela dividida do navegador. Ou você pode abrir o Cloud Shell em uma guia separada do navegador.
    • Se você estiver usando a CLI do Azure localmente, inicie seu aplicativo de console da CLI e entre na CLI do Azure.
  2. Execute az extension add para instalar ou atualizar a extensão azure-iot para a versão atual.

    az extension add --upgrade --name azure-iot
    
  3. Em seu aplicativo CLI, execute o comando az group create para criar um grupo de recursos. O comando a seguir cria um grupo de recursos chamado MyResourceGroup no local eastus .

    Nota

    Opcionalmente, você pode definir um local diferente. Para ver os locais disponíveis, execute az account list-locations. Este guia de início rápido usa eastus como mostrado no comando de exemplo.

    az group create --name MyResourceGroup --location eastus
    
  4. Execute o comando az iot hub create para criar um hub IoT. Pode levar alguns minutos para criar um hub IoT.

    YourIotHubName. Substitua esse espaço reservado e as chaves ao redor no comando a seguir, usando o nome escolhido para seu hub IoT. Um nome de hub IoT deve ser globalmente exclusivo no Azure. Use o nome do hub IoT no restante deste início rápido onde quer que você veja o espaço reservado.

    az iot hub create --resource-group MyResourceGroup --name {your_iot_hub_name}
    

Verificar a autenticação do dispositivo

Um dispositivo tem de ser autenticado com o seu hub antes de poder trocar dados com o mesmo. Pode utilizar a ferramenta Dispositivos IoT na secção Gestão de Dispositivos do portal para gerir os seus dispositivos e verificar as chaves de autenticação que estão a ser utilizadas. Nesta secção do tutorial, irá adicionar um novo dispositivo de teste, obter a chave e verificar se o dispositivo de teste consegue estabelecer ligação ao hub. Posteriormente, irá repor a chave de autenticação para observar o que acontece quando um dispositivo tenta utilizar uma chave desatualizada.

Registar um dispositivo

É necessário registar um dispositivo no hub IoT antes de o mesmo se poder ligar. Nesta seção, você usa a CLI do Azure para criar uma identidade de dispositivo.

Se já tiver um dispositivo registado no seu hub IoT, pode ignorar esta secção.

Para criar uma identidade de dispositivo:

  1. Execute o comando az iot hub device-identity create no shell da CLI. Este comando cria a identidade do dispositivo.

    your_iot_hub_name. Substitua este espaço reservado abaixo pelo nome que você escolheu para seu hub IoT.

    myDevice. Você pode usar esse nome para a ID do dispositivo ao longo deste artigo ou fornecer um nome de dispositivo diferente.

    az iot hub device-identity create --device-id myDevice --hub-name {your_iot_hub_name}
    
  2. Execute o comando az iot hub device-identity connection-string show .

    az iot hub device-identity connection-string show --device-id myDevice --hub-name {your_iot_hub_name}
    

    A saída da cadeia de conexão está no seguinte formato:

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. Salve a cadeia de conexão em um local seguro.

Nota

Mantenha seu aplicativo CLI aberto. Será utilizado em passos posteriores.

Simular um dispositivo de teste

Para simular um dispositivo que envia telemetria para seu hub IoT, execute o Node.js aplicativo de dispositivo simulado que você baixou anteriormente.

  1. Em uma janela de terminal em sua máquina de desenvolvimento, navegue até a pasta raiz do projeto de Node.js de exemplo que você baixou. Em seguida, navegue até a pasta iot-hub\Tutorials\ConnectivityTests .

  2. Na janela de terminal, execute os seguintes comandos para instalar as bibliotecas necessárias e execute a aplicação de dispositivo simulado. Use a cadeia de conexão do dispositivo que você anotou quando registrou o dispositivo.

    npm install
    node SimulatedDevice-1.js "{your_device_connection_string}"
    

    A janela do terminal exibe uma mensagem de sucesso assim que ele se conecta ao seu hub:

    Screenshot that shows the simulated device connecting.

Efetuou a autenticação com êxito a partir de um dispositivo através de uma chave de dispositivo gerada pelo seu hub do IoT.

Repor chaves

Nesta secção, irá repor a chave do dispositivo e observar o erro quando o dispositivo simulado tenta estabelecer ligação.

  1. Para redefinir a chave de dispositivo principal do seu dispositivo, execute o comando az iot hub device-identity update :

    # Generate a new Base64 encoded key using the current date
    read key < <(date +%s | sha256sum | base64 | head -c 32)
    
    # Reset the primary device key for test device
    az iot hub device-identity update --device-id {your_device_id} --set authentication.symmetricKey.primaryKey=$key --hub-name {your_iot_hub_name}
    
  2. Na janela de terminal no computador de desenvolvimento, execute a aplicação de dispositivo simulado novamente:

    npm install
    node SimulatedDevice-1.js "{your_device_connection_string}"
    

    Desta vez, verá um erro de autenticação quando a aplicação tenta estabelecer ligação:

    Screenshot that shows the connection failing after the key reset.

Gerar um token de assinatura de acesso compartilhado (SAS)

Se o seu dispositivo utilizar um dos SDKs de dispositivo do Hub IoT, o código da biblioteca do SDK irá gerar o token SAS utilizado para autenticar com o hub. É gerado um token SAS a partir do nome do hub, do nome do dispositivo e da chave do dispositivo.

Em alguns cenários, tal como num gateway de protocolo de cloud ou como parte de um esquema de autenticação personalizado, poderá ter de gerar o token SAS manualmente. Para solucionar problemas com seu código de geração SAS, é útil gerar um token SAS em boas condições para usar durante o teste.

Nota

A amostra SimulatedDevice-2.js inclui exemplos de geração de um token SAS com e sem o SDK.

  1. Execute o comando az iot hub genereate-sas-token para gerar um token SAS em boas condições usando a CLI:

    az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}
    
  2. Copie o texto completo do token SAS gerado. Um token SAS se parece com o exemplo a seguir: SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111

  3. Numa janela de terminal no computador de desenvolvimento, navegue para a pasta raiz do projeto Node.js de exemplo que transferiu. Em seguida, navegue até a pasta iot-hub\Tutorials\ConnectivityTests .

  4. Na janela de terminal, execute os seguintes comandos para instalar as bibliotecas necessárias e executar a aplicação de dispositivo simulado:

    npm install
    node SimulatedDevice-2.js "{Your SAS token}"
    

    A janela do terminal exibe uma mensagem de sucesso quando ele se conecta ao seu hub usando o token SAS:

    Screenshot that shows a successful connection using a SAS token.

Efetuou a autenticação com êxito a partir de um dispositivo através de um token SAS de teste gerado por um comando da CLI. O ficheiro SimulatedDevice-2.js inclui um código de exemplo que mostra como gerar um token SAS no código.

Protocolos

Um dispositivo pode utilizar qualquer um dos seguintes protocolos para estabelecer ligação ao hub do IoT:

Protocolo Porta de saída
MQTT 8883
MQTT através de WebSockets 443
AMQP 5671
AMQP através de WebSockets 443
HTTPS 443

Se a porta de saída estiver bloqueada por uma firewall, o dispositivo não conseguirá estabelecer ligação:

Screenshot that shows a connection error when the outbound port is blocked.

Verificar a conectividade do dispositivo para a cloud

Depois que um dispositivo se conecta, ele pode começar a enviar telemetria para seu hub IoT. Esta secção mostra como verificar se os dados telemétricos enviados pelo dispositivo são recebidos pelo hub.

Enviar mensagens do dispositivo para a nuvem

  1. Como redefinimos a cadeia de conexão para seu dispositivo na seção anterior, use o comando az iot hub device-identity connection-string show para recuperar a cadeia de conexão atualizada:

    az iot hub device-identity connection-string show --device-id {your_device_id} --output table --hub-name {your_iot_hub_name}
    
  2. Para executar um dispositivo simulado que envia mensagens, navegue até a pasta iot-hub\Tutorials\ConnectivityTests no código que você baixou.

  3. Na janela de terminal, execute os seguintes comandos para instalar as bibliotecas necessárias e executar a aplicação de dispositivo simulado:

    npm install
    node SimulatedDevice-3.js "{your_device_connection_string}"
    

    A janela de terminal mostra informações à medida que envia dados telemétricos para o seu hub:

    Screenshot that shows the simulated device sending messages.

Monitorar mensagens recebidas

Você pode usar Métricas no portal para verificar se as mensagens de telemetria estão chegando ao seu hub IoT.

  1. No portal do Azure, selecione seu hub IoT na lista suspensa Recurso.

  2. Selecione Métricas na seção Monitoramento do menu de navegação.

  3. Selecione Mensagens de telemetria enviadas como métrica e defina o intervalo de tempo como Hora passada. O gráfico mostra a contagem agregada de mensagens enviadas pelo dispositivo simulado:

    Screenshot showing left pane metrics.

As métricas demoram alguns minuto a ficar disponíveis após iniciar o dispositivo simulado.

Verificar a conectividade da cloud para o dispositivo

Esta secção mostra como pode fazer uma chamada de método direto de teste para um dispositivo, para verificar a conectividade da cloud para o dispositivo. Execute um dispositivo simulado no seu computador de desenvolvimento para escutar chamadas de método direto do seu hub.

  1. Numa janela de terminal, utilize o seguinte comando para executar a aplicação de dispositivo simulado:

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. Em uma janela separada, use o comando az iot hub invoke-device-method para chamar um método direto no dispositivo:

    az iot hub invoke-device-method --device-id {your_device_id} --method-name TestMethod --timeout 10 --method-payload '{"key":"value"}' --hub-name {your_iot_hub_name}
    

    O dispositivo simulado imprime uma mensagem na consola quando recebe uma chamada de método direto:

    Screenshot that shows the device confirming that the direct method was received.

    Quando o dispositivo simulado recebe com êxito a chamada direta do método, ele envia uma confirmação de volta para o hub:

    Screenshot showing that the device returns a direct method acknowledgment.

Verificar a sincronização de dispositivos duplos

Os dispositivos utilizam duplos para sincronizar o estado entre o dispositivo e o hub. Nesta secção, irá utilizar comandos da CLI para enviar as propriedades pretendidas para um dispositivo e ler as propriedades reportadas enviadas pelo dispositivo.

O dispositivo simulado que utiliza nesta secção envia propriedades reportadas para o hub sempre que é iniciado e imprime as propriedades pretendidas na consola sempre que as recebe.

  1. Numa janela de terminal, utilize o seguinte comando para executar a aplicação de dispositivo simulado:

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. Em uma janela separada, execute o comando az iot hub device-twin show para verificar se o hub recebeu as propriedades relatadas do dispositivo:

    az iot hub device-twin show --device-id {your_device_id} --hub-name {your_iot_hub_name}
    

    No resultado do comando, pode ver a propriedade devicelaststarted na secção de propriedades reportadas. Esta propriedade mostra a data e hora em que iniciou o dispositivo simulado pela última vez.

    Screenshot showing the reported properties of a device.

  3. Para verificar se o hub pode enviar os valores de propriedade desejados para o dispositivo, use o comando az iot hub device-twin update :

    az iot hub device-twin update --set properties.desired='{"mydesiredproperty":"propertyvalue"}' --device-id {your_device_id} --hub-name {your_iot_hub_name}
    

    O dispositivo simulado imprime uma mensagem quando recebe uma atualização de propriedades pretendidas do hub:

    Screenshot that shows the device confirming that the desired properties update was received.

Além de receber as alterações de propriedades pretendidas à medida que são feitas, o dispositivo simulado verifica automaticamente a existência de propriedades pretendidas quando é iniciado.

Clean up resources (Limpar recursos)

Se já não precisar do Hub IoT, elimine-o, bem como ao grupo de recursos, no portal. Para fazer isso, selecione o grupo de recursos que contém seu hub IoT e selecione Excluir.

Próximos passos

Neste tutorial, aprendeu a verificar as chaves do dispositivo, a verificar a conectividade do dispositivo para a cloud, a verificar a conectividade da cloud para o dispositivo e a verificar a sincronização de dispositivos duplos. Para saber mais sobre como monitorizar o seu hub do IoT, aceda ao artigo de procedimentos de monitorização do Hub IoT.