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
Ett enhetsuppdateringskonto och en instans som konfigurerats med en IoT-hubb.
En Raspberry Pi 3 IoT-tavla som är ansluten via Ethernet till maskinvara som kan ladda ned och extrahera avbildningsfilerna och styra enheten.
Kommentar
Bilduppdateringar i den här självstudien har verifierats på en Raspberry Pi B3-tavla.
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.
- I Azure Portal öppnar du den IoT Hub-sida som är associerad med enhetsuppdateringsinstansen.
- I det vänstra navigeringsfönstret väljer du Enhetshantering>Enheter.
- På sidan Enheter väljer du Lägg till enhet.
- Under Enhets-ID anger du ett namn för enheten. Kontrollera att kryssrutan Generera nycklar automatiskt är markerad.
- Välj Spara. Enheten visas i listan på sidan Enheter .
- På sidan Enheter väljer du den enhet som du registrerade.
- 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.
bmap-tools
Installera verktyget om du inte har det.sudo apt-get install bmap-tools
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.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>
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
Kontrollera att Raspberry Pi är ansluten till nätverket.
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.
Kör följande kommando för att skapa du-config.json-filen eller öppna den för redigering:
nano /adu/du-config.json
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" } ] }
Tryck på Ctrl+X för att avsluta redigeraren och ange y för att spara ändringarna.
Skapa du-diagnostics-config.json-filen med liknande kommandon. Skapa och öppna filen:
nano /adu/du-diagnostics-config.json
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 }
Tryck på Ctrl+X för att avsluta redigeraren och ange y för att spara ändringarna.
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/
Använd följande kommando för att starta om enhetsuppdateringssystemets daemon och se till att konfigurationerna tillämpas.
systemctl start deviceupdate-agent
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
På sidan Enheter väljer du enhetens namn.
Längst upp på enhetssidan väljer du Enhetstvilling.
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.
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.
Välj Spara.
Importera uppdateringen
På sidan Azure Portal IoT Hub för enhetsuppdateringsinstansen väljer du Enhetshantering> Uppdateringar i det vänstra navigeringsfältet.
På sidan Uppdateringar väljer du Importera en ny uppdatering.
På sidan Importera uppdatering väljer du Välj från lagringscontainer.
På sidan Lagringskonton väljer du ett befintligt lagringskonto eller skapar ett nytt konto genom att välja Lagringskonto.
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.
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.
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
Välj överför. När de har laddats upp visas filerna på containersidan.
På containersidan granskar och väljer du de filer som ska importeras och väljer sedan Välj.
På skärmen Importera uppdatering väljer du Importera uppdatering.
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.
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.
Distribuera uppdateringen
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.
På sidan Skapa distribution schemalägger du distributionen så att den startar omedelbart eller i framtiden och väljer sedan Skapa.
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.
Under Distributionsinformation övergår Status till Aktiv. Under Tillgängliga uppdateringar markeras den valda uppdateringen med (distribution).
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.
Visa uppdateringsdistributionshistorik
Så här visar du distributionshistorik:
Välj fliken Distributionshistorik överst på sidan Gruppinformation och välj informationslänken bredvid distributionen som du skapade.
På sidan Distributionsinformation väljer du Uppdatera för att visa den senaste statusinformationen.
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.
- I Azure Portal navigerar du till resursgruppen som innehåller resurserna.
- Om du vill ta bort alla resurser i gruppen väljer du Ta bort resursgrupp.
- 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
- Enhetsuppdatering för IoT Hub med hjälp av en simulatoragent
- Enhetsuppdatering för IoT Hub med hjälp av en paketagent