Dela via


Självstudie: Azure Device Update för IoT Hub med en Raspberry Pi-avbildning

Enhetsuppdatering för Azure IoT Hub stöder avbildningsbaserade, paketbaserade och skriptbaserade uppdateringar. Den här självstudien visar en avbildningsbaserad enhetsuppdatering från slutpunkt till slutpunkt för IoT Hub-uppdatering med hjälp av en Yocto-avbildning på en Raspberry Pi 3 B+-tavla.

Bilduppdateringar ger ett högt förtroende för enhetens sluttillstånd och utgör inte samma paket- och beroendehanteringsutmaningar som paket- eller skriptbaserade uppdateringar. Det är enklare att replikera resultatet av en avbildningsuppdatering mellan en förproduktions- och produktionsmiljö, eller att enkelt använda en A/B-redundansmodell.

I den här kursen får du:

  • Ladda ned och installera en avbildningsuppdatering.
  • Tilldela en tagg till din IoT-enhet.
  • Importera avbildningsuppdateringen.
  • Distribuera avbildningsuppdateringen.
  • Visa uppdateringsdistributionshistoriken.

Förutsättningar

Registrera enheten och hämta anslutningssträng

Lägg till enheten i enhetsregistret i IoT-hubben och hämta anslutningssträng IoT Hub genererar för enheten.

  1. I Azure Portal öppnar du den IoT Hub-sida som är associerad med enhetsuppdateringsinstansen.
  2. I det vänstra navigeringsfönstret väljer du Enhetshantering>Enheter.
  3. På sidan Enheter väljer du Lägg till enhet.
  4. Under Enhets-ID anger du ett namn för enheten. Kontrollera att kryssrutan Generera nycklar automatiskt är markerad.
  5. Välj Spara. Enheten visas i listan på sidan Enheter .
  6. På sidan Enheter väljer du den enhet som du registrerade.
  7. På enhetssidan väljer du ikonen Kopiera bredvid Anslutningssträng (primär nyckel). Spara den här enheten anslutningssträng som ska användas när du konfigurerar enhetsuppdateringsagenten.

Kommentar

I demonstrationssyfte använder den här självstudien en enhet anslutningssträng för att autentisera och ansluta till IoT-hubben. För produktionsscenarier är det bättre att använda modulidentitet och IoT Identity Service för att etablera enheter. Mer information finns i Enhetsuppdateringsagentetablering.

Konfigurera Raspberry Pi

Filen Tutorial_RaspberryPi3.zip innehåller alla filer som krävs för självstudien. Ladda ned filen från avsnittet Tillgångar i den senaste versionen på sidan Uppdateringar av GitHub-enheter och packa upp den.

I den extraherade mappen Tutorial_RaspberryPi3 är basavbildningen som du kan flasha på Raspberry Pi-tavlan adu-base-image-raspberrypi3.wic. Basavbildningen använder en Yocto-version baserat på versionen 3.4.4. Avbildningen har enhetsuppdateringsagenten och SWUpdate, som aktiverar uppdatering av dubbla partitioner för enhetsuppdatering. Mer information om Yocto-lagren finns i Skapa ett anpassat Linux-baserat system med enhetsuppdateringsagenten med yoctoprojektet.

De uppdateringsfiler som du importerar via Enhetsuppdatering är:

  • SWUpdate-fil adu-update-image-raspberrypi3-1.2.0.swu
  • Anpassat SWUpdate-skript example-a-b-update.sh
  • Manifest EDS-ADUClient.yocto-update.1.2.0.importmanifest.json

Använda bmaptool för att blinka SD-kortet

Viktigt!

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

Läs licensvillkoren innan du använder agenten. Agentinstallation och -användning utgör godkännande av dessa villkor. Om du inte godkänner licensvillkoren ska du inte använda enhetsuppdateringsagenten.

Använd ett os-flashverktyg för att installera basavbildningen Enhetsuppdatering på det SD-kort som du använder i Raspberry Pi-enheten. Följande instruktioner används bmaptool för att blinka till SD-kortet. <device> Ersätt platshållaren med enhetsnamnet och <path to image> platshållaren med sökvägen till den nedladdade bildfilen.

  1. bmap-tools Installera verktyget om du inte har det.

    sudo apt-get install bmap-tools
    
  2. Leta upp SD-kortsökvägen 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. Flasha SD-kortet.

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

    Dricks

    För snabbare blinkande kan du ladda ned bimap-filen och bildfilen och placera dem i samma katalog.

Konfigurera enhetsuppdateringsagenten på Raspberry Pi

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

  2. Secure Shell (SSH) i Raspberry Pi med hjälp av följande kommando i ett PowerShell-fönster:

    ssh raspberrypi3 -l root
    

Skapa konfigurationsfilerna för enhetsuppdatering

Konfigurationsfilerna för enhetsuppdatering du-config.json och du-diagnostics-config.json måste finnas på enheten. Skapa filerna genom att köra följande kommandon i terminalen som är inloggad på Raspberry Pi.

  1. Kör följande kommando för att skapa du-config.json-filen eller öppna den för redigering:

    nano /adu/du-config.json
    
  2. Redigeraren öppnar filen du-config.json . Om du skapar filen är den tom. Kopiera och klistra in följande kod i filen och ersätt exempelvärdena med nödvändiga konfigurationer för enheten. Ersätt exempelsträngen connectionData med enheten anslutningssträng du kopierade i enhetsregistreringssteget.

    {
       "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. Tryck på Ctrl+X för att avsluta redigeraren och ange y för att spara ändringarna.

  4. Skapa du-diagnostics-config.json-filen med liknande kommandon. Skapa och öppna filen:

    nano /adu/du-diagnostics-config.json
    
  5. Kopiera och klistra in följande du-diagnostics-config.json kod i filen. Värdena är standardloggplatserna för enhetsuppdatering och du behöver bara ändra dem om konfigurationen skiljer sig från standardinställningen.

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
  6. Tryck på Ctrl+X för att avsluta redigeraren och ange y för att spara ändringarna.

  7. Använd följande kommando för att visa filerna som finns i katalogen /adu/ . Du bör se båda konfigurationsfilerna.

    ls -la /adu/
    
  8. Använd följande kommando för att starta om enhetsuppdateringssystemets daemon och se till att konfigurationerna tillämpas.

    systemctl start deviceupdate-agent
    
  9. Kontrollera att agenten är live genom att köra följande kommando:

    systemctl status deviceupdate-agent
    

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

Anslut till enheten i IoT Hub och lägg till en grupptagg

  1. På sidan Azure Portal IoT Hub för enhetsuppdateringsinstansen väljer du Enheter för enhetshantering> i det vänstra navigeringsfältet.

  2. På sidan Enheter väljer du enhetens namn.

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

  4. På sidan Enhetstvilling går du till "reported" avsnittet enhetstvilling "properties" och letar efter Linux-kernelversionen för din enhet.

    För en ny enhet som inte har tagit emot en uppdatering från Enhetsuppdatering representerar egenskapsvärdet DeviceManagement:DeviceInformation:1.swVersion den version av inbyggd programvara som körs på enheten. När en uppdatering har tillämpats på enheten representerar egenskapsvärdet AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId den inbyggda programvaran.

    Filnamnen för bas- och uppdateringsavbildningen har formatet adu-image type-image-machine-version<>>< number.<><filnamnstillägget>. Observera de versionsnummer som ska användas när du importerar uppdateringen.

Lägga till en grupptagg

Enhetsuppdatering ordnar automatiskt enheter i grupper baserat på deras tilldelade taggar och kompatibilitetsegenskaper. Varje enhet kan bara tillhöra en grupp, men grupper kan ha flera undergrupper för att sortera olika enhetsklasser. Mer information om taggar och grupper finns i Hantera enhetsgrupper.

  1. I enhetstvillingen tar du bort alla befintliga taggvärden för enhetsuppdatering genom att ange dem till null och lägger sedan till följande nya grupptagg för enhetsuppdatering. Om du använder en modulidentitet med enhetsuppdateringsagenten lägger du till taggen i modulidentitetstvillingen i stället för enhetstvillingen.

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

    Följande skärmbild visar var i filen du vill lägga till taggen.

    Skärmbild som visar tvilling med tagginformation.

  2. Välj Spara.

Importera uppdateringen

  1. På sidan Azure Portal IoT Hub för enhetsuppdateringsinstansen väljer du Enhetshantering> Uppdateringar i det vänstra navigeringsfältet.

  2. På sidan Uppdateringar väljer du Importera en ny uppdatering.

  3. På sidan Importera uppdatering väljer du Välj från lagringscontainer.

  4. På sidan Lagringskonton väljer du ett befintligt lagringskonto eller skapar ett nytt konto genom att välja Lagringskonto.

  5. På sidan Containrar väljer du en befintlig container eller skapar en ny container genom att välja Container. Du använder containern för att mellanlagra uppdateringsfilerna för import.

    Skärmbild som visar lagringskonton och containrar.

    Dricks

    Om du vill undvika att oavsiktligt importera filer från tidigare uppdateringar använder du en ny container varje gång du importerar en uppdatering. Om du inte använder en ny container måste du ta bort alla filer från den befintliga containern.

  6. På containersidan väljer du Ladda upp. Dra och släpp eller bläddra till och välj följande uppdateringsfiler från den Tutorial_RaspberryPi3 mapp som du laddade ned:

    • adu-update-image-raspberrypi3-1.2.0.swu
    • example-a-b-update.sh
    • EDS-ADUClient.yocto-update.1.2.0.importmanifest.json
  7. Välj överför. När de har laddats upp visas filerna på containersidan.

  8. På containersidan granskar och väljer du de filer som ska importeras och väljer sedan Välj.

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

  9. På skärmen Importera uppdatering väljer du Importera uppdatering.

    Skärmbild som visar importuppdatering.

Importen börjar och skärmen växlar till skärmen Uppdateringar . När importen har slutförts visas den på fliken Uppdateringar . Mer information om importprocessen finns i Importera en uppdatering till Enhetsuppdatering.

Skärmbild som visar jobbstatus.

Välj enhetsgrupp

Du kan använda grupptaggen som du använde på enheten för att distribuera uppdateringen till enhetsgruppen. Välj fliken Grupper och distributioner överst på sidan Uppdateringar för att visa listan över grupper och distributioner och diagrammet för uppdateringsefterlevnad.

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. Mer information finns i Enhetsuppdateringsefterlevnad.

Under Gruppnamn visas en lista över alla enhetsgrupper för enheter som är anslutna till den här IoT-hubben och deras tillgängliga uppdateringar, med länkar för att distribuera uppdateringarna under Status. Alla enheter som inte uppfyller enhetsklasskraven för en grupp visas i en motsvarande ogiltig grupp. Mer information om taggar och grupper finns i Hantera enhetsgrupper.

Du bör se den enhetsgrupp som innehåller den enhet som du har konfigurerat i den här självstudien, tillsammans med tillgängliga uppdateringar för enheterna i gruppen. Du kan behöva uppdatera sidan. Om du vill distribuera den bästa tillgängliga uppdateringen till en grupp från den här vyn väljer du Distribuera bredvid gruppen.

Skärmbild som visar vyn uppdateringsefterlevnad.

Distribuera uppdateringen

  1. På sidan Gruppinformation väljer du fliken Aktuell distribution och väljer sedan Distribuera bredvid önskad uppdatering i avsnittet Tillgängliga uppdateringar . Den bästa tillgängliga uppdateringen för gruppen anges med en bästa markering.

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

  2. På sidan Skapa distribution schemalägger du distributionen så att den startar omedelbart eller i framtiden och väljer sedan Skapa.

    Skärmbild som visar hur du skapar en distribution.

    Dricks

    Som standard är startdatum och tid 24 timmar från den aktuella tiden. Se till att välja ett annat datum och en annan tid om du vill att distributionen ska börja tidigare.

  3. Under Distributionsinformation övergår Status till Aktiv. Under Tillgängliga uppdateringar markeras den valda uppdateringen med (distribution).

    Skärmbild som visar distributionen som Aktiv.

  4. På sidan Uppdateringar visar du kompatibilitetsdiagrammet för att se att uppdateringen pågår. När enheten har uppdaterats uppdateras efterlevnadsdiagrammet och distributionsinformationen för att återspegla den statusen.

    Skärmbild som visar att uppdateringen lyckades.

Visa uppdateringsdistributionshistorik

Så här visar du distributionshistorik:

  1. Välj fliken Distributionshistorik överst på sidan Gruppinformation och välj informationslänken bredvid distributionen som du skapade.

    Skärmbild som visar distributionshistorik.

  2. På sidan Distributionsinformation väljer du Uppdatera för att visa den senaste statusinformationen.

    Skärmbild som visar distributionsinformation.

Rensa resurser

När du inte längre behöver de resurser som du skapade för den här självstudien kan du ta bort dem.

  1. I Azure Portal navigerar du till resursgruppen som innehåller resurserna.
  2. Om du vill ta bort alla resurser i gruppen väljer du Ta bort resursgrupp.
  3. Om du bara vill ta bort några av resurserna använder du kryssrutorna för att markera resurserna och väljer sedan Ta bort.

Nästa steg