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.

Avbildningsuppdateringar ger högre 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 den inte innebär samma utmaningar som paket och deras beroenden. På grund av deras atomära natur kan du också enkelt använda en A/B-redundansmodell.

Den här självstudien vägleder dig genom stegen för att slutföra en avbildningsbaserad uppdatering från slutpunkt till slutpunkt med hjälp av Enhetsuppdatering för IoT Hub på en Raspberry Pi 3 B+-tavla.

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

  • Ladda ned en avbildning.
  • Lägg till en tagg till din IoT-enhet.
  • Importera en uppdatering.
  • Distribuera en avbildningsuppdatering.
  • Övervaka uppdateringsdistributionen.

Anteckning

Avbildningsuppdateringar i den här självstudien har verifierats på Raspberry Pi B3-tavlan.

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. Den här självstudien kräver att enheten ansluts via Ethernet-anslutning.

Ladda ned filer i Assets (Tillgångar) på sidan Device Update GitHub releases (GitHub-versioner för enhetsuppdatering). Den Tutorial_RaspberryPi.zip innehåller alla filer som krävs för självstudien.

Skapa en enhet 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. Gå till din IoT-hubb från Azure Portal.

  2. Välj Enheter i det vänstra fönstret. Välj sedan Ny.

  3. Under Enhets-ID anger du ett namn på enheten. Kontrollera att kryssrutan Generera nycklar automatiskt är markerad.

  4. Välj Spara. På sidan Enheter ska enheten som du skapade finnas i listan.

  5. Hämta enhetens anslutningssträng genom att gå till enhetsvyn och välja ikonen Kopiera bredvid Primär anslutningssträng.

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

Anteckning

I den här självstudien används en enhetsanslutningssträng för att autentisera och ansluta till IoT Hub för att underlätta konfigurationen. I produktionsscenarier rekommenderar vi att du använder modulidentitet och använder AIS (IoT Identity Service) för att etablera enheter. Lära sig mer

Konfigurera Raspberry Pi

Vi tillhandahåller basavbildning och uppdateringsfiler i Tillgångarsidan GitHub-versioner för enhetsuppdatering. Den Tutorial_RaspberryPi.zip innehåller alla filer som krävs för självstudien. .wic-filen är basavbildningen som du kan flasha på en Raspberry Pi 3 B+-tavla. SwUpdate-filen (.swu), det anpassade swupdate-skriptet och manifestet är de uppdateringsfiler som du importerar via Enhetsuppdatering för IoT Hub.

Den här basavbildningen använder en Yocto-version (baserad på version 3.4.4) med:

  • SWUpdate som aktiverar uppdateringen av dubbla partitioner med DU
  • Enhetsuppdateringsagent

Mer information om de Yocto-lager som används finns i Enhetsuppdatering Yocto GitHub..

Du kan använda ditt favoritverktyg för OS-flashning för att installera basavbildningen enhetsuppdatering (adu-base-image) på SD-kortet som ska användas i Raspberry Pi 3 B+-enheten. Nedan visas anvisningarna för att använda bmaptool för att flasha till SD-kortet.

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: Om du vill flasha snabbare 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.

Konfigurera enhetsuppdateringsagenten på Raspberry Pi

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

  2. SSH till Raspberry Pi 3 med hjälp av följande kommando i PowerShell-fönstret:

      ssh raspberrypi3 -l root
    
  3. DU-konfigurationsfilerna (du-config.json och du-diagnostics-config.json) måste finnas på enheten så att Enhetsuppdatering för IoT Hub konfigureras korrekt.

    1. Så här skapar eller öppnar du-config.json du filen för redigering med hjälp av:
      nano /adu/du-config.json
    
    1. När du har kört kommandot bör du se en öppen redigerare med filen . Om du aldrig har skapat filen är den tom. Kopiera nu innehållet nedan du-config.json och ersätt de konfigurationer som krävs för din enhet. Ersätt sedan exempelanslutningssträngen med den för den enhet som du skapade i föregående steg.

      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. När du har slutfört ändringarna väljer du Ctrl+X för att avsluta redigeraren. Ange y sedan för att spara ändringarna.
  4. Nu måste du skapa du-diagnostics-config.json filen med liknande kommandon.

    1. 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
    
    1. Kopiera du-diagnostics-config.json-innehållet nedan och ersätt eventuella konfigurationer som skiljer sig från standardversionen. Exempelfilen du-diagnostics-config.json representerar standardloggplatserna för Enhetsuppdatering för IoT Hub. Du behöver bara ändra dessa standardvärden om implementeringen skiljer sig åt.

    du-diagnostics-config.json

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
    1. När du har slutfört ändringarna väljer du Ctrl+X för att avsluta redigeraren. Ange y sedan för att spara ändringarna.
  5. Använd följande kommando för att visa filerna som finns i /adu/ katalogen. Du bör se båda dina konfigurationsfiler.du-diagnostics-config.json-filer för redigering med hjälp av:

      ls -la /adu/
    
  6. 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 deviceupdate-agent
    
  7. Kontrollera att agenten är live med hjälp av följande kommando:

      systemctl status deviceupdate-agent
    

    Statusen bör visas som aktiv och grön.

Ansluta enheten i Enhetsuppdatering för IoT Hub

  1. Välj Enheter i det vänstra fönstret.

  2. Välj länken med enhetsnamnet.

  3. Längst upp på sidan väljer du Enhetstvilling.

  4. Leta efter Linux-kernelversionen under det rapporterade avsnittet i egenskaperna för enhetstvillingen.

    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 Enhetsuppdatering 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 det senare avsnittet "Importera uppdateringen".

Lägga till en grupptagg för enhetsuppdatering på enheten

  1. Gå till din IoT-hubb på Azure Portal.

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

  3. I modultvillingen för enhetsuppdateringsagentmodulen tar du bort alla befintliga taggvärden för enhetsuppdatering genom att ange dem till 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>"
                }
    

    Skärmbild som visar tvilling med tagginformation.

    Den här skärmbilden visar avsnittet där taggen måste läggas till i tvillingen.

Importera uppdateringen

  1. Ladda ned exempelmanifestet och exempeluppdateringen (.swu-fil) och A/B-exempelskriptet från Tutorial_RaspberryPi.zip under Release Assets (Versionstillgångar ) för den senaste agenten.

  2. Logga in på Azure Portal och gå till din IoT-hubb med Enhetsuppdatering. Välj Uppdateringar under Automatisk Enhetshantering i den vänstra rutan.

  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 uppdateringsfilerna för import.

    Anteckning

    Vi rekommenderar att du använder en ny container varje gång du importerar en uppdatering för att undvika att filer från tidigare uppdateringar importeras av misstag. 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 uppdateringsfiler väljer du Ladda upp. Välj sedan knappen Välj för att återgå till sidan Importera uppdatering .

    Skärmbild som visar val av uppladdade filer.

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

  7. Granska de filer som ska importeras på sidan Importera uppdatering . Välj sedan Importera uppdatering för att starta importen. I självstudien importerar du exempelmanifestet och exempeluppdateringen (.swu-fil) och A/B-exempelskriptet som laddades ned tidigare.

    Skärmbild som visar Import update (Importera uppdatering).

  8. Importen 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.

Mer information om importprocessen finns i Importera en uppdatering till enhetsuppdatering.

Visa enhetsgrupper

Enhetsuppdatering använder grupper för att organisera enheter. Enhetsuppdatering sorterar automatiskt enheter i grupper baserat på deras tilldelade taggar och kompatibilitetsegenskaper. Varje enhet tillhör bara en grupp, men grupper kan ha flera undergrupper för att sortera olika enhetsklasser.

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

    Skärmbild som visar ogrupperade enheter.

  2. Visa listan över grupper och diagrammet för uppdateringsefterlevnad. Diagrammet för uppdateringsefterlevnad visar antalet enheter i olika efterlevnadstillstånd: Vid den senaste uppdateringen, Nya uppdateringar är tillgängliga och Uppdateringar pågår. Läs mer om uppdateringsefterlevnad.

    Skärmbild som visar vyn uppdateringsefterlevnad.

  3. Du bör se en enhetsgrupp som innehåller den simulerade enhet som du konfigurerade i den här självstudien tillsammans med 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 från den här vyn väljer du Distribuera bredvid gruppen.

Mer information om taggar och grupper finns i Hantera enhetsgrupper.

Distribuera uppdateringen

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

    Mer information om efterlevnad finns i Enhetsuppdateringsefterlevnad.

  2. Välj målgruppen genom att välja gruppnamnet. Du dirigeras till gruppinformationen under Grundläggande om grupp.

    Skärmbild som visar gruppinformation.

  3. Om du vill starta distributionen går du till fliken Aktuell distribution. Välj distributionslänken bredvid önskad uppdatering i avsnittet Tillgängliga uppdateringar. Den bästa tillgängliga uppdateringen för en viss grupp betecknas 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.

    Tips

    Startdatum och - tid är som standard 24 timmar från din aktuella tid. Se till att välja ett annat datum och en annan tid om du vill att distributionen ska börja tidigare.

    Skärmbild som visar hur du skapar en distribution.

  5. Under Distributionsinformation blir Statusaktiv. Den distribuerade uppdateringen är markerad med (distribuerar).

    Skärmbild som visar distributionen som 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 uppdateras 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 informationslänken 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 Hub och IoT-enhet.

Nästa steg