Tutorial: Atualização do dispositivo para o Hub IoT do Azure usando a imagem de referência do Raspberry Pi 3 B+

A Atualização de Dispositivo para Hub IoT do Azure é compatível com atualizações baseadas em imagem, em pacotes e em scripts.

As atualizações de imagem fornecem um nível mais alto de confiança no estado final do dispositivo. Normalmente, é mais fácil replicar os resultados de uma atualização de imagem entre um ambiente de pré-produção e um ambiente de produção porque ele não apresenta os mesmos desafios que os pacotes e suas dependências. Devido à natureza atômica, também é possível adotar facilmente um modelo de failover A/B.

Este tutorial orienta você pelas etapas para concluir uma atualização baseada em imagem de ponta a ponta usando a Atualização de Dispositivo para Hub IoT em uma placa Raspberry Pi 3 B+.

Neste tutorial, você aprenderá a:

  • Baixe uma imagem.
  • Adicione uma etiqueta ao seu dispositivo IoT.
  • Importar uma atualização.
  • Criar um grupo de dispositivos.
  • Implantar uma atualização de imagem.
  • Monitorar a implantação da atualização.

Observação

As atualizações de imagem neste tutorial foram validadas no painel Raspberry Pi B3.

Pré-requisitos

Se você ainda não fez isso, crie uma conta e uma instância de Atualização de Dispositivo e configure um hub IoT.

Baixar a imagem

Fornecemos imagens de exemplo em Assets na página de lançamentos do GitHub do Device Update. O arquivo .gz é a imagem base que você pode exibir em uma placa Raspberry Pi 3 B+. O arquivo swUpdate é a atualização que você importaria por meio da Atualização de Dispositivo para o Hub IoT.

Gravar imagem em cartão SD

Use sua ferramenta preferida de instalação de sistemas operacionais para instalar a imagem base de atualização de dispositivos (adu-base-image) no cartão SD que será usado no Raspberry Pi 3 B+.

Utilize o bmaptool para gravar no cartão SD

  1. Instale o bmaptool utilitário, se você ainda não fez isso.

    sudo apt-get install bmap-tools
    
  2. Localize o caminho para o cartão SD em /dev. O caminho deve ser semelhante /dev/sd* a ou /dev/mmcblk*. Você pode usar o utilitário dmesg para ajudar a localizar o caminho correto.

  3. Desmonte todas as partições montadas antes de atualizar.

    sudo umount /dev/<device>
    
  4. Verifique se você tem permissões de gravação para o dispositivo.

    sudo chmod a+rw /dev/<device>
    
  5. Opcional: para piscar mais rapidamente, baixe o arquivo bimap e o arquivo de imagem e coloque-os no mesmo diretório.

  6. Atualize o cartão SD.

    sudo bmaptool copy <path to image> /dev/<device>
    

A atualização de dispositivo para software do Hub IoT do Azure está sujeita aos seguintes termos de licença:

Leia os termos de licença antes de usar o agente. Sua instalação e uso constituem sua aceitação desses termos. Se você não concordar com os termos de licença, não use a Atualização de Dispositivo para o agente do Hub IoT.

Criar um dispositivo ou módulo no Hub IoT e obter uma cadeia de conexão

Agora, adicione o dispositivo ao Hub IoT. Dentro do IoT Hub, uma cadeia de conexão é gerada para o dispositivo.

  1. No portal do Azure, inicie o Hub IoT.

  2. Crie um novo dispositivo.

  3. No painel esquerdo, selecione Dispositivos. Depois, selecione Novo.

  4. Em ID do Dispositivo, insira um nome para o dispositivo. Verifique se a caixa de seleção Gerar chaves automaticamente está marcada.

  5. Clique em Salvar. Na página Dispositivos , o dispositivo que você criou deve estar na lista.

  6. Obtenha a cadeia de conexão do dispositivo usando uma das duas opções:

    • Opção 1: use o agente de Atualização de Dispositivo com uma identidade de módulo: na mesma página Dispositivos , selecione Adicionar Identidade do Módulo na parte superior. Crie um novo módulo de Atualização de Dispositivo com o nome IoTHubDeviceUpdate. Escolha outras opções conforme elas se aplicam ao seu caso de uso e, em seguida, selecione Salvar. Selecione o módulo recém-criado. No modo de exibição do módulo, selecione o ícone Copiar ao lado da Cadeia de Conexão Primária.
    • Opção 2: use o agente de Atualização de Dispositivo com a identidade do dispositivo: no modo de exibição do dispositivo, selecione o ícone Copiar ao lado da Cadeia de Conexão Primária.
  7. Cole os caracteres copiados em algum lugar para uso posterior nas seguintes etapas:

    Essa cadeia de caracteres copiada é a cadeia de conexão do dispositivo.

Preparar configurações no dispositivo para a Atualização de Dispositivo para o Hub IoT

Dois arquivos de configuração devem estar no dispositivo para que a Atualização de Dispositivo para Hub IoT seja configurada corretamente. O primeiro arquivo é o du-config.json arquivo, que deve existir em /adu/du-config.json. O segundo arquivo é o du-diagnostics-config.json arquivo, que deve existir em /adu/du-diagnostics-config.json.

Aqui estão dois exemplos para o du-config.json e os du-diagnostics-config.json arquivos:

Exemplo du-config.json

   {
      "schemaVersion": "1.0",
      "aduShellTrustedUsers": [
         "adu",
         "do"
      ],
      "manufacturer": "fabrikam",
      "model": "vacuum",
      "agents": [
         {
         "name": "main",
         "runas": "adu",
         "connectionSource": {
            "connectionType": "string",
            "connectionData": "HostName=example-connection-string.azure-devices.net;DeviceId=example-device;SharedAccessKey=M5oK/rOP12aB5678YMWv5vFWHFGJFwE8YU6u0uTnrmU="
         },
         "manufacturer": "fabrikam",
         "model": "vacuum"
         }
      ]
   }  

Exemplo du-diagnostics-config.json

   {
      "logComponents":[
         {
               "componentName":"adu",
               "logPath":"/adu/logs/"
         },
         {
               "componentName":"do",
               "logPath":"/var/log/deliveryoptimization-agent/"
         }
      ],
      "maxKilobytesToUploadPerLogPath":50
   }

Configurar o agente de Atualização de Dispositivo no Raspberry Pi

  1. Verifique se o Raspberry Pi 3 está conectado à rede.

  2. Siga estas instruções para adicionar os detalhes da configuração:

    1. Primeiro, SSH no computador usando o seguinte comando na janela do PowerShell:

         ssh raspberrypi3 -l root
      
    2. Crie ou abra o du-config.json arquivo para edição usando:

         nano /adu/du-config.json
      
    3. Depois de executar o comando, você deverá ver um editor aberto com o arquivo. Se você nunca criou o arquivo, ele estará vazio. Agora copie o exemplo anterior du-config.json conteúdo e substitua as configurações necessárias para seu dispositivo. Em seguida, substitua a cadeia de conexão de exemplo pela do dispositivo que você criou nas etapas anteriores.

    4. Depois de concluir as alterações, selecione Ctrl+X para sair do editor. Em seguida, insira y para salvar as alterações.

    5. Agora você precisa criar o du-diagnostics-config.json arquivo usando comandos semelhantes. Comece criando ou abrindo o du-diagnostics-config.json arquivo para edição usando:

         nano /adu/du-diagnostics-config.json
      
    6. Copie o conteúdo do exemplo anterior du-diagnostics-config.json e substitua qualquer configuração que difira da construção padrão. O arquivo de exemplo du-diagnostics-config.json representa os locais de log padrão para a Atualização de Dispositivos para o IoT Hub. Você só precisará alterá-las se a implementação for diferente.

    7. Depois de concluir as alterações, selecione Ctrl+X para sair do editor. Em seguida, insira y para salvar as alterações.

    8. Use o comando a seguir para mostrar os arquivos localizados no /adu/ diretório. Você deve ver ambos os seus arquivos de configuração files.du-diagnostics-config.json para edição, usando:

         ls -la /adu/
      
  3. Reinicie o daemon do sistema de Atualização de Dispositivos para garantir que as configurações foram aplicadas. Use o seguinte comando dentro do terminal conectado ao raspberrypi:

       systemctl start adu-agent
    
  4. Verifique se o agente está ativo usando o seguinte comando:

       systemctl status adu-agent
    

    Você deve ver o status aparecer como ativo e verde.

Conectar o dispositivo na Atualização de Dispositivo para o Hub IoT

  1. No painel esquerdo, selecione Dispositivos.

  2. Selecione o link com o nome do dispositivo.

  3. Na parte superior da página, selecione Dispositivo Gêmeo se você estiver se conectando diretamente à Atualização do Dispositivo usando a identidade do dispositivo IoT. Caso contrário, selecione o módulo que você criou e selecione seu módulo gêmeo.

  4. Na seção relatada das propriedades do Dispositivo Gêmeo , procure a versão do kernel do Linux. Para um novo dispositivo, que não recebeu uma atualização da Atualização do Dispositivo, o valor DeviceManagement:DeviceInformation:1.swVersion representa a versão do firmware em execução no dispositivo. Depois que uma atualização é aplicada a um dispositivo, a Atualização de Dispositivo usa o valor da propriedade AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId para representar a versão do firmware em execução no dispositivo.

  5. Os arquivos de imagem base e de atualização têm um número de versão no nome do arquivo.

    adu-<image type>-image-<machine>-<version number>.<extension>
    

Use esse número de versão na seção "Importar a atualização" posterior.

Adicione uma etiqueta ao seu dispositivo

  1. Entre no portal do Azure e acesse o hub IoT.

  2. No painel esquerdo, em Dispositivos, localize seu dispositivo IoT e vá para o dispositivo gêmeo ou módulo gêmeo.

  3. No módulo twin do módulo de agente de Atualização de Dispositivo, exclua os valores existentes das tags de Atualização de Dispositivo definindo-os como null. Se você estiver usando a identidade do dispositivo com o agente de Atualização de Dispositivo, faça essas alterações no dispositivo gêmeo.

  4. Adicione um novo valor de tag de Atualização de Dispositivo, conforme mostrado.

        "tags": {
                "ADUGroup": "<CustomTagValue>"
                }
    

Importar a atualização

  1. Baixe o manifesto do tutorial de exemplo (Tutorial Importação Manifest_Pi.json) e a atualização de exemplo (adu-update-image-raspberrypi3-0.6.5073.1.swu) dos Recursos de Lançamento para o agente mais recente.

  2. Entre no portal do Azure e vá para o Hub IoT com a Atualização de Dispositivo. No painel esquerdo, em Gerenciamento Automático de Dispositivo, selecione Atualizações.

  3. Selecione a aba Atualizações.

  4. Selecione + Importar nova atualização.

  5. Selecione + Selecionar do contêiner de armazenamento. Selecione uma conta existente ou crie uma usando + Conta de armazenamento. Em seguida, selecione um contêiner existente ou crie um contêiner usando + Contêiner. Esse contêiner será usado para preparar os arquivos de atualização para importação.

    Observação

    É recomendável usar um contêiner novo cada vez que você importar uma atualização para evitar a importação acidental de arquivos de atualizações anteriores. Se você não usar um contêiner novo, não deixe de excluir todos os arquivos do contêiner existente antes de concluir esta etapa.

    Captura de tela que mostra as contas de armazenamento e os contêineres.

  6. No contêiner, selecione Upload e navegue até os arquivos baixados na etapa 1. Depois de selecionar todos os arquivos de atualização, selecione Carregar. Em seguida, selecione o botão Selecionar para retornar à página Importar atualização.

    Captura de tela que mostra a seleção de arquivos enviados.

    Esta captura de tela mostra a etapa de importação. Os nomes de arquivo podem não corresponder aos usados no exemplo.

  7. Na página Importar atualização, examine os arquivos a serem importados. Em seguida, selecione Importar atualização para iniciar o processo de importação.

    Captura de tela que mostra a importação de atualização.

  8. O processo de importação começa e a tela muda para a seção Importar histórico . Quando a coluna Status indicar que a importação foi bem-sucedida, selecione o cabeçalho Atualizações disponíveis. Agora a atualização importada deve estar presente na lista.

    Captura de tela que mostra o status do trabalho.

Saiba mais sobre como importar atualizações.

Criar um grupo de atualizações

  1. Acesse a guia Grupos e Implantações na parte superior da página.

    Captura de tela que mostra dispositivos desagrupados.

  2. Selecione Adicionar grupo para criar um novo grupo.

    Captura de tela que mostra a adição do grupo de dispositivos.

  3. Selecione uma tag de IoT Hub e classe de dispositivo na lista. Em seguida, selecione Criar grupo.

    Captura de tela que mostra a seleção de tags.

  4. Depois que o grupo é criado, o gráfico de conformidade das atualizações e a lista de grupos são atualizados. O gráfico de conformidade da atualização mostra a contagem de dispositivos em vários estados de conformidade: Com a atualização mais recente, Novas atualizações disponíveis e Atualizações em andamento. Saiba mais sobre a conformidade de atualizações.

    Captura de tela que mostra a exibição de conformidade da atualização.

  5. Você deverá ver o grupo recém-criado e as atualizações disponíveis para os dispositivos no novo grupo. Se houver dispositivos que não atendam aos requisitos de classe de dispositivo do grupo, eles aparecerão em um grupo inválido correspondente. Para implantar a melhor atualização disponível para o novo grupo definido pelo usuário deste modo de exibição, selecione Implantar ao lado do grupo.

Saiba mais sobre como adicionar tags e criar os grupos de atualização.

Implantar a atualização

  1. Depois que o grupo for criado, você deverá ver uma nova atualização disponível para o grupo de dispositivos. Um link para a atualização deve estar em Melhor atualização. Talvez você precise atualizar novamente. Saiba mais sobre a conformidade das atualizações.

  2. Escolha o grupo de destino selecionando o nome do grupo. Você será direcionado para os detalhes do grupo em Noções básicas do grupo.

    Captura de tela que mostra detalhes do grupo.

  3. Para iniciar a implantação, vá para a guia Implantação atual . Selecione o link de implantação ao lado da atualização desejada na seção Atualizações disponíveis . A melhor atualização disponível para determinado grupo é indicada com a Melhor em destaque.

    Captura de tela que mostra a seleção de uma atualização.

  4. Agende sua implantação para começar imediatamente ou no futuro. Em seguida, selecione Criar.

    Captura de tela que mostra o botão Criar.

  5. Em Detalhes da implantação, o Status se torna Ativo. A atualização implantada é marcada com (implantando).

    Captura de tela que mostra a Implantação em andamento.

  6. Exiba o gráfico de conformidade para ver se a atualização está em andamento.

  7. Depois de atualizar seu dispositivo com êxito, você verá que o gráfico de conformidade e os detalhes da implantação atualizados refletem as mesmas informações.

    Captura de tela que mostra a atualização bem-sucedida.

Monitorar a implantação da atualização

  1. Selecione a guia Histórico de Implantações na parte superior da página.

    Captura de tela que mostra o histórico de implantação.

  2. Selecione Detalhes ao lado da implantação criada.

    Captura de tela que mostra os detalhes da implantação.

  3. Selecione Atualizar para exibir os detalhes mais recentes do status.

Agora você concluiu uma atualização de imagem de ponta a ponta com êxito usando a Atualização de Dispositivo para Hub IoT em um dispositivo Raspberry Pi 3 B+.

Limpar os recursos

Quando não for mais necessário, limpe sua conta de Atualização de Dispositivo, a instância, o Hub IoT e o dispositivo IoT.

Próximas etapas