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

A Atualização de Dispositivos para Hub IoT do Azure suporta atualizações baseadas em imagens, baseadas em pacotes e em scripts.

As atualizações de imagens proporcionam um nível mais elevado 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 não coloca os mesmos desafios que os pacotes e as respetivas dependências. Devido à sua natureza atómica, também pode adotar facilmente um modelo de ativação pós-falha A/B.

Este tutorial explica-lhe os passos para concluir uma atualização baseada em imagens ponto a ponto com a Atualização de Dispositivos para Hub IoT num quadro Raspberry Pi 3 B+.

Neste tutorial, irá aprender a:

  • Transfira uma imagem.
  • Adicione uma etiqueta ao seu dispositivo IoT.
  • Importar uma atualização.
  • Implementar uma atualização de imagem.
  • Monitorize a implementação da atualização.

Nota

As atualizações de imagens neste tutorial foram validadas no quadro Raspberry Pi B3.

Pré-requisitos

Se ainda não o fez, crie uma conta e instância de Atualização de Dispositivos e configure um hub IoT. Este tutorial precisa que o dispositivo esteja ligado através da ligação ethernet.

Transfira ficheiros em Ativos na página Versões do GitHub de Atualização de Dispositivos. O Tutorial_RaspberryPi.zip tem todos os ficheiros necessários para o tutorial.

Criar um dispositivo no Hub IoT e obter uma cadeia de ligação

Agora, adicione o dispositivo ao Hub IoT. A partir de Hub IoT, é gerada uma cadeia de ligação para o dispositivo.

  1. A partir do portal do Azure, navegue para o seu hub IoT.

  2. No painel esquerdo, selecione Devices (Dispositivos). Em seguida, selecione Novo.

  3. Em ID do Dispositivo, introduza um nome para o dispositivo. Certifique-se de que a caixa de verificação Degenerar automaticamente as chaves está selecionada.

  4. Selecione Guardar. Na página Dispositivos , o dispositivo que criou deve estar na lista.

  5. Obtenha a cadeia de ligação do dispositivo ao navegar para a vista do dispositivo e selecione o ícone Copiar junto a Cadeia de Ligação Primária.

  6. Cole os carateres copiados algures para utilização posterior nos seguintes passos:

    Esta cadeia copiada é a cadeia de ligação do dispositivo.

Nota

Este tutorial utiliza uma cadeia de ligação de dispositivo para autenticar e ligar ao Hub IoT para facilitar a configuração. Para cenários de produção, recomendamos que utilize a identidade do módulo e tire partido do AIS (IoT Identity Service) para aprovisionar dispositivos. Saiba mais

Configurar o Raspberry Pi

Fornecemos ficheiros de imagem base e atualização em Ativos na página Lançamentos do GitHub de Atualização de Dispositivos. O Tutorial_RaspberryPi.zip tem todos os ficheiros necessários para o tutorial. O ficheiro .wic é a imagem base na qual pode piscar para uma placa Raspberry Pi 3 B+. O ficheiro swUpdate(.swu), o script de swupdate personalizado e o manifesto são os ficheiros de atualização que importaria através da Atualização de Dispositivos para Hub IoT.

Esta imagem base utiliza uma compilação Yocto (baseada na versão 3.4.4) com:

  • SWUpdate que ativa a atualização de partição dupla com DU
  • Agente de Atualização de Dispositivos

Para saber mais sobre as camadas do Yocto utilizadas, consulte GitHub do Yocto de Atualização de Dispositivos.

Pode utilizar a sua ferramenta de flashing de SO favorita para instalar a imagem base da Atualização de Dispositivos (adu-base-image) no cartão SD que será utilizado no dispositivo Raspberry Pi 3 B+. Seguem-se as instruções para utilizar o bmaptool para piscar para o cartão SD.

Utilizar o bmaptool para mostrar o cartão SD

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

    sudo apt-get install bmap-tools
    
  2. Localize o caminho para o cartão SD em /dev. O caminho deve ter um aspeto semelhante /dev/sd* a ou /dev/mmcblk*. Pode utilizar o dmesg utilitário para ajudar a localizar o caminho correto.

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

    sudo umount /dev/<device>
    
  4. Certifique-se de que tem permissões de escrita no dispositivo.

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

  6. Mostrar o cartão SD.

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

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

Leia os termos de licença antes de utilizar o agente. A sua instalação e utilização constitui a sua aceitação destes termos. Se não concordar com os termos de licença, não utilize a Atualização de Dispositivos para Hub IoT agente.

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

  1. Certifique-se de que o Raspberry Pi 3 está ligado à rede.

  2. SSH no Raspberry Pi 3 com o seguinte comando na janela do PowerShell:

      ssh raspberrypi3 -l root
    
  3. Os ficheiros de configuração DU (du-config.json e du-diagnostics-config.json) têm de estar no dispositivo para que a Atualização do Dispositivo para Hub IoT seja configurada corretamente.

    1. Para criar ou abrir o du-config.json ficheiro para edição com:
      nano /adu/du-config.json
    
    1. Depois de executar o comando, deverá ver um editor aberto com o ficheiro. Se nunca tiver criado o ficheiro, este estará vazio. Agora, copie os conteúdos du-config.json abaixo e substitua as configurações necessárias para o seu dispositivo. Em seguida, substitua a cadeia de ligação de exemplo pelo do dispositivo que criou nos passos anteriores.

      du-config.json

    {
       "schemaVersion": "1.0",
       "aduShellTrustedUsers": [
          "adu",
          "do"
       ],
       "manufacturer": "contoso",
       "model": "virtual-vacuum-v2",
       "agents": [
          {
          "name": "main",
          "runas": "adu",
          "connectionSource": {
             "connectionType": "string",
             "connectionData": "HostName=example-connection-string.azure-devices.net;DeviceId=example-device;SharedAccessKey=M5oK/rOP12aB5678YMWv5vFWHFGJFwE8YU6u0uTnrmU=" 
          },
          "manufacturer": "contoso",
          "model": "virtual-vacuum-v2"
          }
       ]
    }  
    
    1. Depois de concluir as alterações, selecione Ctrl+X para sair do editor. Em seguida, introduza y para guardar as alterações.
  4. Agora, tem de criar o du-diagnostics-config.json ficheiro com comandos semelhantes.

    1. Comece por criar ou abrir o du-diagnostics-config.json ficheiro para edição com:
      nano /adu/du-diagnostics-config.json
    
    1. Copie os conteúdos du-diagnostics-config.json indicados abaixo e substitua todas as configurações que diferem da compilação predefinida. O ficheiro du-diagnostics-config.json de exemplo representa as localizações de registo predefinidas da Atualização de Dispositivos para Hub IoT. Só precisa de alterar estes valores predefinidos se a sua implementação for diferente.

    du-diagnostics-config.json

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
    1. Depois de concluir as alterações, selecione Ctrl+X para sair do editor. Em seguida, introduza y para guardar as alterações.
  5. Utilize o seguinte comando para mostrar os ficheiros localizados no /adu/ diretório. Deverá ver ambos os ficheiros de configuração.du-diagnostics-config.json para edição com:

      ls -la /adu/
    
  6. Reinicie o daemon do sistema de Atualização de Dispositivos para se certificar de que as configurações foram aplicadas. Utilize o seguinte comando no terminal com sessão iniciada no raspberrypi:

      systemctl start deviceupdate-agent
    
  7. Verifique se o agente está em direto com o seguinte comando:

      systemctl status deviceupdate-agent
    

    Deverá ver o estado como vivo e verde.

Ligar o dispositivo na Atualização de Dispositivos para Hub IoT

  1. No painel esquerdo, selecione Devices (Dispositivos).

  2. Selecione a ligação com o nome do dispositivo.

  3. Na parte superior da página, selecione Dispositivo Duplo.

  4. Na secção comunicada das propriedades do Dispositivo Duplo , 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 de firmware em execução no dispositivo. Depois de uma atualização ter sido aplicada a um dispositivo, a Atualização de Dispositivos utiliza o valor da propriedade AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId para representar a versão de firmware em execução no dispositivo.

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

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

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

Adicionar uma etiqueta do grupo Atualização de Dispositivos ao seu dispositivo

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

  2. No painel esquerdo, em Dispositivos, localize o seu dispositivo IoT e aceda ao dispositivo duplo ou módulo duplo.

  3. No módulo duplo do módulo do agente de Atualização de Dispositivos, elimine quaisquer valores de etiquetas de Atualização de Dispositivo existentes ao defini-los como nulos. Se estiver a utilizar a identidade do dispositivo com o agente de Atualização de Dispositivos, faça estas alterações no dispositivo duplo.

  4. Adicione um novo valor da etiqueta Atualização de Dispositivos, conforme mostrado:

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

    Captura de ecrã que mostra duplos com informações de etiqueta.

    Esta captura de ecrã mostra a secção onde a etiqueta tem de ser adicionada no duplo.

Importar a atualização

  1. Transfira o manifesto do tutorial de exemplo e a atualização de exemplo (ficheiro .swu) e o script A/B de exemplo doTutorial_RaspberryPi.zip em Recursos de Versão para o agente mais recente.

  2. Inicie sessão no portal do Azure e aceda ao hub IoT com a Atualização de Dispositivos. No painel esquerdo, em Gestão de Dispositivos Automática, selecione Atualizações.

  3. Selecione o separador Atualizações.

  4. Selecione + Importar Nova Atualização.

  5. Selecione + Selecionar a partir do contentor de armazenamento. Selecione uma conta existente ou crie uma nova conta com + Conta de armazenamento. Em seguida, selecione um contentor existente ou crie um novo contentor com + Contentor. Este contentor será utilizado para testar os ficheiros de atualização para importação.

    Nota

    Recomendamos que utilize um novo contentor sempre que importar uma atualização para evitar importar acidentalmente ficheiros de atualizações anteriores. Se não utilizar um novo contentor, certifique-se de que elimina quaisquer ficheiros do contentor existente antes de concluir este passo.

    Captura de ecrã que mostra Contas de armazenamento e Contentores.

  6. No contentor, selecione Carregar e aceda aos ficheiros que transferiu no passo 1. Depois de selecionar todos os ficheiros de atualização, selecione Carregar. Em seguida, selecione o botão Selecionar para regressar à página Importar atualização .

    Captura de ecrã que mostra a seleção de ficheiros carregados.

    Esta captura de ecrã mostra o passo de importação. Os nomes de ficheiro podem não corresponder aos utilizados no exemplo.

  7. Na página Importar atualização , reveja os ficheiros a importar. Em seguida, selecione Importar atualização para iniciar o processo de importação. Para o tutorial, importe o manifesto do tutorial de exemplo e a atualização de exemplo (ficheiro .swu) e o script A/B de exemplo transferido anteriormente.

    Captura de ecrã que mostra a atualização de Importação.

  8. O processo de importação é iniciado e o ecrã muda para a secção Histórico de importações . Quando a coluna Estado indicar que a importação foi concluída com êxito, selecione o cabeçalho Atualizações disponíveis . Deverá ver a atualização importada na lista agora.

    Captura de ecrã que mostra o estado da tarefa.

Para obter mais informações sobre o processo de importação, consulte Importar uma atualização para a Atualização de Dispositivos.

Ver grupos de dispositivos

A Atualização de Dispositivos utiliza grupos para organizar dispositivos. A Atualização de Dispositivos ordena automaticamente os dispositivos em grupos com base nas respetivas etiquetas atribuídas e propriedades de compatibilidade. Cada dispositivo pertence apenas a um grupo, mas os grupos podem ter vários subgrupos para ordenar diferentes classes de dispositivos.

  1. Aceda ao separador Grupos e Implementações na parte superior da página.

    Captura de ecrã a mostrar dispositivos desagrupar.

  2. Veja a lista de grupos e o gráfico de conformidade de atualizações. O gráfico de conformidade de atualizações mostra a contagem de dispositivos em vários estados de conformidade: Na atualização mais recente, novas atualizações disponíveis e Atualizações em curso. Saiba mais sobre a conformidade de atualizações.

    Captura de ecrã que mostra a vista de conformidade de atualizações.

  3. Deverá ver um grupo de dispositivos que contém o dispositivo simulado que configurou neste tutorial juntamente com quaisquer atualizações disponíveis para os dispositivos no novo grupo. Se existirem dispositivos que não cumpram os requisitos de classe de dispositivo do grupo, estes serão apresentados num grupo inválido correspondente. Para implementar a melhor atualização disponível para o novo grupo definido pelo utilizador a partir desta vista, selecione Implementar junto ao grupo.

Para obter mais informações sobre etiquetas e grupos, veja Gerir grupos de dispositivos.

Implementar a atualização

  1. Após a criação do grupo, deverá ver uma nova atualização disponível para o grupo de dispositivos com uma ligação para a atualização em Melhor atualização. Poderá ter de atualizar uma vez.

    Para obter mais informações sobre conformidade, veja Conformidade da Atualização de Dispositivos.

  2. Selecione o grupo de destino ao selecionar o nome do grupo. É direcionado para os detalhes do grupo em Noções básicas do grupo.

    Captura de ecrã que mostra os detalhes do Grupo.

  3. Para iniciar a implementação, aceda ao separador Implementação atual . Selecione a ligação implementar junto à atualização pretendida na secção Atualizações disponíveis . A melhor atualização disponível para um determinado grupo é indicada com o melhor realce.

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

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

    Dica

    Por predefinição, a data e hora de início são 24 horas a partir da hora atual. Certifique-se de que seleciona uma data e hora diferentes se quiser que a implementação comece mais cedo.

    Captura de ecrã que mostra a criação de uma implementação.

  5. Em Detalhes da implementação, o Estado muda para Ativo. A atualização implementada está marcada com (a implementar).

    Captura de ecrã que mostra a implementação como Ativa.

  6. Veja o gráfico de conformidade para ver se a atualização está agora em curso.

  7. Depois de o seu dispositivo ser atualizado com êxito, verá que o gráfico de conformidade e os detalhes de implementação são atualizados para refletir o mesmo.

    Captura de ecrã que mostra a atualização com êxito.

Monitorizar a implementação de atualizações

  1. Selecione o separador Histórico de implementações na parte superior da página.

    Captura de ecrã a mostrar o Histórico de implementações.

  2. Selecione a ligação de detalhes junto à implementação que criou.

    Captura de ecrã que mostra os detalhes da implementação.

  3. Selecione Atualizar para ver os detalhes de estado mais recentes.

Concluiu uma atualização de imagem ponto a ponto com êxito com a Atualização de Dispositivos para Hub IoT num dispositivo Raspberry Pi 3 B+.

Limpar os recursos

Quando já não for necessário, limpe a conta de Atualização de Dispositivos, a instância, o hub IoT e o dispositivo IoT.

Passos seguintes