Compartilhar via


Tutorial: Atualização de Dispositivo para 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, pacote e script.

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, já que não são apresentados 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 apresenta as etapas para concluir uma atualização de ponta a ponta baseada em imagem usando a Atualização de Dispositivo para Hub IoT em uma placa Raspberry Pi 3 B+.

Neste tutorial, você aprenderá como:

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

Observação

As atualizações de imagem neste tutorial foram validadas na placa do Raspberry Pi B3.

Pré-requisitos

Se você ainda não tiver feito 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 Ativos na página de versões do GitHub de Atualização de Dispositivo. O arquivo .gz é a imagem base que você pode instalar em uma placa do Raspberry Pi 3 B+. O arquivo swUpdate é a atualização que você importaria por meio da Atualização de Dispositivo para Hub IoT.

Atualizar um cartão SD com a imagem

Use sua ferramenta de atualização de SO favorita para instalar a imagem de base da Atualização de dispositivo (adu-base-image) no cartão SD que será usada no dispositivo Raspberry Pi 3 B+.

Usar bmaptool para atualizar o cartão SD

  1. Instale o utilitário bmaptool, se ainda não o tiver feito.

    sudo apt-get install bmap-tools
    
  2. Localize o caminho do cartão SD no /dev. O caminho deve ter a seguinte aparência: /dev/sd* 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 uma atualização mais rápida, 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 do software do Hub IoT do Azure está sujeita aos seguintes termos de licença:

Leia os termos da licença antes de usar o agente. A instalação e o uso confirmam sua aceitação desses termos. Caso não concorde com os termos de licença, não use o agente de Atualização de Dispositivo para 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. No Hub IoT, uma cadeia de conexão será gerada para o dispositivo.

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

  2. Crie um novo dispositivo.

  3. No painel esquerdo, selecione Dispositivos. Em seguida, 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. Selecione Salvar. Na página Dispositivos, o dispositivo criado 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 do 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 aplicável ao caso de uso e, em seguida, selecione Salvar. Selecione o módulo recém-criado. Na 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: na 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 usá-los posteriormente nas etapas a seguir:

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

Preparar configurações no dispositivo para a Atualização de Dispositivo para 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, que deve existir em /adu/du-config.json. O segundo arquivo é o du-diagnostics-config.json, que deve existir em /adu/du-diagnostics-config.json.

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

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 de configuração:

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

         ssh raspberrypi3 -l root
      
    2. Crie ou abra o arquivo du-config.json para editar 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 conteúdo de exemplo do du-config.json anterior e substitua as configurações necessárias para dispositivo. Em seguida, substitua a cadeia de conexão de exemplo pela cadeia de conexão do dispositivo criado nas etapas acima.

    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 arquivo du-diagnostics-config.json usando comandos semelhantes. Comece criando ou abrindo o arquivo du-diagnostics-config.json para editar usando:

         nano /adu/du-diagnostics-config.json
      
    6. Copie o conteúdo de exemplo do du-diagnostics-config.json anterior e substitua as configurações que diferem da compilação padrão. O arquivo de exemplo du-diagnostics-config.json representa os locais de log padrão da Atualização de Dispositivo para Hub IoT. Você só precisará alterar isso se sua 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 diretório /adu/. Você deve ver os dois 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 Dispositivo para verificar se as configurações foram aplicadas. Use o seguinte comando no terminal conectado ao raspberrypi:

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

       systemctl status adu-agent
    

    Você deverá ver o status voltar a ficar ativo e verde.

Conectar o dispositivo na Atualização de Dispositivo para 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 estiver se conectando diretamente à Atualização de Dispositivo usando a identidade do dispositivo IoT. Caso contrário, selecione o módulo criado acima e escolha o módulo gêmeo.

  4. Na seção Relatado 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 de Dispositivo, o valor DeviceManagement:DeviceInformation:1.swVersion representa a versão do firmware em execução no dispositivo. Depois que um dispositivo tiver sido atualizado, a Atualização de Dispositivo usará 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 de base e de atualização contam com um número de versão no nome de arquivo.

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

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

Adicionar uma marca ao seu dispositivo

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

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

  3. No módulo gêmeo do módulo de agente de Atualização de Dispositivo, exclua os valores de marca de Atualização de Dispositivo existentes definindo-os como nulo. 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 marca da Atualização de dispositivo, conforme mostrado:

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

Importar a atualização

  1. Baixe o manifesto do tutorial de exemplo (Importação de Tutorial Manifest_Pi.json) e a atualização de exemplo (adu-update-image-raspberrypi3-0.6.5073.1.swu) dos Ativos de Versão 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 guia Atualizações.

  4. Selecione + Importar nova atualização.

  5. Selecione + Selecionar no 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. Após selecionar todos os arquivos de atualização, selecione Upload. 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 atualização de importação.

  8. O processo de importação é iniciado e a tela é alterada para a seção Histórico de importação. 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 marca do Hub IoT e a Classe de dispositivo na lista. Em seguida, selecione Criar grupo.

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

  4. Depois que o grupo tiver sido criado, a lista de gráficos e grupos de conformidade de atualizações será atualizada. 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ê deve ver o grupo recém-criado e todas as atualizações disponíveis para os dispositivos do novo grupo. Se houver dispositivos que não atendem 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 marcas e criar 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, acesse a guia Implantação atual. Selecione o link implantar ao lado da atualização desejada na seção de 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 iniciar 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 ativa.

  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 com êxito uma atualização de imagem de ponta a ponta usando a Atualização de Dispositivo para Hub IoT em um dispositivo Raspberry Pi 3 B+.

Limpar recursos

Quando não for mais necessária, limpe a conta da Atualização de Dispositivo, a instância, o hub IoT e o dispositivo IoT.

Próximas etapas