Condividi tramite


Esercitazione: Aggiornamento dei dispositivi di Azure per hub IoT usando un'immagine Raspberry Pi

Aggiornamento dei dispositivi per hub IoT di Azure supporta gli aggiornamenti basati su immagini, basati su pacchetti e basati su script. Questa esercitazione illustra un aggiornamento dei dispositivi basato su immagini end-to-end per hub IoT aggiornamento usando un'immagine Yocto su una scheda Raspberry Pi 3 B+.

Gli aggiornamenti delle immagini offrono un elevato livello di attendibilità nello stato finale del dispositivo e non presentano gli stessi problemi di gestione dei pacchetti e delle dipendenze degli aggiornamenti basati su pacchetti o script. È più facile replicare i risultati di un aggiornamento delle immagini tra una preproduzione e un ambiente di produzione o adottare facilmente un modello di failover A/B.

In questa esercitazione:

  • Scaricare e installare un aggiornamento delle immagini.
  • Assegnare un tag al dispositivo IoT.
  • Importare l'aggiornamento dell'immagine.
  • Distribuire l'aggiornamento dell'immagine.
  • Visualizzare la cronologia di distribuzione degli aggiornamenti.

Prerequisiti

Registrare il dispositivo e ottenere il stringa di connessione

Aggiungere il dispositivo al registro dei dispositivi nell'hub IoT e ottenere il stringa di connessione hub IoT generato per il dispositivo.

  1. Nella portale di Azure aprire la pagina dell'hub IoT associata all'istanza di Aggiornamento dispositivi.
  2. Nel riquadro di spostamento sinistro selezionare Dispositivi di gestione>dei dispositivi.
  3. Nella pagina Dispositivi selezionare Aggiungi dispositivo.
  4. In ID dispositivo immettere un nome per il dispositivo. Assicurarsi che la casella di controllo Genera automaticamente chiavi sia selezionata.
  5. Seleziona Salva. Il dispositivo viene visualizzato nell'elenco nella pagina Dispositivi .
  6. Nella pagina Dispositivi selezionare il dispositivo registrato.
  7. Nella pagina del dispositivo selezionare l'icona Copia accanto a Stringa di connessione (chiave primaria). Salvare questo dispositivo stringa di connessione da usare quando si configura l'agente di Aggiornamento dispositivi.

Nota

A scopo dimostrativo, questa esercitazione usa un dispositivo stringa di connessione per autenticarsi e connettersi all'hub IoT. Per gli scenari di produzione, è preferibile usare l'identità del modulo e il servizio di identità IoT per effettuare il provisioning dei dispositivi. Per altre informazioni, vedere Provisioning dell'agente di Aggiornamento dispositivi.

Installare Raspberry Pi

Il file Tutorial_RaspberryPi3.zip contiene tutti i file necessari per l'esercitazione. Scaricare il file dalla sezione Assets della versione più recente nella pagina GitHub Device Update Releases e decomprimerlo.

Nella cartella Tutorial_RaspberryPi3 estratta, l'immagine di base che è possibile lampeggiare sulla scheda Raspberry Pi è adu-base-image-raspberrypi3.wic. L'immagine di base usa una build Yocto basata sulla versione 3.4.4. L'immagine include l'agente di Aggiornamento dispositivi e SWUpdate, che abilita l'aggiornamento della doppia partizione di Aggiornamento dispositivi. Per altre informazioni sui livelli Yocto, vedere Creare un sistema personalizzato basato su Linux con l'agente di Aggiornamento dispositivi usando il progetto Yocto.

I file di aggiornamento importati tramite Aggiornamento dispositivi sono:

  • File SWUpdate adu-update-image-raspberrypi3-1.2.0.swu
  • Script SWUpdate personalizzato example-a-b-update.sh
  • EDS-ADUClient.yocto-update.1.2.0.importmanifest.json manifesto

Usare bmaptool per eseguire il flashing della scheda SD

Importante

L'aggiornamento dei dispositivi di Azure per hub IoT software è soggetto alle condizioni di licenza seguenti:

Leggere le condizioni di licenza prima di usare l'agente. L'installazione e l'utilizzo dell'agente costituiscono l'accettazione di queste condizioni. Se non si accettano le condizioni di licenza, non usare l'agente di Aggiornamento dispositivi.

Usare uno strumento di flashing del sistema operativo per installare l'immagine di base di Aggiornamento dispositivi nella scheda SD usata nel dispositivo Raspberry Pi. Le istruzioni seguenti usano bmaptool per eseguire il flashing della scheda SD. Sostituire il segnaposto con il <device> nome del dispositivo e il <path to image> segnaposto con il percorso del file di immagine scaricato.

  1. Installare l'utilità bmap-tools se non è disponibile.

    sudo apt-get install bmap-tools
    
  2. Individuare il percorso della scheda SD in /dev. Il percorso dovrebbe essere simile a /dev/sd* o /dev/mmcblk*. È possibile usare l'utilità dmesg per individuare il percorso corretto.

  3. Smontare tutte le partizioni montate prima di lampeggiare.

    sudo umount /dev/<device>
    
  4. Assicurarsi di disporre delle autorizzazioni di scrittura per il dispositivo.

    sudo chmod a+rw /dev/<device>
    
  5. Eseguire il flashing della scheda SD.

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

    Suggerimento

    Per velocizzare il flashing, è possibile scaricare il file bimap e il file di immagine e inserirli nella stessa directory.

Configurare l'agente di Aggiornamento dispositivi in Raspberry Pi

  1. Assicurarsi che Raspberry Pi sia connesso alla rete.

  2. Proteggere la shell (SSH) in Raspberry Pi usando il comando seguente in una finestra di PowerShell:

    ssh raspberrypi3 -l root
    

Creare i file di configurazione di Aggiornamento dispositivi

I file di configurazione di Aggiornamento dispositivi du-config.json e du-diagnostics-config.json devono trovarsi nel dispositivo. Per creare i file, eseguire i comandi seguenti nel terminale connesso a Raspberry Pi.

  1. Per creare il file du-config.json o aprirlo per la modifica, eseguire il comando seguente:

    nano /adu/du-config.json
    
  2. L'editor apre il file du-config.json . Se si sta creando il file, è vuoto. Copiare e incollare il codice seguente nel file, sostituendo i valori di esempio con le configurazioni necessarie per il dispositivo. Sostituire la stringa di esempio connectionData con il dispositivo stringa di connessione copiato nel passaggio di registrazione del dispositivo.

    {
       "schemaVersion": "1.0",
       "aduShellTrustedUsers": [
          "adu",
          "do"
       ],
       "manufacturer": "contoso",
       "model": "virtual-vacuum-v2",
       "agents": [
          {
          "name": "main",
          "runas": "adu",
          "connectionSource": {
             "connectionType": "string",
             "connectionData": "HostName=<hub_name>.azure-devices.net;DeviceId=<device_id>;SharedAccessKey=<device_key>" 
          },
          "manufacturer": "contoso",
          "model": "virtual-vacuum-v2"
          }
       ]
    }  
    
  3. Premere CTRL+X per uscire dall'editor e immettere y per salvare le modifiche.

  4. Creare il file du-diagnostics-config.json usando comandi simili. Creare e aprire il file:

    nano /adu/du-diagnostics-config.json
    
  5. Copiare e incollare il codice du-diagnostics-config.json seguente nel file. I valori sono i percorsi predefiniti del log di Aggiornamento dispositivi ed è necessario modificarli solo se la configurazione è diversa da quella predefinita.

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
  6. Premere CTRL+X per uscire dall'editor e immettere y per salvare le modifiche.

  7. Usare il comando seguente per visualizzare i file che si trovano nella directory /adu/ . Verranno visualizzati entrambi i file di configurazione.

    ls -la /adu/
    
  8. Usare il comando seguente per riavviare il daemon di sistema di Aggiornamento dispositivi e assicurarsi che vengano applicate le configurazioni.

    systemctl start deviceupdate-agent
    
  9. Verificare che l'agente sia attivo eseguendo il comando seguente:

    systemctl status deviceupdate-agent
    

    Lo stato dovrebbe essere attivo e verde.

Connettersi al dispositivo in hub IoT e aggiungere un tag di gruppo

  1. Nella pagina portale di Azure hub IoT per l'istanza di Aggiornamento dispositivi selezionare Dispositivi di gestione>dei dispositivi nel riquadro di spostamento a sinistra.

  2. Nella pagina Dispositivi selezionare il nome del dispositivo.

  3. Nella parte superiore della pagina del dispositivo selezionare Dispositivo gemello.

  4. Nella pagina Dispositivo gemello , nella "reported" sezione del dispositivo gemello "properties" cercare la versione del kernel Linux per il dispositivo.

    Per un nuovo dispositivo che non ha ricevuto un aggiornamento da Aggiornamento del dispositivo, il valore della proprietà DeviceManagement:DeviceInformation:1.swVersion rappresenta la versione del firmware in esecuzione nel dispositivo. Dopo aver applicato un aggiornamento, il valore della proprietà AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId rappresenta la versione del firmware.

    I nomi dei file di immagine di base e di aggiornamento hanno il formato adu-image type-image-machine-version<>>< number.<><estensione>. Si notino i numeri di versione da usare quando si importa l'aggiornamento.

Aggiungere un tag di gruppo

Aggiornamento dispositivi organizza automaticamente i dispositivi in gruppi in base ai tag assegnati e alle proprietà di compatibilità. Ogni dispositivo può appartenere a un solo gruppo, ma i gruppi possono avere più sottogruppi per ordinare classi di dispositivi diverse. Per altre informazioni su tag e gruppi, vedere Gestire i gruppi di dispositivi.

  1. Nel dispositivo gemello eliminare i valori dei tag di Aggiornamento dispositivi esistenti impostandoli su Null e quindi aggiungere il nuovo tag del gruppo aggiornamento dispositivi seguente. Se si usa un'identità del modulo con l'agente di Aggiornamento dispositivi, aggiungere il tag in Module Identity Twin anziché nel dispositivo gemello.

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

    Lo screenshot seguente mostra dove nel file aggiungere il tag.

    Screenshot che mostra il gemello con le informazioni sui tag.

  2. Seleziona Salva.

Importare l'aggiornamento

  1. Nella pagina portale di Azure hub IoT per l'istanza di Aggiornamento dispositivi selezionare Gestione dispositivi> Aggiornamenti nel riquadro di spostamento a sinistra.

  2. Nella pagina Aggiornamenti selezionare Importa un nuovo aggiornamento.

  3. Nella pagina Importa aggiornamento selezionare Seleziona dal contenitore di archiviazione.

  4. Nella pagina Account di archiviazione selezionare un account di archiviazione esistente o crearne uno nuovo selezionando Account di archiviazione.

  5. Nella pagina Contenitori selezionare un contenitore esistente o creare un nuovo contenitore selezionando Contenitore. Usare il contenitore per preparare i file di aggiornamento per l'importazione.

    Screenshot che mostra gli account di archiviazione e i contenitori.

    Suggerimento

    Per evitare di importare accidentalmente file dagli aggiornamenti precedenti, usare un nuovo contenitore ogni volta che si importa un aggiornamento. Se non si usa un nuovo contenitore, assicurarsi di eliminare eventuali file dal contenitore esistente.

  6. Nella pagina del contenitore selezionare Carica. Trascinare e rilasciare o selezionare e selezionare i file di aggiornamento seguenti dalla cartella Tutorial_RaspberryPi3 scaricata:

    • adu-update-image-raspberrypi3-1.2.0.swu
    • example-a-b-update.sh
    • EDS-ADUClient.yocto-update.1.2.0.importmanifest.json
  7. Selezionare Carica. Dopo il caricamento, i file vengono visualizzati nella pagina del contenitore.

  8. Nella pagina contenitore esaminare e selezionare i file da importare e quindi selezionare Seleziona.

    Screenshot che mostra la selezione dei file caricati.

  9. Nella schermata Importa aggiornamento selezionare Importa aggiornamento.

    Screenshot che mostra l'importazione dell'aggiornamento.

Il processo di importazione inizia e la schermata passa alla schermata Aggiornamenti . Dopo che l'importazione ha esito positivo, viene visualizzata nella scheda Aggiornamenti . Per altre informazioni sul processo di importazione, vedere Importare un aggiornamento in Aggiornamento dispositivi.

Screenshot che mostra lo stato del processo.

Selezionare il gruppo di dispositivi

È possibile usare il tag di gruppo applicato al dispositivo per distribuire l'aggiornamento al gruppo di dispositivi. Selezionare la scheda Gruppi e distribuzioni nella parte superiore della pagina Aggiornamenti per visualizzare l'elenco di gruppi e distribuzioni e il grafico di conformità degli aggiornamenti.

Il grafico conformità degli aggiornamenti mostra il numero di dispositivi in vari stati di conformità: aggiornamento più recente, Nuovi aggiornamenti disponibili e Aggiornamenti in corso. Per altre informazioni, vedere Conformità degli aggiornamenti dei dispositivi.

In Nome gruppo viene visualizzato un elenco di tutti i gruppi di dispositivi per i dispositivi connessi a questo hub IoT e i relativi aggiornamenti disponibili, con collegamenti per distribuire gli aggiornamenti in Stato. Tutti i dispositivi che non soddisfano i requisiti della classe di dispositivo di un gruppo vengono visualizzati in un gruppo non valido corrispondente. Per altre informazioni su tag e gruppi, vedere Gestire i gruppi di dispositivi.

Verrà visualizzato il gruppo di dispositivi che contiene il dispositivo configurato in questa esercitazione, insieme agli aggiornamenti disponibili per i dispositivi nel gruppo. Potrebbe essere necessario aggiornare la pagina. Per distribuire l'aggiornamento migliore disponibile in un gruppo da questa visualizzazione, selezionare Distribuisci accanto al gruppo.

Screenshot che mostra la visualizzazione conformità degli aggiornamenti.

Distribuire l'aggiornamento

  1. Nella pagina Dettagli gruppo selezionare la scheda Distribuzione corrente e quindi selezionare Distribuisci accanto all'aggiornamento desiderato nella sezione Aggiornamenti disponibili. Il miglior aggiornamento disponibile per il gruppo è indicato con un'evidenziazione migliore .

    Screenshot che mostra la selezione di un aggiornamento.

  2. Nella pagina Crea distribuzione pianificare l'avvio immediato o futuro della distribuzione e quindi selezionare Crea.

    Screenshot che mostra la creazione di una distribuzione.

    Suggerimento

    Per impostazione predefinita, la data e l'ora di inizio sono 24 ore dall'ora corrente. Assicurarsi di selezionare una data e un'ora diverse se si vuole che la distribuzione inizi prima.

  3. In Dettagli distribuzione lo stato diventa Attivo. In Aggiornamenti disponibili l'aggiornamento selezionato è contrassegnato con (distribuzione).

    Screenshot che mostra la distribuzione come Attiva.

  4. Nella pagina Aggiornamenti visualizzare il grafico di conformità per verificare che l'aggiornamento sia in corso. Dopo l'aggiornamento del dispositivo, il grafico di conformità e i dettagli della distribuzione vengono aggiornati per riflettere tale stato.

    Screenshot che mostra l'aggiornamento riuscito.

Visualizzare la cronologia di distribuzione degli aggiornamenti

Per visualizzare la cronologia di distribuzione:

  1. Selezionare la scheda Cronologia distribuzione nella parte superiore della pagina Dettagli gruppo e selezionare il collegamento dettagli accanto alla distribuzione creata.

    Screenshot che mostra la cronologia della distribuzione.

  2. Nella pagina Dettagli distribuzione selezionare Aggiorna per visualizzare i dettagli dello stato più recenti.

    Screenshot che mostra i dettagli della distribuzione.

Pulire le risorse

Quando non sono più necessarie le risorse create per questa esercitazione, è possibile eliminarle.

  1. Nella portale di Azure passare al gruppo di risorse che contiene le risorse.
  2. Per eliminare tutte le risorse nel gruppo, selezionare Elimina gruppo di risorse.
  3. Per eliminare solo alcune delle risorse, usare le caselle di controllo per selezionare le risorse e quindi selezionare Elimina.

Passaggi successivi