Esercitazione: Aggiornamento del dispositivo per hub IoT di Azure usando l'immagine di riferimento Raspberry Pi 3 B+

Aggiornamento del dispositivo per hub IoT di Azure supporta aggiornamenti basati su immagini, basati su pacchetti e basati su script.

Gli aggiornamenti delle immagini offrono un livello di attendibilità superiore nello stato finale del dispositivo. In genere è più semplice replicare i risultati di un aggiornamento delle immagini tra un ambiente di preproduzione e un ambiente di produzione perché non comporta le stesse problematiche dei pacchetti e delle relative dipendenze. Grazie alla loro natura atomica, è anche possibile adottare facilmente un modello di failover A/B.

Questa esercitazione illustra i passaggi per completare un aggiornamento basato su immagini end-to-end usando Aggiornamento dispositivi per hub IoT in una scheda Raspberry Pi 3 B+.

In questa esercitazione si apprenderà come:

  • Scaricare un'immagine.
  • Aggiungere un tag al dispositivo IoT.
  • Importare un aggiornamento.
  • Distribuire un aggiornamento dell'immagine.
  • Monitorare la distribuzione degli aggiornamenti.

Nota

Gli aggiornamenti delle immagini in questa esercitazione sono stati convalidati nella scheda Raspberry Pi B3.

Prerequisiti

Se non è già stato fatto, creare un account e un'istanza di Aggiornamento dispositivi e configurare un hub IoT. Questa esercitazione richiede che il dispositivo sia connesso tramite connessione Ethernet.

Scaricare i file in Asset nella pagina delle versioni di GitHub di Aggiornamento dispositivi. Il Tutorial_RaspberryPi.zip include tutti i file necessari per l'esercitazione.

Creare un dispositivo in hub IoT e ottenere una stringa di connessione

Aggiungere ora il dispositivo a hub IoT. Dall'interno di hub IoT viene generata una stringa di connessione per il dispositivo.

  1. Dalla portale di Azure passare all'hub IoT.

  2. Nel riquadro a sinistra selezionare Dispositivi. Selezionare quindi Nuovo.

  3. In ID dispositivo immettere un nome per il dispositivo. Assicurarsi che la casella di controllo Chiavi generate automaticamente sia selezionata.

  4. Selezionare Salva. Nella pagina Dispositivi il dispositivo creato dovrebbe trovarsi nell'elenco.

  5. Ottenere la stringa di connessione del dispositivo passando alla visualizzazione del dispositivo, selezionare l'icona Copia accanto a Stringa di connessione primaria.

  6. Incollare i caratteri copiati da qualche parte per usarli successivamente nei passaggi seguenti:

    Questa stringa copiata è la stringa di connessione del dispositivo.

Nota

Questa esercitazione usa una stringa di connessione del dispositivo per autenticare e connettersi con il hub IoT per semplificare la configurazione. Per gli scenari di produzione, è consigliabile usare l'identità del modulo e sfruttare AIS(IoT Identity Service) per effettuare il provisioning dei dispositivi. Ulteriori informazioni

Installare Raspberry Pi

Sono disponibili file di immagine di base e di aggiornamento in Asset nella pagina Delle versioni di GitHub di Aggiornamento dispositivi. Il Tutorial_RaspberryPi.zip include tutti i file necessari per l'esercitazione. Il file wic è l'immagine di base su cui è possibile eseguire il flashing su una scheda Raspberry Pi 3 B+. Il file swUpdate(.swu), lo script swupdate personalizzato e il manifesto sono i file di aggiornamento da importare tramite Aggiornamento dispositivi per hub IoT.

Questa immagine di base usa una build Yocto (basata sulla versione 3.4.4) con:

  • SWUpdate che abilita l'aggiornamento a doppia partizione con DU
  • Agente di aggiornamento dispositivi

Per altre informazioni sui livelli Yocto usati, vedere Device Update Yocto GitHub..

È possibile usare lo strumento di flashing del sistema operativo preferito per installare l'immagine di base di Aggiornamento dispositivi (adu-base-image) nella scheda SD che verrà usata nel dispositivo Raspberry Pi 3 B+. Di seguito sono riportate le istruzioni per l'uso di bmaptool per eseguire il flashing sulla scheda SD.

Usare bmaptool per eseguire il flashing della scheda SD

  1. Installare l'utilità bmaptool , se non è già stato fatto.

    sudo apt-get install bmap-tools
    
  2. Individuare il percorso della scheda SD in /dev. Il percorso dovrebbe essere simile /dev/sd* a 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. Facoltativo: per un flashing più rapido, scaricare il file bimap e il file di immagine e inserirli nella stessa directory.

  6. Flash la scheda SD.

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

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

Leggere le condizioni di licenza prima di usare l'agente. L'installazione e l'utilizzo costituiscono l'accettazione di queste condizioni. Se non si accettano le condizioni di licenza, non usare l'aggiornamento del dispositivo per hub IoT agente.

Configurare l'agente di Aggiornamento dispositivi in Raspberry Pi

  1. Assicurarsi che Raspberry Pi 3 sia connesso alla rete.

  2. Eseguire SSH in Raspberry Pi 3 usando il comando seguente nella finestra di PowerShell:

      ssh raspberrypi3 -l root
    
  3. I file di configurazione DU (du-config.json e du-diagnostics-config.json) devono trovarsi nel dispositivo in modo che l'aggiornamento del dispositivo per hub IoT venga configurato correttamente.

    1. Per creare o aprire il file per la du-config.json modifica utilizzando:
      nano /adu/du-config.json
    
    1. Dopo aver eseguito il comando, verrà visualizzato un editor aperto con il file . Se il file non è mai stato creato, sarà vuoto. Copiare ora il contenuto du-config.json seguente e sostituire le configurazioni necessarie per il dispositivo. Sostituire quindi la stringa di connessione di esempio con quella per il dispositivo creato nei passaggi precedenti.

      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. Dopo aver completato le modifiche, selezionare Ctrl+X per uscire dall'editor. y Immettere quindi per salvare le modifiche.
  4. È ora necessario creare il du-diagnostics-config.json file usando comandi simili.

    1. Per iniziare, creare o aprire il file per la du-diagnostics-config.json modifica usando:
      nano /adu/du-diagnostics-config.json
    
    1. Copiare il contenuto du-diagnostics-config.json fornito di seguito e sostituire le configurazioni che differiscono dalla compilazione predefinita. Il file du-diagnostics-config.json di esempio rappresenta i percorsi di log predefiniti per Aggiornamento dispositivi per hub IoT. È necessario modificare questi valori predefiniti solo se l'implementazione è diversa.

    du-diagnostics-config.json

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
    1. Dopo aver completato le modifiche, selezionare Ctrl+X per uscire dall'editor. y Immettere quindi per salvare le modifiche.
  5. Usare il comando seguente per visualizzare i file che si trovano nella /adu/ directory . Verranno visualizzati entrambi i file di configurazione.du-diagnostics-config.json per la modifica usando:

      ls -la /adu/
    
  6. Riavviare il daemon di sistema Aggiornamento dispositivi per assicurarsi che le configurazioni siano state applicate. Usare il comando seguente all'interno del terminale connesso a raspberrypi:

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

      systemctl status deviceupdate-agent
    

    Lo stato dovrebbe essere visualizzato come attivo e verde.

Connettere il dispositivo in Aggiornamento dispositivi per hub IoT

  1. Nel riquadro a sinistra selezionare Dispositivi.

  2. Selezionare il collegamento con il nome del dispositivo.

  3. Nella parte superiore della pagina selezionare Dispositivo gemello.

  4. Nella sezione segnalata delle proprietà del dispositivo gemello cercare la versione del kernel Linux.

    Per un nuovo dispositivo, che non ha ricevuto un aggiornamento da Aggiornamento dispositivo, il valore DeviceManagement:DeviceInformation:1.swVersion rappresenta la versione del firmware in esecuzione nel dispositivo. Dopo l'applicazione di un aggiornamento a un dispositivo, Aggiornamento dispositivo usa il valore della proprietà AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId per rappresentare la versione del firmware in esecuzione nel dispositivo.

  5. I file di immagine di base e di aggiornamento hanno un numero di versione nel nome del file.

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

    Usare tale numero di versione nella sezione successiva "Importare l'aggiornamento".

Aggiungere un tag di gruppo di Aggiornamento dispositivi al dispositivo

  1. Nel portale di Azure passare all'hub IoT.

  2. Nel riquadro sinistro, in Dispositivi individuare il dispositivo IoT e passare al dispositivo gemello o al modulo gemello.

  3. Nel modulo gemello del modulo Agente aggiornamento dispositivi eliminare i valori dei tag device Update esistenti impostandoli su Null. Se si usa l'identità del dispositivo con l'agente di Aggiornamento dispositivi, apportare queste modifiche nel dispositivo gemello.

  4. Aggiungere un nuovo valore del tag Device Update, come illustrato di seguito:

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

    Screenshot che mostra il gemello con informazioni sui tag.

    Questo screenshot mostra la sezione in cui il tag deve essere aggiunto nel gemello.

Importare l'aggiornamento

  1. Scaricare il manifesto dell'esercitazione di esempio e l'aggiornamento di esempio (file con estensione swu) e lo script A/B di esempio da Tutorial_RaspberryPi.zip in Asset di versione per l'agente più recente.

  2. Accedere al portale di Azure e passare all'hub IoT con Aggiornamento dispositivi. Nel riquadro sinistro, in Gestione dispositivi automatico selezionare Aggiornamenti.

  3. Selezionare la scheda Aggiornamenti.

  4. Selezionare + Importa nuovo aggiornamento.

  5. Selezionare + Seleziona dal contenitore di archiviazione. Selezionare un account esistente o creare un nuovo account usando + Account di archiviazione. Selezionare quindi un contenitore esistente o creare un nuovo contenitore usando + Contenitore. Questo contenitore verrà usato per preparare i file di aggiornamento per l'importazione.

    Nota

    È consigliabile usare un nuovo contenitore ogni volta che si importa un aggiornamento per evitare di importare accidentalmente file dagli aggiornamenti precedenti. Se non si usa un nuovo contenitore, assicurarsi di eliminare tutti i file dal contenitore esistente prima di completare questo passaggio.

    Screenshot che mostra gli account di archiviazione e i contenitori.

  6. Nel contenitore selezionare Carica e passare ai file scaricati nel passaggio 1. Dopo aver selezionato tutti i file di aggiornamento, selezionare Carica. Selezionare quindi il pulsante Seleziona per tornare alla pagina Importa aggiornamento .

    Screenshot che mostra la selezione dei file caricati.

    Questo screenshot mostra il passaggio di importazione. I nomi di file potrebbero non corrispondere a quelli usati nell'esempio.

  7. Nella pagina Importa aggiornamento esaminare i file da importare. Selezionare quindi Importa aggiornamento per avviare il processo di importazione. Per l'esercitazione, importare il manifesto dell'esercitazione di esempio e l'aggiornamento di esempio (file con estensione swu) e lo script A/B di esempio scaricato in precedenza.

    Screenshot che mostra l'importazione dell'aggiornamento.

  8. Viene avviato il processo di importazione e la schermata passa alla sezione Cronologia importazione . Quando la colonna Stato indica che l'importazione è riuscita, selezionare l'intestazione Aggiornamenti disponibili . L'aggiornamento importato dovrebbe essere visualizzato nell'elenco.

    Screenshot che mostra lo stato del processo.

Per altre informazioni sul processo di importazione, vedere Importare un aggiornamento in Aggiornamento dispositivi.

Visualizzare i gruppi di dispositivi

Aggiornamento dispositivi usa i gruppi per organizzare i dispositivi. Aggiornamento dispositivo ordina automaticamente i dispositivi in gruppi in base ai tag assegnati e alle proprietà di compatibilità. Ogni dispositivo appartiene a un solo gruppo, ma i gruppi possono avere più sottogruppi per ordinare classi di dispositivi diverse.

  1. Passare alla scheda Gruppi e distribuzioni nella parte superiore della pagina.

    Screenshot che mostra i dispositivi non raggruppati.

  2. Visualizzare l'elenco dei gruppi e il grafico di conformità degli aggiornamenti. Il grafico conformità degli aggiornamenti mostra il numero di dispositivi in vari stati di conformità: in caso di aggiornamento più recente, nuovi aggiornamenti disponibili e Aggiornamenti in corso. Informazioni sulla conformità degli aggiornamenti.

    Screenshot che mostra la visualizzazione conformità degli aggiornamenti.

  3. Verrà visualizzato un gruppo di dispositivi che contiene il dispositivo simulato configurato in questa esercitazione insieme agli eventuali aggiornamenti disponibili per i dispositivi nel nuovo gruppo. Se sono presenti dispositivi che non soddisfano i requisiti della classe di dispositivo del gruppo, verranno visualizzati in un gruppo non valido corrispondente. Per distribuire il miglior aggiornamento disponibile al nuovo gruppo definito dall'utente da questa visualizzazione, selezionare Distribuisci accanto al gruppo.

Per altre informazioni su tag e gruppi, vedere Gestire i gruppi di dispositivi.

Distribuire l'aggiornamento

  1. Dopo aver creato il gruppo, verrà visualizzato un nuovo aggiornamento disponibile per il gruppo di dispositivi con un collegamento all'aggiornamento in Aggiornamento migliore. Potrebbe essere necessario eseguire l'aggiornamento una sola volta.

    Per altre informazioni sulla conformità, vedere Conformità di Aggiornamento dispositivi.

  2. Selezionare il gruppo di destinazione selezionando il nome del gruppo. I dettagli del gruppo vengono indirizzati in Nozioni di base sui gruppi.

    Screenshot che mostra i dettagli del gruppo.

  3. Per avviare la distribuzione, passare alla scheda Distribuzione corrente . Selezionare il collegamento Distribuisci accanto all'aggiornamento desiderato nella sezione Aggiornamenti disponibili . L'aggiornamento migliore disponibile per un determinato gruppo è indicato con un'evidenziazione migliore .

    Screenshot che mostra la selezione di un aggiornamento.

  4. Pianificare l'avvio della distribuzione immediatamente o in futuro. Quindi selezionare Crea.

    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 in precedenza.

    Screenshot che mostra la creazione di una distribuzione.

  5. In Dettagli distribuzionelo stato diventa Attivo. L'aggiornamento distribuito è contrassegnato con (distribuzione).

    Screenshot che mostra la distribuzione come Attiva.

  6. Visualizzare il grafico di conformità per verificare che l'aggiornamento sia in corso.

  7. Dopo che il dispositivo è stato aggiornato correttamente, si noterà che il grafico di conformità e i dettagli della distribuzione vengono aggiornati per riflettere lo stesso.

    Screenshot che mostra l'aggiornamento riuscito.

Monitorare la distribuzione degli aggiornamenti

  1. Selezionare la scheda Cronologia distribuzione nella parte superiore della pagina.

    Screenshot che mostra la cronologia della distribuzione.

  2. Selezionare il collegamento dettagli accanto alla distribuzione creata.

    Screenshot che mostra i dettagli della distribuzione.

  3. Selezionare Aggiorna per visualizzare i dettagli dello stato più recenti.

A questo punto è stato completato un aggiornamento dell'immagine end-to-end con Aggiornamento dispositivi per hub IoT in un dispositivo Raspberry Pi 3 B+.

Pulire le risorse

Quando non sono più necessari, pulire l'account, l'istanza, l'hub IoT e il dispositivo IoT.

Passaggi successivi