Självstudie: Enhetsuppdatering för Azure IoT Hub med hjälp av raspberry Pi 3 B+-referensbilden

Enhetsuppdatering för Azure IoT Hub stöder avbildningsbaserade, paketbaserade och skriptbaserade uppdateringar.

Bilduppdateringar ger en högre nivå av förtroende för enhetens sluttillstånd. Det är vanligtvis enklare att replikera resultatet av en avbildningsuppdatering mellan en förproduktionsmiljö och en produktionsmiljö eftersom det inte innebär samma utmaningar som paket och deras beroenden. På grund av deras atomiska karaktär kan du också enkelt använda en A/B-redundansmodell.

I den här handledningen går vi igenom stegen för att slutföra en fullständig avbildningsbaserad uppdatering med hjälp av Enhetsuppdatering för IoT Hub på ett Raspberry Pi 3 B+-kort.

I den här självstudien får du lära dig att:

  • Ladda ned en bild.
  • Lägg till en tagg till din IoT-enhet.
  • Importera en uppdatering.
  • Skapa en enhetsgrupp.
  • Distribuera en bilduppdatering.
  • Övervaka uppdateringsdistributionen.

Anmärkning

Bilduppdateringar i den här handledningen har verifierats på Raspberry Pi B3-kortet.

Förutsättningar

Om du inte redan har gjort det skapar du ett konto och en instans för enhetsuppdatering och konfigurerar en IoT-hubb.

Ladda ned avbildningen

Vi tillhandahåller exempelbilder i AssetsGitHub-sidan för enhetsuppdateringsversioner. Filen .gz är basavbildningen som du kan flasha på en Raspberry Pi 3 B+-tavla. SwUpdate-filen är den uppdatering som du skulle importera via Enhetsuppdatering för IoT Hub.

Flasha ett SD-kort med bilden

Använd ditt favoritverktyg för operativsystem-flashning för att installera basavbilden för Enhetsuppdatering (adu-base-image) på SD-kortet som ska användas i Raspberry Pi 3 B+-enheten.

Använd bmaptool för att flasha SD-kortet

  1. bmaptool Installera verktyget om du inte redan har gjort det.

    sudo apt-get install bmap-tools
    
  2. Leta upp sökvägen för SD-kortet i /dev. Sökvägen bör se ut ungefär som /dev/sd* eller /dev/mmcblk*. Du kan använda dmesg verktyget för att hitta rätt sökväg.

  3. Demontera alla monterade partitioner innan du blinkar.

    sudo umount /dev/<device>
    
  4. Kontrollera att du har skrivbehörighet till enheten.

    sudo chmod a+rw /dev/<device>
    
  5. Valfritt: För snabbare blinkande laddar du ned bimap-filen och bildfilen och placerar dem i samma katalog.

  6. Flasha SD-kortet.

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

Enhetsuppdatering för Azure IoT Hub-programvara omfattas av följande licensvillkor:

Läs licensvillkoren innan du använder agenten. Din installation och användning utgör ditt godkännande av dessa villkor. Om du inte godkänner licensvillkoren ska du inte använda enhetsuppdateringen för IoT Hub-agenten.

Skapa en enhet eller modul i IoT Hub och hämta en anslutningssträng

Lägg nu till enheten i IoT Hub. Från IoT Hub genereras en anslutningssträng för enheten.

  1. Starta IoT Hub från Azure-portalen.

  2. Skapa en ny enhet.

  3. Välj Enheter i den vänstra rutan. Välj sedan Nytt.

  4. Under Enhets-ID anger du ett namn för enheten. Kontrollera att kryssrutan Generera nycklar automatiskt är markerad.

  5. Välj Spara. På sidan Enheter ska den enhet som du skapade finnas i listan.

  6. Hämta enhetsanslutningssträngen med något av två alternativ:

    • Alternativ 1: Använd enhetsuppdateringsagenten med en modulidentitet: Välj Lägg till modulidentitet högst upp på sidan Enheter. Skapa en ny enhetsuppdateringsmodul med namnet IoTHubDeviceUpdate. Välj andra alternativ när de gäller för ditt användningsfall och välj sedan Spara. Välj den nyligen skapade modulen. I modulvyn väljer du ikonen Kopiera bredvid Primär anslutningssträng.
    • Alternativ 2: Använd enhetsuppdateringsagenten med enhetsidentiteten: I enhetsvyn väljer du ikonen Kopiera bredvid Primär anslutningssträng.
  7. Klistra in de kopierade tecknen någonstans för senare användning i följande steg:

    Den här kopierade strängen är enhetens anslutningssträng.

Förbereda konfigurationer på enheten för enhetsuppdatering för IoT Hub

Två konfigurationsfiler måste finnas på enheten så att Enhetsuppdatering för IoT Hub konfigureras korrekt. Den första filen är du-config.json filen som måste finnas på /adu/du-config.json. Den andra filen är du-diagnostics-config.json filen som måste finnas på /adu/du-diagnostics-config.json.

Här är två exempel för du-config.json filerna och du-diagnostics-config.json :

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

Exempel du-diagnostics-config.json

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

Konfigurera enhetsuppdateringsagenten på Raspberry Pi

  1. Kontrollera att Raspberry Pi 3 är ansluten till nätverket.

  2. Följ de här anvisningarna för att lägga till konfigurationsinformationen:

    1. Först SSH in på datorn med hjälp av följande kommando i PowerShell-fönstret:

         ssh raspberrypi3 -l root
      
    2. Skapa eller öppna du-config.json filen för redigering med hjälp av:

         nano /adu/du-config.json
      
    3. När du har kört kommandot bör du se en öppen redigerare med filen. Om du aldrig har skapat filen blir den tom. Kopiera nu föregående exempel du-config.json innehåll och ersätt de konfigurationer som krävs för enheten. Ersätt sedan exempelanslutningssträngen med den för den enhet som du skapade i föregående steg.

    4. När du har slutfört ändringarna väljer du Ctrl+X för att avsluta redigeraren. Ange sedan y för att spara ändringarna.

    5. Nu måste du skapa du-diagnostics-config.json filen med liknande kommandon. Börja med att skapa eller öppna du-diagnostics-config.json filen för redigering med hjälp av:

         nano /adu/du-diagnostics-config.json
      
    6. Kopiera föregående exempel du-diagnostics-config.json innehåll och ersätt alla konfigurationer som skiljer sig från standardversionen. Exemplet du-diagnostics-config.json-filen representerar standardloggplatserna för Enhetsuppdatering för IoT Hub. Du behöver bara ändra dessa om implementeringen skiljer sig åt.

    7. När du har slutfört ändringarna väljer du Ctrl+X för att avsluta redigeraren. Ange sedan y för att spara ändringarna.

    8. Använd följande kommando för att visa filerna som finns i /adu/ katalogen. Du bör se båda konfigurationsfilerna files.du-diagnostics-config.json för redigering med hjälp av:

         ls -la /adu/
      
  3. Starta om enhetsuppdateringssystemets daemon för att kontrollera att konfigurationerna har tillämpats. Använd följande kommando i terminalen som är inloggad på raspberrypi:

       systemctl start adu-agent
    
  4. Kontrollera att agenten är live med hjälp av följande kommando:

       systemctl status adu-agent
    

    Du bör se statusen komma tillbaka som levande och grön.

Ansluta enheten i Enhetsuppdatering för IoT Hub

  1. Välj Enheter i den vänstra rutan.

  2. Välj länken med enhetsnamnet.

  3. Längst upp på sidan väljer du Enhetstvilling om du ansluter direkt till Enhetsuppdatering med hjälp av IoT-enhetsidentiteten. Annars väljer du den modul som du skapade och väljer modulens tvilling.

  4. Under det rapporterade avsnittet i egenskaperna för Enhetstvilling söker du efter Linux-kärnversionen. För en ny enhet, som inte har tagit emot en uppdatering från Enhetsuppdatering, representerar värdet DeviceManagement:DeviceInformation:1.swVersion den version av inbyggd programvara som körs på enheten. När en uppdatering har tillämpats på en enhet använder Device Update egenskapsvärdet AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId för att representera den version av inbyggd programvara som körs på enheten.

  5. Bas- och uppdateringsavbildningsfilerna har ett versionsnummer i filnamnet.

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

Använd versionsnumret i avsnittet "Importera uppdateringen" senare.

Lägga till en tagg på enheten

  1. Logga in på Azure-portalen och gå till IoT-hubben.

  2. I den vänstra rutan, under Enheter, hittar du din IoT-enhet och går till enhetstvillingen eller modultvillingen.

  3. Ta bort alla befintliga taggvärden för enhetsuppdatering i modultvillingen för enhetsuppdateringsagenten genom att ställa in dem på null. Om du använder enhetsidentiteten med enhetsuppdateringsagenten gör du dessa ändringar på enhetstvillingen.

  4. Lägg till ett nytt taggvärde för enhetsuppdatering enligt följande:

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

Importera uppdateringen

  1. Ladda ner exempeltutorialmanifestet (självstudieimport Manifest_Pi.json) och exempeluppdateringen (adu-update-image-raspberrypi3-0.6.5073.1.swu) från Release Assets för senaste agentversionen.

  2. Logga in på Azure-portalen och gå till din IoT-hubb med Enhetsuppdatering. I den vänstra rutan går du till Automatisk enhetshantering och väljer Uppdateringar.

  3. Välj fliken Uppdateringar .

  4. Välj + Importera ny uppdatering.

  5. Välj + Välj från lagringscontainer. Välj ett befintligt konto eller skapa ett nytt konto med hjälp av + Lagringskonto. Välj sedan en befintlig container eller skapa en ny container med hjälp av + Container. Den här containern används för att mellanlagra dina uppdateringsfiler för import.

    Anmärkning

    Vi rekommenderar att du använder en ny container varje gång du importerar en uppdatering för att undvika att oavsiktligt importera filer från tidigare uppdateringar. Om du inte använder en ny container måste du ta bort filer från den befintliga containern innan du slutför det här steget.

    Skärmbild som visar lagringskonton och containrar.

  6. I containern väljer du Ladda upp och går till de filer som du laddade ned i steg 1. När du har valt alla dina uppdateringsfiler väljer du Ladda upp. Välj sedan knappen Välj för att återgå till sidan Importera uppdatering .

    Skärmbild som visar hur du väljer uppladdade filer.

    Den här skärmbilden visar importsteget. Filnamn kanske inte matchar de som används i exemplet.

  7. På sidan Importera uppdatering granskar du de filer som ska importeras. Välj sedan Importera uppdatering för att starta importprocessen.

    Skärmbild som visar importuppdatering.

  8. Importprocessen börjar och skärmen växlar till avsnittet Importhistorik . När kolumnen Status anger att importen har slutförts väljer du rubriken Tillgängliga uppdateringar . Du bör nu se den importerade uppdateringen i listan.

    Skärmbild som visar jobbstatus.

Läs mer om hur du importerar uppdateringar.

Skapa en uppdateringsgrupp

  1. Gå till fliken Grupper och distributioner överst på sidan.

    Skärmbild som visar ogrupperade enheter.

  2. Välj Lägg till grupp för att skapa en ny grupp.

    Skärmbild som visar tillägg av enhetsgrupp.

  3. Välj en IoT Hub-tagg och enhetsklass i listan. Välj sedan Skapa grupp.

    Skärmbild som visar val av tagg.

  4. När gruppen har skapats uppdateras listan med uppdateringskompatibilitetsdiagram och grupper. Diagrammet för uppdateringsefterlevnad visar antalet enheter i olika efterlevnadstillstånd: Vid den senaste uppdateringen, Nya uppdateringar som är tillgängliga och Uppdateringar pågår. Läs mer om uppdateringsefterlevnad.

    Skärmbild som visar vyn för uppdateringsefterlevnad.

  5. Du bör se din nyligen skapade grupp och eventuella tillgängliga uppdateringar för enheterna i den nya gruppen. Om det finns enheter som inte uppfyller enhetens klasskrav för gruppen visas de i en motsvarande ogiltig grupp. Om du vill distribuera den bästa tillgängliga uppdateringen till den nya användardefinierade gruppen i den här vyn väljer du Distribuera bredvid gruppen.

Läs mer om hur du lägger till taggar och skapar uppdateringsgrupper.

Distribuera uppdateringen

  1. När gruppen har skapats bör du se en ny uppdatering som är tillgänglig för din enhetsgrupp. En länk till uppdateringen ska vara under Bästa uppdatering. Du kan behöva uppdatera en gång. Läs mer om uppdateringsefterlevnad.

  2. Välj målgruppen genom att välja gruppnamnet. Du dirigeras till gruppinformationen under Grunderna för grupp.

    Skärmbild som visar gruppinformation.

  3. Starta distributionen genom att gå till fliken Aktuell distribution . Välj distributionslänken bredvid önskad uppdatering från avsnittet Tillgängliga uppdateringar . Den bästa tillgängliga uppdateringen för en viss grupp anges med en bästa markering.

    Skärmbild som visar hur du väljer en uppdatering.

  4. Schemalägg distributionen så att den startar omedelbart eller i framtiden. Välj sedan Skapa.

    Skärmbild som visar knappen Skapa.

  5. Under Distributionsinformation övergår Status till Aktiv. Den distribuerade uppdateringen är markerad med (distribution).

    Skärmbild som visar att distributionen är aktiv.

  6. Visa efterlevnadsdiagrammet för att se att uppdateringen pågår.

  7. När enheten har uppdaterats ser du att efterlevnadsdiagrammet och distributionsinformationen har uppdaterats för att återspegla samma sak.

    Skärmbild som visar att uppdateringen lyckades.

Övervaka uppdateringsdistributionen

  1. Välj fliken Distributionshistorik överst på sidan.

    Skärmbild som visar distributionshistorik.

  2. Välj Information bredvid den distribution som du skapade.

    Skärmbild som visar distributionsinformation.

  3. Välj Uppdatera för att visa den senaste statusinformationen.

Nu har du slutfört en lyckad avbildningsuppdatering från slutpunkt till slutpunkt med hjälp av Enhetsuppdatering för IoT Hub på en Raspberry Pi 3 B+-enhet.

Rensa resurser

När det inte längre behövs rensar du ditt enhetsuppdateringskonto, instans, IoT-hubb och IoT-enhet.

Nästa steg