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.
Gå till din IoT-hubb från Azure Portal.
Välj Enheter i det vänstra fönstret. Välj sedan Ny.
Under Enhets-ID anger du ett namn på enheten. Kontrollera att kryssrutan Generera nycklar automatiskt är markerad.
Välj Spara. På sidan Enheter ska enheten som du skapade finnas i listan.
Hämta enhetens anslutningssträng genom att gå till enhetsvyn och välja ikonen Kopiera bredvid Primär anslutningssträng.
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ångar på sidan 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
bmaptool
Installera verktyget om du inte redan har gjort det.sudo apt-get install bmap-tools
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ändadmesg
verktyget för att hitta rätt sökväg.Demontera alla monterade partitioner innan du blinkar.
sudo umount /dev/<device>
Kontrollera att du har skrivbehörighet till enheten.
sudo chmod a+rw /dev/<device>
Valfritt: Om du vill flasha snabbare laddar du ned bimap-filen och bildfilen och placerar dem i samma katalog.
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
Kontrollera att Raspberry Pi 3 är ansluten till nätverket.
SSH till Raspberry Pi 3 med hjälp av följande kommando i PowerShell-fönstret:
ssh raspberrypi3 -l root
DU-konfigurationsfilerna (du-config.json och du-diagnostics-config.json) måste finnas på enheten så att Enhetsuppdatering för IoT Hub konfigureras korrekt.
- Så här skapar eller öppnar
du-config.json
du filen för redigering med hjälp av:
nano /adu/du-config.json
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=<hub_name>.azure-devices.net;DeviceId=<device_id>;SharedAccessKey=<device_key>" }, "manufacturer": "contoso", "model": "virtual-vacuum-v2" } ] }
- När du har slutfört ändringarna väljer du
Ctrl+X
för att avsluta redigeraren. Angey
sedan för att spara ändringarna.
- Så här skapar eller öppnar
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
- 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 }
- När du har slutfört ändringarna väljer du
Ctrl+X
för att avsluta redigeraren. Angey
sedan för att spara ändringarna.
- Börja med att skapa eller öppna
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/
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
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
Välj Enheter i det vänstra fönstret.
Välj länken med enhetsnamnet.
Längst upp på sidan väljer du Enhetstvilling.
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.
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
Gå till din IoT-hubb på Azure Portal.
I den vänstra rutan, under Enheter, letar du upp din IoT-enhet och går till enhetstvillingen eller modultvillingen.
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.
Lägg till ett nytt taggvärde för enhetsuppdatering enligt följande:
"tags": { "ADUGroup": "<CustomTagValue>" }
Den här skärmbilden visar avsnittet där taggen måste läggas till i tvillingen.
Importera uppdateringen
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.
Logga in på Azure Portal och gå till din IoT-hubb med Enhetsuppdatering. Välj Uppdateringar under Automatisk Enhetshantering i den vänstra rutan.
Välj fliken Uppdateringar.
Välj + Importera ny uppdatering.
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.
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 .
Den här skärmbilden visar importsteget. Filnamnen kanske inte matchar de som används i exemplet.
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.
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.
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.
Gå till fliken Grupper och distributioner överst på sidan.
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.
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
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.
Välj målgruppen genom att välja gruppnamnet. Du dirigeras till gruppinformationen under Grundläggande om grupp.
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.
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.
Under Distributionsinformation blir Statusaktiv. Den distribuerade uppdateringen är markerad med (distribuerar).
Visa efterlevnadsdiagrammet för att se att uppdateringen pågår.
När enheten har uppdaterats ser du att efterlevnadsdiagrammet och distributionsinformationen uppdateras för att återspegla samma sak.
Övervaka uppdateringsdistributionen
Välj fliken Distributionshistorik överst på sidan.
Välj informationslänken bredvid den distribution som du skapade.
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.