Compartilhar via


Tutorial: Enviar dados de dispositivo para o Armazenamento do Azure usando o roteamento de mensagens do Hub IoT

Use o roteamento de mensagens no Hub IoT do Azure para enviar dados de telemetria de seus dispositivos IoT para serviços do Azure, como armazenamento de blobs, filas do barramento de serviço, tópicos do barramento de serviço e hubs de eventos. Todo o hub IoT tem um ponto de extremidade interno padrão que é compatível com os Hubs de Eventos. Também é possível criar pontos de extremidade personalizados e rotear mensagens para outros serviços do Azure, definindo consultas de roteamento. Cada mensagem que chega ao hub IoT é roteada para todos os pontos de extremidade para os quais há correspondência nas consultas de roteamento. Se uma mensagem não corresponder a nenhuma das consultas de roteamento definidas, ela será roteada para o ponto de extremidade padrão.

Neste tutorial, você executa as seguintes tarefas:

  • Criar um hub IoT e enviar mensagens de dispositivo para ele.
  • Criar uma conta de armazenamento.
  • Criar um ponto de extremidade personalizado para a conta de armazenamento e rotear mensagens para ela a partir do hub IoT.
  • Exibir mensagens de dispositivo no blob da conta de armazenamento.

Pré-requisitos

  • Uma assinatura do Azure. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

  • Um Hub IoT na assinatura do Azure. Se você ainda não tiver um hub IoT, poderá seguir as etapas em Criar um hub IoT.

  • Este tutorial usa o código de exemplo do SDK do IoT do Microsoft Azure para .NET.

    • Baixe ou clone o repositório do SDK no computador de desenvolvimento.
    • Tenha o .NET Core 3.0.0 ou mais recente no computador de desenvolvimento. Verifique a sua versão executando dotnet --version e Baixe o .NET, se necessário.
  • Verifique se a porta 8883 está aberta no firewall. A amostra deste tutorial usa o protocolo MQTT, que se comunica pela porta 8883. Essa porta pode ser bloqueada em alguns ambientes de rede corporativa e educacional. Para obter mais informações e maneiras de solucionar esse problema, consulte Conectar-se ao Hub IoT.

  • Opcionalmente, instale o Azure IoT Explorer (versão prévia). Essa ferramenta ajuda você a observar as mensagens assim que elas chegam ao hub IoT. Este artigo usa o Azure IoT Explorer.

Não há outros pré-requisitos para o portal do Azure.

Registrar um dispositivo e enviar mensagens para o Hub IoT

Registre um novo dispositivo no seu hub IoT.

Importante

Este artigo inclui etapas para conectar um dispositivo usando uma assinatura de acesso compartilhado, também chamada de autenticação de chave simétrica. Esse método de autenticação é conveniente para teste e avaliação, mas a autenticação em um dispositivo que usa certificados X.509 é uma abordagem mais segura. Para saber mais, confira as melhores práticas de segurança para segurança de conexão de soluções > de IoT.

  1. Entre no Portal do Azure e navegue até o Hub IoT.

  2. Selecione Dispositivos na seção Gerenciamento de dispositivos do menu.

  3. Selecione Adicionar dispositivo.

    Captura de tela que mostra a adição de um novo dispositivo no portal do Azure.

  4. Forneça uma identidade do dispositivo e selecione Salvar.

  5. Agora o novo dispositivo deve estar na lista de dispositivos. Se não estiver, atualize a página. Selecione a identidade do dispositivo e abra a página de detalhes do dispositivo.

  6. Copie uma das chaves do dispositivo e salve-a. Use esse valor para configurar o código de exemplo que gera mensagens de telemetria de dispositivo simuladas.

    Captura de tela que mostra como copiar a chave primária para um dispositivo IoT da página de detalhes do dispositivo no portal do Azure.

Agora que você tem uma identidade do dispositivo e uma chave, use o código de exemplo para começar a enviar mensagens de telemetria do dispositivo para o Hub IoT.

Dica

Se você estiver seguindo as etapas da CLI do Azure para este tutorial, execute o código de exemplo em uma sessão separada. Dessa maneira, você permite que o código de exemplo continue em execução enquanto segue o restante das etapas da CLI.

  1. Se você não fez isso como parte dos pré-requisitos, baixe ou clone o repositório Microsoft Azure IoT SDK para .NET do GitHub agora.

  2. Na pasta em que você baixou ou clonou o SDK, navegue até a pasta azure-iot-sdk-csharp\iothub\device\samples\how to guides\HubRoutingSample.

  3. Instale o SDK do Microsoft Azure IoT para .NET e as dependências necessárias, conforme especificado no HubRoutingSample.csproj arquivo:

    dotnet restore
    
  4. Em um editor de sua escolha abra o arquivo Parameters.cs. Esse arquivo mostra os parâmetros compatíveis com o exemplo. Somente o PrimaryConnectionString parâmetro é usado neste artigo ao executar o exemplo. Examine o código deste arquivo. Nenhuma alteração é necessária.

  5. Compile e execute o código de exemplo usando o seguinte comando:

    Substitua <myDevicePrimaryConnectionString> pela cadeia de caracteres de conexão primária do seu dispositivo no seu hub IoT.

    dotnet run --PrimaryConnectionString <myDevicePrimaryConnectionString>
    
  6. Você deve começar a ver as mensagens impressas na saída conforme elas são enviadas para o Hub IoT. Deixe este programa em execução durante o tutorial.

Configurar o IoT Explorer para exibir mensagens

Configure o IoT Explorer para se conectar ao hub IoT e ler mensagens à medida que elas chegam ao ponto de extremidade interno.

Primeiro, recupere a cadeia de conexão para o hub IoT.

  1. No portal do Azure, navegue para o hub IoT.

  2. Selecione Políticas de acesso compartilhado na seção Configurações de segurança do menu.

  3. Selecione a política iothubowner.

    Captura de tela que mostra como selecionar a política de acesso compartilhado iothubowner no portal do Azure.

  4. Copie a Cadeia de conexão primária.

    Captura de tela que mostra como copiar a cadeia de conexão primária para a política iothubowner de um hub IoT no portal do Azure.

Agora, use essa cadeia de conexão para configurar o IoT Explorer para o hub IoT.

  1. Abra o IoT Explorer no computador de desenvolvimento.

  2. Caso seja exibido, selecione Conectar por meio da cadeia de conexão do Hub IoT.

    Captura de tela que mostra o painel Boas-vindas do Azure IoT Explorer, com a opção de se conectar por meio de uma cadeia de conexão do Hub IoT realçada.

  3. Selecione Adicionar conexão.

    Captura de tela que mostra a adição de uma conexão de hub IoT no Azure IoT Explorer.

  4. Cole a cadeia de conexão do hub na caixa de texto.

  5. Selecione Save.

  6. Depois de se conectar ao hub IoT, você deverá ver uma lista de dispositivos. Selecione a identidade do dispositivo que você criou para este tutorial.

  7. Selecione Telemetria.

  8. Com o dispositivo ainda em execução, selecione Iniciar. Se o dispositivo não estiver em execução, você não poderá ver a telemetria.

    Captura de tela mostrando o painel Telemetria para dispositivos no Azure IoT Explorer, destacando como começar a monitorar a telemetria do dispositivo.

  9. Você deverá ver as mensagens que chegam do seu dispositivo, com as mais recentes exibidas na parte superior.

    Captura de tela mostrando as mensagens que chegam no IoT Hub no endpoint embutido.

    Observe as mensagens de entrada por alguns instantes para verificar se você vê três tipos diferentes de mensagens: normal, armazenamento e crítica. Depois de ver todos os três tipos de mensagens, você pode parar seu dispositivo.

Todas essas mensagens estão chegando ao ponto de extremidade interno padrão para o hub IoT. Nas próximas seções, vamos criar um ponto de extremidade personalizado e rotear algumas dessas mensagens para o armazenamento conforme as propriedades da mensagem. Essas mensagens param de aparecer no IoT Explorer porque elas só vão para o endpoint interno quando não correspondem a nenhuma outra rota no IoT Hub.

Configurar roteamento de mensagens

Você vai rotear mensagens para recursos diferentes com base nas propriedades anexadas à mensagem pelo dispositivo simulado. As mensagens que não são roteadas de forma personalizada são enviadas ao ponto de extremidade padrão (mensagens/eventos).

O aplicativo de exemplo para este tutorial atribui uma propriedade de nível a cada mensagem enviada ao hub IoT. Cada mensagem é atribuída aleatoriamente a um nível de normal, armazenamento ou crítica.

A primeira etapa é configurar o ponto de extremidade para o qual os dados são roteados. A segunda etapa é configurar a rota de mensagem que usa esse ponto de extremidade. Depois de configurar o roteamento, será possível exibir as rotas de mensagem e os pontos de extremidade no portal.

Criar uma conta de armazenamento

Crie uma conta de Armazenamento do Azure e um contêiner dentro dessa conta, que contém as mensagens do dispositivo que são roteadas para ela.

  1. No portal do Azure, pesquise as Contas de armazenamento.

  2. Selecione Criar.

  3. Forneça os valores a seguir para sua conta de armazenamento:

    Parâmetro Valor
    Assinatura Selecione a mesma assinatura que contém o hub IoT.
    Grupo de recursos Selecione o mesmo grupo de recursos que contém o hub IoT.
    Nome da conta de armazenamento Forneça um nome globalmente exclusivo para a conta de armazenamento.
    Desempenho Aceite o valor Standard padrão.

    Captura de tela que mostra como criar uma conta de armazenamento no portal do Azure.

  4. Você pode aceitar todos os outros valores padrão selecionando Revisar + criar.

  5. Depois de concluir a validação, selecione Criar.

  6. Depois da conclusão da implantação, selecione Ir para o recurso.

  7. No menu da conta de armazenamento, selecione Contêineres na seção Armazenamento de Dados.

  8. Escolha + Contêiner para criar um contêiner.

    Captura de tela que mostra como criar um contêiner para uma conta de armazenamento no portal do Azure.

  9. Forneça um nome para o contêiner e selecione Criar.

Rotear para uma conta de armazenamento

Agora, configure o roteamento para a conta de armazenamento. Nesta seção, você define um novo ponto de extremidade que aponta para a conta de armazenamento que você criou. Em seguida, você cria uma rota que filtra mensagens em que a propriedade de nível é definida como armazenamento e encaminha essas mensagens para o ponto de extremidade de armazenamento.

Observação

Os dados podem ser gravados no armazenamento de blobs no formato Apache Avro, que é o padrão, ou em JSON.

O formato de codificação pode ser definido somente no momento em que o ponto de extremidade de armazenamento de blobs é configurado. O formato não pode ser alterado para um endpoint configurado anteriormente. Ao usar a codificação JSON, você deve definir o contentType como JSON e o contentEncoding como UTF-8 nas propriedades do sistema de mensagem.

Para obter informações mais detalhadas sobre como usar um ponto de extremidade de armazenamento de blobs, consulte Armazenamento do Azure como um ponto de extremidade de roteamento.

Importante

Este artigo inclui etapas para se conectar a um serviço usando uma assinatura de acesso compartilhado. Esse método de autenticação é conveniente para teste e avaliação, mas a autenticação em um serviço com o Microsoft Entra ID ou identidades gerenciadas é uma abordagem mais segura. Para saber mais, confira as melhores práticas de segurança para soluções > de IoT de segurança na nuvem.

  1. No portal do Azure, vá para o hub IoT.

  2. No menu de recursos, em configurações do Hub, selecione Roteamento de mensagens e então selecione Adicionar.

    Captura de tela que mostra o local do botão Adicionar para adicionar uma nova rota ao hub IoT.

  3. Na guia Ponto de extremidade, crie um ponto de extremidade de armazenamento fornecendo as seguintes informações:

    Parâmetro Valor
    Tipo de ponto de extremidade Selecione Armazenamento.
    Nome do ponto de extremidade Forneça um nome exclusivo para esse ponto de extremidade.
    Contêiner de Armazenamento do Azure Selecione Escolher um contêiner. Siga os prompts para selecionar a conta de armazenamento e o contêiner que você criou na seção anterior.
    Codificação Selecione JSON. Se esse campo estiver esmaecido, a região da conta de armazenamento não dá suporte a JSON. Nesse caso, continue com o AVRO padrão.

    Captura de tela que mostra o painel Adicionar um ponto de extremidade de armazenamento com as opções corretas selecionadas.

  4. Aceite os valores padrão para o restante dos parâmetros e selecione Criar + avançar.

  5. Na guia Rota, forneça as seguintes informações para criar uma rota que aponte para o ponto de extremidade de armazenamento que você criou:

    Parâmetro Valor
    Nome Crie um nome para a rota.
    Fonte de dados Verifique se a opção Mensagens de Telemetria de Dispositivo está selecionada na lista suspensa.
    Habilitar rota Verifique se esse campo está selecionado.
    Consulta de roteamento insira level="storage" como a cadeia de caracteres de consulta.

    Captura de tela mostrando a adição de uma rota com a consulta de roteamento.

  6. Selecione Criar e ignorar enriquecimentos.

Exibir mensagens roteadas

Depois que a rota é criada no Hub IoT e habilitada, ela inicia imediatamente o roteamento de mensagens que atendem à condição de consulta para o ponto de extremidade de armazenamento.

Monitorar o ponto de extremidade interno com o IoT Explorer

Retorne à sessão do IoT Explorer no computador de desenvolvimento. Lembre-se de que o IoT Explorer monitora o ponto de extremidade interno do hub IoT. Isso significa que agora você deve ver apenas as mensagens que não são roteadas pela rota personalizada que criamos.

Inicie o exemplo novamente executando o código. Observe as mensagens de entrada por alguns instantes e você só deverá ver mensagens nas quais level está definido como normal ou critical.

Exibir mensagens no contêiner de armazenamento

Verifique se as mensagens estão chegando no contêiner de armazenamento.

  1. No Portal do Azure, navegue até sua conta de armazenamento.

  2. Selecione Contêineres na seção Armazenamento de Dados do menu.

  3. Selecione o contêiner que você criou para este tutorial.

  4. Deverá haver uma pasta com o nome do hub IoT. Analise detalhadamente a estrutura do arquivo até chegar a um arquivo .json.

    Captura de tela que mostra a localização de mensagens roteadas no armazenamento.

  5. Selecione o arquivo JSON e clique em Baixar para baixar o arquivo JSON. Confirme se o arquivo contém as mensagens do dispositivo que têm a propriedade level definida como storage.

  6. Interrompa a execução do exemplo.

Limpar os recursos

Se você quiser remover todos os recursos do Azure usados para este tutorial, exclua o grupo de recursos. Essa ação também exclui todos os recursos contidos no grupo. Caso não queira excluir todo o grupo de recursos, use o portal do Azure para localizar e excluir os recursos individuais.

Se você planeja continuar para o próximo tutorial, mantenha os recursos que você criou aqui.

  1. No portal do Azure, navegue até o grupo de recursos que contenha o hub IoT e a conta de armazenamento deste tutorial.
  2. Examine todos os recursos que estão no grupo de recursos para determinar quais deles você quer limpar.
    • Se você quiser excluir todos os recursos, selecione Excluir grupo de recursos.
    • Caso queira excluir apenas determinado recurso, use as caixas de seleção ao lado de cada nome de recurso para escolher aqueles que deseja excluir. Em seguida, selecione Excluir.

Próximas etapas

Neste tutorial, você aprendeu a criar um ponto de extremidade personalizado para um recurso do Azure e, em seguida, criar uma rota para enviar mensagens de dispositivo para esse ponto de extremidade. Continue para o próximo tutorial para saber como enriquecer mensagens com dados extras que podem ser usados para simplificar o processamento descendente