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.
  • Creare un gruppo di dispositivi.
  • 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.

Scaricare l'immagine

Sono disponibili immagini di esempio in Asset nella pagina delle versioni di GitHub di Aggiornamento dispositivi. Il file con estensione gz è l'immagine di base su cui è possibile eseguire il flashing su una scheda Raspberry Pi 3 B+. Il file swUpdate è l'aggiornamento da importare tramite Aggiornamento dispositivi per hub IoT.

Eseguire il flashing di una scheda SD con l'immagine

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+.

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.

Creare un dispositivo o un modulo 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. Dal portale di Azure avviare hub IoT.

  2. Creare un nuovo dispositivo.

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

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

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

  6. Ottenere la stringa di connessione del dispositivo usando una delle due opzioni seguenti:

    • Opzione 1: usare l'agente di Aggiornamento dispositivi con un'identità del modulo: nella stessa pagina Dispositivi selezionare Aggiungi identità modulo nella parte superiore. Creare un nuovo modulo Aggiornamento dispositivi con il nome IoTHubDeviceUpdate. Scegliere altre opzioni applicabili al caso d'uso e quindi selezionare Salva. Selezionare il modulo appena creato. Nella visualizzazione modulo selezionare l'icona Copia accanto a Stringa di connessione primaria.
    • Opzione 2: usare l'agente di Aggiornamento dispositivi con l'identità del dispositivo: nella visualizzazione dispositivo selezionare l'icona Copia accanto a Stringa di connessione primaria.
  7. Incollare i caratteri copiati da qualche parte per usarli successivamente nei passaggi seguenti:

    Questa stringa copiata è la stringa di connessione del dispositivo.

Preparare le configurazioni sul dispositivo per l'aggiornamento dei dispositivi per hub IoT

Due file di configurazione devono trovarsi nel dispositivo in modo che l'aggiornamento del dispositivo per hub IoT venga configurato correttamente. Il primo file è il du-config.json file , che deve esistere in /adu/du-config.json. Il secondo file è il du-diagnostics-config.json file , che deve esistere in /adu/du-diagnostics-config.json.

Di seguito sono riportati due esempi per i du-config.json file e du-diagnostics-config.json :

Esempio 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"
         }
      ]
   }  

Esempio du-diagnostics-config.json

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

Configurare l'agente di Aggiornamento dispositivi in Raspberry Pi

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

  2. Seguire queste istruzioni per aggiungere i dettagli di configurazione:

    1. Per prima cosa, connettersi tramite SSH al computer usando il comando seguente nella finestra di PowerShell:

         ssh raspberrypi3 -l root
      
    2. Creare o aprire il file per la du-config.json modifica usando:

         nano /adu/du-config.json
      
    3. 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 dell'esempio precedente du-config.json 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.

    4. Dopo aver completato le modifiche, selezionare CTRL+X per uscire dall'editor. Immettere quindi y per salvare le modifiche.

    5. È ora necessario creare il du-diagnostics-config.json file usando comandi simili. Per iniziare, creare o aprire il file per la du-diagnostics-config.json modifica usando:

         nano /adu/du-diagnostics-config.json
      
    6. Copiare il contenuto dell'esempio precedente du-diagnostics-config.json e sostituire le configurazioni che differiscono dalla build predefinita. Il file du-diagnostics-config.json di esempio rappresenta i percorsi di log predefiniti per Aggiornamento dispositivi per hub IoT. È necessario modificarli solo se l'implementazione è diversa.

    7. Dopo aver completato le modifiche, selezionare CTRL+X per uscire dall'editor. Immettere quindi y per salvare le modifiche.

    8. 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/
      
  3. 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 adu-agent
    
  4. Verificare che l'agente sia attivo usando il comando seguente:

       systemctl status adu-agent
    

    Lo stato dovrebbe tornare 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 se ci si connette direttamente a Aggiornamento dispositivi usando l'identità del dispositivo IoT. In caso contrario, selezionare il modulo creato e selezionarne il modulo 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 al dispositivo

  1. Accedere al portale di Azure e 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>"
                }
    

Importare l'aggiornamento

  1. Scaricare il manifesto dell'esercitazione di esempio (Tutorial Import Manifest_Pi.json) e l'aggiornamento di esempio (adu-update-image-raspberrypi3-0.6.5073.1.swu) da 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.

    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.

Altre informazioni su come importare gli aggiornamenti.

Creare un gruppo di aggiornamento

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

    Screenshot che mostra i dispositivi non raggruppati.

  2. Selezionare Aggiungi gruppo per creare un nuovo gruppo.

    Screenshot che mostra l'aggiunta del gruppo di dispositivi.

  3. Selezionare un tag hub IoT e classe Device dall'elenco. Selezionare quindi Crea gruppo.

    Screenshot che mostra la selezione dei tag.

  4. Dopo aver creato il gruppo, il grafico di conformità degli aggiornamenti e l'elenco dei gruppi vengono aggiornati. 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.

  5. Verrà visualizzato il gruppo appena creato e gli eventuali aggiornamenti disponibili per i dispositivi nel nuovo gruppo. Se sono presenti dispositivi che non soddisfano i requisiti della classe di dispositivo del gruppo, vengono 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.

Altre informazioni su come aggiungere tag e creare gruppi di aggiornamento.

Distribuire l'aggiornamento

  1. Dopo aver creato il gruppo, verrà visualizzato un nuovo aggiornamento disponibile per il gruppo di dispositivi. Un collegamento all'aggiornamento deve essere riportato in Aggiornamento migliore. Potrebbe essere necessario eseguire l'aggiornamento una sola volta. Altre informazioni sulla conformità degli aggiornamenti.

  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.

    Screenshot che mostra il pulsante Crea.

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

    Screenshot che mostra Deployment active(Distribuzione 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 sono stati 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 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 è più necessario, pulire l'account, l'istanza, l'hub IoT e il dispositivo IoT.

Passaggi successivi