Tutorial: Desenvolver módulos do IoT Edge usando contêineres do Windows

Aplica-se a:ícone sim IoT Edge 1.1

Importante

IoT Edge 1.1 a data de término do suporte foi 13 de dezembro de 2022. Confira o Ciclo de Vida do Produto da Microsoft para obter informações sobre o suporte deste produto, serviço, tecnologia ou API. Para obter mais informações sobre como atualizar para a versão mais recente do IoT Edge, consulte Atualizar IoT Edge.

Use o Visual Studio para desenvolver e implantar código em dispositivos Windows que executam o IoT Edge.

Observação

O IoT Edge 1.1 LTS é o último canal de lançamento que dá suporte a contêineres do Windows. Começando na versão 1.2, os contêineres do Windows deixarão de ter suporte. Considere usar ou mudar para o IoT Edge para Linux no Windows para executar o IoT Edge em dispositivos Windows.

Este tutorial explica o que é necessário para desenvolver e implantar seu próprio código em um dispositivo IoT Edge. Este tutorial é um pré-requisito útil para os outros tutoriais, que se aprofundam nas linguagens de programação específicas ou nos serviços do Azure.

Este tutorial usa o exemplo de como implantar um módulo do C# em um dispositivo Windows. Este exemplo foi escolhido porque é o cenário de desenvolvimento mais comum. Se você está interessado em desenvolver em um idioma diferente ou se planeja implantar os serviços do Azure como módulos, este tutorial ainda será útil para saber mais sobre as ferramentas de desenvolvimento. Após entender os conceitos de desenvolvimento, será possível escolher a linguagem de sua preferência ou o serviço do Azure nos quais se aprofundar.

Neste tutorial, você aprenderá como:

  • Configurar seu computador de desenvolvimento.
  • Usar as ferramentas do IoT Edge para o Visual Studio para criar um projeto.
  • Criar seu projeto como um contêiner e armazená-lo em um Registro de Contêiner do Azure.
  • Implantar seu código em um dispositivo IoT Edge.

Pré-requisitos

Um computador de desenvolvimento:

  • Windows 10 com a atualização 1809 ou mais recente.
  • É possível usar seu próprio computador ou uma máquina virtual, dependendo de suas preferências de desenvolvimento.
    • Verifique se o computador de desenvolvimento dá suporte à virtualização aninhada. Essa funcionalidade é necessária para executar um mecanismo de contêiner, que será instalado na próxima seção.
  • Instale o Git.

Um dispositivo Azure IoT Edge no Windows:

  • Instalar e gerenciar o Azure IoT Edge com contêineres do Windows.
  • Recomendamos que você não execute o IoT Edge no computador de desenvolvimento, mas use um dispositivo separado se possível. Essa distinção entre computador de desenvolvimento e dispositivo IoT Edge mais precisamente reflete um cenário de implantação verdadeiro e ajuda a manter os diversos conceitos claros.

Recursos de nuvem:

  • Um hub IoT gratuito ou de camada padrão no Azure.

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

Principais conceitos

Este tutorial explica o desenvolvimento de um módulo do IoT Edge. Um módulo do IoT Edge ou, às vezes, apenas módulo de forma abreviada, é um contêiner que contém o código executável. É possível implantar um ou mais módulos em um dispositivo IoT Edge. Módulos executam tarefas específicas, como ingerir dados de sensores, executar análise de dados ou operações de limpeza de dados ou enviar mensagens a um hub IoT. Para saber mais, confira Understand Azure IoT Edge modules (Noções básicas sobre módulos do Azure IoT Edge).

Ao desenvolver módulos do IoT Edge, é importante entender as diferenças entre o computador de desenvolvimento e o dispositivo IoT Edge de destino em que o módulo será implantado eventualmente. O contêiner que você criar para armazenar seu código de módulo deverá corresponder ao SO (sistema operacional) do dispositivo de destino. Para o desenvolvimento de contêiner do Windows, esse conceito é mais simples porque os contêineres do Windows são executados somente em sistemas de operacionais do Windows. Entretanto, você poderia, por exemplo, usar seu computador de desenvolvimento do Windows para criar módulos para dispositivos Linux IoT Edge. Nesse cenário, você precisa garantir que seu computador de desenvolvimento estava executando contêineres do Linux. Ao percorrer este tutorial, lembre-se da diferença entre o sistema operacional do computador de desenvolvimento e o sistema operacional do contêiner.

Este tutorial direciona dispositivos Windows que executam o IoT Edge. Os dispositivos Windows IoT Edge usam contêineres do Windows. É recomendável usar o Visual Studio para desenvolvimento para dispositivos Windows, portanto, é isso que este tutorial usará. É possível usar o Visual Studio Code também, embora haja diferenças no suporte entre as duas ferramentas.

A tabela a seguir lista os cenários de desenvolvimento compatíveis com os contêineres do Windows no Visual Studio Code e no Visual Studio.

Visual Studio Code Visual Studio 2017/2019
Serviços do Azure Funções do Azure
Stream Analytics do Azure
Idiomas C# (depuração não compatível) C
C#
Mais informações Azure IoT Edge para Visual Studio Code
Hub IoT do Azure
Ferramentas do Azure IoT Edge para Visual Studio 2017
Ferramentas do Azure IoT Edge para Visual Studio 2019

Instalar o mecanismo de contêiner

Os módulos do IoT Edge são empacotados como contêineres, portanto, você precisa de um mecanismo de contêiner no computador de desenvolvimento para criar e gerenciar os contêineres. É recomendável usar o Docker Desktop para o desenvolvimento por causa dos seus muitos recursos e de sua popularidade como um mecanismo de contêiner. Com o Docker Desktop em um computador Windows, é possível alternar entre contêineres do Linux e do Windows para poder desenvolver módulos facilmente para tipos diferentes de dispositivos IoT Edge.

Use a documentação do Docker para instalar em seu computador de desenvolvimento:

Configurar o Visual Studio e as ferramentas

As extensões da IoT para o Visual Studio ajudam a desenvolver módulos do IoT Edge. Essas extensões oferecem modelos de projeto, automatizam a criação do manifesto de implantação e permitem que você monitore e gerencie dispositivos IoT Edge. Nesta seção, você instalará o Visual Studio e a extensão IoT Edge. Em seguida, configurará sua conta do Azure para gerenciar recursos do Hub IoT no Visual Studio.

Este tutorial ensina as etapas de desenvolvimento para o Visual Studio 2019. Se você estiver usando o Visual Studio 2017 (versão 15.7 ou superior), as etapas serão semelhantes. Se preferir usar o Visual Studio Code, veja as instruções em Usar o Visual Studio Code para desenvolver e depurar módulos para o Azure IoT Edge.

  1. Prepare o Visual Studio 2019 no seu computador de desenvolvimento.

    • Se você ainda não tiver o Visual Studio em seu computador de desenvolvimento, instale o Visual Studio 2019 com as cargas de trabalho a seguir:

      • Desenvolvimento do Azure
      • Desenvolvimento para desktop com C++
      • Desenvolvimento multiplataforma com o .NET Core
    • Se você já tiver o Visual Studio de 2019 no computador de desenvolvimento, siga as etapas em Modificar o Visual Studio para adicionar as cargas de trabalho necessárias.

  2. Baixe e instale a extensão Ferramentas do Azure IoT Edge para Visual Studio 2019.

    Se estiver usando o Visual Studio 2017 (versão 15.7 ou superior), baixe e instale as Ferramentas do Azure IoT Edge para Visual Studio 2017.

  3. Quando suas instalações estiverem concluídas, abra o Visual Studio 2019 e selecione Continuar sem código.

  4. Selecione Exibição>Cloud Explorer.

  5. Selecione o ícone de perfil no Cloud Explorer e entre em sua conta do Azure se ainda não tiver entrado.

  6. Depois de entrar, suas assinaturas do Azure estarão listadas. Expanda a assinatura que tem seu Hub IoT.

  7. Na sua assinatura, expanda os Hubs IoT e, depois, o hub IoT. Você deverá ver uma lista de seus dispositivos IoT e poderá usar esse gerenciador para gerenciá-los.

    Acessar recursos do Hub IoT no Cloud Explorer

Criar um registro de contêiner

Neste tutorial, você cria um módulo e cria uma imagem de contêiner com base nos arquivos. Em seguida, você efetua push dessa imagem para um registro que armazena e gerencia suas imagens. Finalmente, você implanta a imagem do seu registro para executar no dispositivo IoT Edge.

Você pode usar qualquer registro compatível com o Docker para manter as imagens de contêiner. Dois serviços de registro populares do Docker são o Registro de Contêiner do Azure e o Hub do Docker. Este tutorial utiliza o Registro de Contêiner do Azure.

Caso ainda não tenha um registro de contêiner, siga estas etapas para criar um novo no Azure:

  1. No portal do Azure, selecione Criar um recurso>Contêineres>Registro de Contêiner.

  2. Forneça os seguintes valores para criar o seu registro de contêiner:

    Campo Valor
    Subscription Selecione uma assinatura na lista suspensa.
    Resource group É recomendável que você use o mesmo grupo de recursos para todos os recursos de teste que foram criados durante os tutoriais e guias de início rápido do IoT Edge. Por exemplo, IoTEdgeResources.
    Nome do registro Forneça um nome exclusivo.
    Location Escolha um local perto de você.
    SKU Selecione Basic.
  3. Selecione Criar.

  4. Selecione o registro de contêiner recém-criado na seção Recursos da sua página inicial do portal do Azure para abri-lo.

  5. No painel esquerdo do registro de contêiner, selecione Chaves de acesso no menu localizado em Configurações.

  6. Habilite Usuário administrador com o botão de alternância e exiba o Nome de usuário e a Senha do seu registro de contêiner.

  7. Copie os valores para Servidor de logon, Nome de usuário e Senha e salve-os em um local conveniente. É possível usar esses valores neste tutorial para fornecer acesso ao registro de contêiner.

Criar um projeto de módulo

A extensão Ferramentas do Azure IoT Edge oferece modelos de projeto para todas as linguagens de módulo do IoT Edge compatíveis com o Visual Studio. Todos esses modelos têm os arquivos e o código nos quais você precisa implantar um módulo de trabalho para testar o IoT Edge ou oferecem a você um ponto de partida para personalizar o modelo com sua própria lógica de negócios.

  1. Selecione Arquivo>Novo>Projeto...

  2. Na janela de novo projeto, pesquise IoT Edge e escolha o projeto Azure IoT Edge (Windows amd64) . Clique em Próximo.

    Criar um projeto do Azure IoT Edge

  3. Na janela Configurar o novo projeto, renomeie o projeto e a solução para algo descritivo como CSharpTutorialApp. Clique em Criar para criar o projeto.

    Configurar um novo projeto do Azure IoT Edge

  4. Na janela Adicionar Módulo, configure o projeto com os seguintes valores:

    Campo Valor
    Modelo do Visual Studio Selecione Módulo em C# .
    Nome do módulo Aceite o IotEdgeModule1 padrão.
    URL do repositório Um repositório de imagem inclui o nome do registro de contêiner e o nome da imagem de contêiner. Sua imagem de contêiner é populada previamente com base no valor de nome do projeto de módulo. Substitua localhost:5000 pelo valor do Servidor de logon do seu Registro de Contêiner do Azure. É possível recuperar o valor do Servidor de logon da página Visão geral do seu registro de contêiner no portal do Azure.

    O repositório de imagem final se parece com <nome do registro>.azurecr.io/iotedgemodule1.

    Configure seu projeto para o dispositivo de destino, tipo de módulo e registro de contêiner

  5. Selecione Adicionar para criar o módulo.

Depois que o novo projeto for carregado na janela do Visual Studio, aguarde um pouco para se familiarizar com os arquivos criados:

  • Um projeto de IoT Edge chamado CSharpTutorialApp.
    • A pasta módulos contém ponteiros para os módulos inclusos no projeto. Nesse caso, ela deve ser apenas IotEdgeModule1.
    • O arquivo .env oculto armazena as credenciais para seu registro de contêiner. Essas credenciais são compartilhadas com seu dispositivo IoT Edge para que ele tenha acesso para efetuar pull de imagens de contêiner.
    • O arquivo deployment.template.json é o modelo para ajudar você a criar um manifesto de implantação. Um manifesto de implantação é um arquivo que define exatamente quais módulos você deseja implantar em um dispositivo, como eles devem ser configurados e como eles podem se comunicar entre si e com a nuvem.

      Dica

      Na seção de credenciais de Registro, o endereço é preenchido automaticamente com as informações fornecidas quando você criou a solução. No entanto, o nome de usuário e a senha referenciam as variáveis armazenadas no arquivo .env. Isso é por questões de segurança, uma vez que o arquivo .env é ignorado pelo git, mas o modelo de implantação não.

  • Um projeto de módulo do IoT Edge chamado IotEdgeModule1.
    • O arquivo program.cs contém o código do módulo C# padrão que vem com o modelo de projeto. O módulo padrão obtém a entrada de uma fonte e a passa para o Hub IoT.
    • O arquivo module.json apresenta detalhes sobre o módulo, incluindo o repositório de imagem completo, a versão da imagem e qual Dockerfile usar para cada plataforma compatível.

Definir versão de runtime do IoT Edge

A extensão do IoT Edge é padronizada para a versão estável mais recente de runtime do IoT Edge ao criar os ativos de implantação.

Os contêineres do Windows são compatíveis apenas na versão de suporte de longo prazo 1.1 ou na versão 1.0 anterior. Para desenvolver módulos para dispositivos que usam contêineres do Windows, atualize a versão de runtime do IoT Edge no Visual Studio para corresponder à versão do IoT Edge nesses dispositivos.

  1. No Gerenciador de Soluções, clique com o botão direito do mouse no nome do seu projeto e selecione Definir versão de runtime do IoT Edge.

    Clique com o botão direito do mouse no nome do seu projeto e selecione definir versão de runtime do IoT Edge.

  2. Use o menu suspenso para escolher a versão de runtime que os dispositivos IoT Edge estão executando e, em seguida, selecione OK para salvar as alterações.

  3. Gere novamente o manifesto de implantação com a nova versão de runtime. Clique com o botão direito do mouse no nome do seu projeto e selecione Gerar implantação para o IoT Edge.

Forneça suas credenciais de Registro para o agente do IoT Edge

O runtime do IoT Edge precisa das credenciais de registro para efetuar pull de suas imagens de contêineres para o dispositivo IoT Edge. A extensão do IoT Edge tenta extrair informações do Registro de Contêiner do Azure e populá-las no modelo de implantação.

  1. Abra o arquivo deployment.template.json em sua solução do módulo.

  2. Localize a propriedade registryCredentials nas propriedades desejadas do $edgeAgent. Ele deve ter seu endereço de registro preenchido automaticamente com base nas informações fornecidas durante a criação do projeto e os campos de nome de usuário e senha devem conter nomes de variáveis. Por exemplo:

    "registryCredentials": {
      "<registry name>": {
        "username": "$CONTAINER_REGISTRY_USERNAME_<registry name>",
        "password": "$CONTAINER_REGISTRY_PASSWORD_<registry name>",
        "address": "<registry name>.azurecr.io"
      }
    }
    
  3. Abra o arquivo .env em sua solução de módulo. (Está oculto por padrão no Gerenciador de Soluções; portanto, pode ser necessário selecionar o botão Mostrar Todos os Arquivos para exibi-lo.)

  4. Adicione os valores Nome de usuário e Senha que você copiou do Registro de Contêiner do Azure.

  5. Salve suas alterações no arquivo .env.

Observação

Este tutorial usa as credenciais de logon do administrador do Registro de Contêiner do Azure, que são convenientes para cenários de desenvolvimento e teste. Se você está pronto para cenários de produção, recomendamos uma opção de autenticação de privilégios mínimos, como entidades de serviço. Para obter mais informações, confira Gerenciar o acesso ao registro de contêiner.

Revisar o código de exemplo

O modelo de solução criado inclui um exemplo de código para um módulo do IoT Edge. Esse módulo de exemplo simplesmente recebe mensagens e as passa adiante. A funcionalidade de pipeline demonstra um conceito importante no IoT Edge, que é como os módulos comunicam-se uns com os outros.

Cada módulo pode ter várias filas de entrada e de saída declaradas em seu código. O hub do IoT Edge em execução no dispositivo roteia mensagens da saída de um módulo para a entrada de um ou mais módulos. O código específico para declarar entradas e saídas varia entre as linguagens, mas o conceito é o mesmo em todos os módulos. Para saber mais sobre o roteamento entre módulos, confira Declarar rotas.

O código de exemplo C# que vem com o modelo de projeto usa a classe ModuleClient do SDK do Hub IoT para .NET.

  1. No arquivo program.cs, localize o método SetInputMessageHandlerAsync.

  2. O método SetInputMessageHandlerAsync configura uma fila de entrada para receber mensagens de entrada. Examine essa função e veja como inicializa uma fila de entrada chamada input1.

    Localizar o nome de entrada no construtor SetInputMessageHandlserAsync

  3. Em seguida, localize o método SendEventAsync.

  4. O método SendEventAsync processa as mensagens recebidas e configura uma fila de saída para passá-las a diante. Examine esse método e veja que inicia uma fila de saída chamada output1.

    Localizar o nome da saída no construtor SendEventAsync

  5. Abra o arquivo deployment.template.json.

  6. Localize a propriedade modules das propriedades desejadas do $edgeAgent.

    Deve haver dois módulos listados aqui. Um deles é o módulo SimulatedTemperatureSensor, que está incluído em todos os modelos por padrão para fornecer dados de temperatura simulada que você pode usar para testar os seus módulos. O outro é o módulo IotEdgeModule1 que você criou como parte desse projeto.

    A propriedade desse módulo declara quais módulos devem ser incluídos na implantação nos dispositivos.

  7. Localize a propriedade routes das propriedades desejadas de $edgeHub.

    Uma das funções do módulo do hub do IoT Edge é rotear mensagens entre todos os módulos em uma implantação. Examine os valores na propriedade routes. Uma das rotas, IotEdgeModule1ToIoTHub, usa um caractere curinga (*) para incluir qualquer mensagem recebida de qualquer fila de saída no módulo IotEdgeModule1. Essas mensagens entram em $upstream, que é um nome reservado que indica o Hub IoT. A outra rota, sensorToIotEdgeModule1, usa mensagens provenientes do módulo SimulatedTemperatureSensor e as roteia para a fila de entrada input1 do módulo IotEdgeModule1.

    Examinar rotas em deployment.template.json

Compilar e enviar por push sua solução

Você examinou o código do módulo e o modelo de implantação para entender alguns conceitos importantes de implantação. Agora você está pronto para criar a imagem de contêiner IotEdgeModule1 e efetuar push dela para o registro de contêiner. Com a extensão de ferramentas de IoT para o Visual Studio, esta etapa também gera o manifesto de implantação com base nas informações no arquivo de modelo e nas informações do módulo dos arquivos de solução.

Entrar no Docker

Forneça suas credenciais do registro de contêiner para o Docker no computador de desenvolvimento, de modo que ele possa efetuar push da imagem de contêiner para que ela seja armazenada no registro.

  1. Abra o PowerShell ou um prompt de comando.

  2. Entre no Docker com as credenciais do Registro de Contêiner do Azure que você salvou após criar o Registro.

    docker login -u <ACR username> -p <ACR password> <ACR login server>
    

    Talvez você receba um aviso de segurança recomendando usar --password-stdin. Embora essa prática seja recomendada para cenários de produção, ela não serve para este tutorial. Para saber mais, confira a referência de logon do docker.

Compilar e efetuar push

Agora, o computador de desenvolvimento tem acesso ao registro de contêiner e seus dispositivos IoT Edge também terão. É hora de transformar o código do projeto em uma imagem de contêiner.

  1. Clique com o botão direito do mouse na pasta de projeto CSharpTutorialApp e selecione Criar e enviar módulos do IoT Edge por push.

    Criar e efetuar push de módulos do IoT Edge

    O comando de criação e de envio por push inicia três operações. Primeiro, é criada uma pasta na solução denominada config que contém o manifesto de implantação completo, criado com base nas informações do modelo de implantação e em outros arquivos da solução. Depois, ele executa docker build para montar a imagem de contêiner com base no dockerfile apropriado para sua arquitetura de destino. Por fim, ele executa docker push para enviar por push o repositório de imagens para seu registro de contêiner.

    Esse processo pode levar vários minutos na primeira vez, mas será mais rápido na próxima vez em que você executar os comandos.

  2. Abra o arquivo deployment.windows-amd64.json na pasta de configuração recém-criada. (A pasta de configuração pode não aparecer no Gerenciador de Soluções no Visual Studio. Se esse for o caso, selecione o ícone Mostrar todos os arquivos na barra de Gerenciador de Soluções tarefas.)

  3. Localize o parâmetro imagem da seção IotEdgeModule1. Observe que a imagem contém o repositório de imagens completo com o nome, a versão e a marca de arquitetura do arquivo module.json.

  4. Abra o arquivo module.json na pasta IotEdgeModule1.

  5. Altere o número de versão da imagem de módulo. (A versão, não $schema-version.) Por exemplo, incremente o número de versão de patch para 0.0.2 como se tivéssemos feito uma pequena correção no código do módulo.

    Dica

    As versões de módulo permitem o controle de versão e que você teste alterações em um pequeno conjunto de dispositivos antes de implantar atualizações em produção. Se você não incrementar a versão de módulo antes de criar e efetuar push, então você substituirá o repositório em seu registro de contêiner.

  6. Salve suas alterações no arquivo module.json.

  7. Clique com o botão direito do mouse na pasta de projeto CSharpTutorialApp novamente e selecione Criar e Enviar por Push Módulos do IoT Edge novamente.

  8. Salve o arquivo deployment.windows-amd64.json de novo. Observe que um arquivo não foi criado quando você executou o comando de criação e de envio por push novamente. Em vez disso, o mesmo arquivo foi atualizado para refletir as alterações. Agora, a imagem IotEdgeModule1 aponta para a versão 0.0.2 do contêiner. Essa alteração no manifesto de implantação é como você informa ao dispositivo IoT Edge que há uma nova versão de um módulo para efetuar pull.

  9. Para verificar ainda mais o que o comando de criação e de envio por push fez, acesse o portal do Azure e navegue até o registro de contêiner.

  10. No registro de contêiner, selecione Repositórios e, sem seguida, iotedgemodule1. Verifique se as duas versões da imagem foram enviadas por push para o Registro.

    Exiba as duas versões da imagem no registro de contêiner

Solucionar problemas

Se encontrar erros ao criar e enviar sua imagem de módulo por push, isso geralmente estará relacionado à configuração do Docker em seu computador de desenvolvimento. Use as seguintes verificações para examinar sua configuração:

  • Você executou o comando docker login usando as credenciais que copiou do seu registro de contêiner? Essas credenciais são diferentes daquelas que você usa para entrar no Azure.
  • Seu repositório de contêiner está correto? Ele tem seu nome de registro de contêiner correto e seu nome de módulo correto? Abra o arquivo module.json na pasta IotEdgeModule1 para verificar. O valor do repositório deve ter a seguinte aparência: <nome do registro>.azurecr.io/iotedgemodule1.
  • Se você usou um nome diferente de IotEdgeModule1 para o seu módulo, esse nome está consistente em toda a solução?
  • Seu computador está executando o mesmo tipo de contêineres que você está criando? Este tutorial é para dispositivos Windows IoT Edge, portanto, os arquivos do Visual Studio devem ter a extensão windows-amd64 e o Docker Desktop deve estar executando contêineres do Windows.

Implantar módulos no dispositivo

Você verificou que as imagens de contêineres criadas estão armazenadas em seu registro de contêiner, portanto, chegou a hora de implantá-las em um dispositivo. Verifique se seu dispositivo IoT Edge está em funcionamento.

  1. Abra o Cloud Explorer no Visual Studio e expanda os detalhes para obter o hub IoT.

  2. Selecione o nome do dispositivo que você deseja implantar. Na lista Ações, selecione Criar Implantação.

    Criar implantação para dispositivo único

  3. No explorador de arquivos, selecione o arquivo de configuração do seu projeto e selecione o arquivo deployment.windows-amd64.json. Esse arquivo geralmente está localizado em C:\Users\<username>\source\repos\CSharpTutorialApp\CSharpTutorialApp\config\deployment.windows-amd64.json

    Não use o arquivo deployment.template.json, que não tem os valores de imagem de módulo completo nele.

  4. Expanda os detalhes de seu dispositivo IoT Edge no Cloud Explorer para conferir os módulos do dispositivo.

  5. Use o botão Atualizar para atualizar o status do dispositivo e ver que os módulos SimulatedTemperatureSensor e IotEdgeModule1 estão implantados no dispositivo.

    Exibir módulos em execução em seu dispositivo IoT Edge

Exibir mensagens do dispositivo

O código IotEdgeModule1 recebe mensagens por meio de sua fila de entrada e as passa adiante por meio de sua fila de saída. O manifesto de implantação declarou rotas que passavam mensagens de SimulatedTemperatureSensor para IotEdgeModule1 e, em seguida, encaminhava mensagens de IotEdgeModule1 para o Hub IoT. As ferramentas do Azure IoT Edge para Visual Studio permitem que você veja mensagens à medida que elas chegam ao Hub IoT dos seus dispositivos individuais.

  1. No Cloud Explorer do Visual Studio, selecione o nome do dispositivo IoT Edge que você implantou.

  2. No menu Ações, selecione Iniciar o Monitoramento do Ponto de Extremidade de Evento Interno.

  3. Observe a janela de Saída no Visual Studio para ver as mensagens chegando ao seu hub IoT.

    Pode levar alguns minutos para que os dois módulos sejam iniciados. O runtime do IoT Edge precisa receber seu novo manifesto de implantação, obter as imagens de módulo do runtime do contêiner e iniciar cada novo módulo.

    Exibir o dispositivo de entrada para mensagens de nuvem

Exibir alterações no dispositivo

Se desejar ver o que está acontecendo no seu próprio dispositivo, use os comandos nesta seção para inspecionar o runtime do IoT Edge e os módulos em execução em seu dispositivo.

Os comandos nesta seção são para seu dispositivo IoT Edge, não para seu computador de desenvolvimento. Se estiver usando uma máquina virtual para seu dispositivo IoT Edge, conecte-se a ela agora. No Azure, acesse a página de visão geral da máquina virtual e selecione Conectar para acessar a conexão de área de trabalho remota. No dispositivo, abra um comando ou janela do PowerShell para executar os comandos iotedge.

  • Exiba todos os módulos implantados em seu dispositivo e verifique seu status:

    iotedge list
    

    Você deverá ver quatro módulos: os dois módulos de runtime do IoT Edge, o SimulatedTemperatureSensor e o IotEdgeModule1. Todos os quatro devem estar listados como em execução.

  • Inspecione os logs para ver se há um módulo específico:

    iotedge logs <module name>
    

    Os módulos do IoT Edge diferenciam maiúsculas de minúsculas.

    Os logs de SimulatedTemperatureSensor e de IotEdgeModule1 devem mostrar as mensagens que estão processando. O módulo edgeAgent é responsável por iniciar os outros módulos, portanto seus logs terão informações sobre como implementar o manifesto de implantação. Se algum módulo não estiver listado ou não estiver em execução, os logs de edgeAgent provavelmente terão os erros. O módulo edgeHub é responsável pelas comunicações entre os módulos e o Hub IoT. Se os módulos estiverem em funcionamento, mas as mensagens não estiverem chegando ao seu hub IoT, os logs de edgeHub provavelmente terão os erros.

Limpar os recursos

Se você pretende continuar no próximo artigo recomendado, pode manter os recursos e as configurações já criados e reutilizá-los. Você também pode continuar usando o mesmo dispositivo IoT Edge como um dispositivo de teste.

Caso contrário, é possível excluir as configurações locais e os recursos do Azure usados neste artigo para evitar encargos.

Excluir recursos do Azure

A exclusão de recursos do Azure e dos grupos de recursos é irreversível. Não exclua acidentalmente grupo de recursos ou recursos incorretos. Se você criou o hub IoT em um grupo de recursos existente que contém recursos que deseja manter, exclua apenas o recurso do hub IoT, não o grupo de recursos.

Para excluir os recursos:

  1. Entre no portal do Azure e selecione Grupos de recursos.

  2. Selecione o nome do grupo de recursos que contém os recursos de teste do IoT Edge.

  3. Examine a lista de recursos contidos no grupo de recursos. Se você deseja excluir todos eles, selecione Excluir grupo de recursos. Se você quiser excluir apenas alguns deles, clique em cada recurso para excluí-los individualmente.

Próximas etapas

Neste tutorial, você configurou o Visual Studio 2019 em seu computador de desenvolvimento e implantou seu primeiro módulo do IoT Edge dele. Agora que você conhece os conceitos básicos, experimente adicionar uma funcionalidade a um módulo para que ele possa analisar os dados que são passados por ele. Escolha a linguagem de sua preferência:

CC#