Zelfstudie: Apparaatupdate voor Azure IoT Hub met behulp van de Raspberry Pi 3 B+-referentieafbeelding
Device Update voor Azure IoT Hub ondersteunt updates op basis van installatiekopieën, pakketten en scripts.
Installatiekopieënupdates bieden een hoger vertrouwensniveau in de eindstatus van het apparaat. Het is doorgaans gemakkelijker om de resultaten van een installatiekopie-update te repliceren tussen een preproductieomgeving en een productieomgeving, omdat deze niet dezelfde uitdagingen vormt als pakketten en hun afhankelijkheden. Vanwege hun atomische aard kunt u ook eenvoudig een A/B-failovermodel gebruiken.
In deze zelfstudie wordt u begeleid bij de stappen voor het voltooien van een end-to-end update op basis van afbeeldingen met behulp van Device Update voor IoT Hub op een Raspberry Pi 3 B+-bord.
In deze zelfstudie leert u het volgende:
- Een afbeelding downloaden.
- Voeg een tag toe aan uw IoT-apparaat.
- Een update importeren.
- Maak een apparaatgroep.
- Een installatiekopieënupdate implementeren.
- Bewaak de update-implementatie.
Notitie
Afbeeldingsupdates in deze zelfstudie zijn gevalideerd op het Raspberry Pi B3-bord.
Vereisten
Als u dit nog niet hebt gedaan, maakt u een Device Update-account en -exemplaar en configureert u een IoT-hub.
De afbeelding downloaden
We bieden voorbeeldafbeeldingen in Assets op de pagina GitHub-releases voor apparaatupdates. Het .gz-bestand is de basisafbeelding die u kunt flashen op een Raspberry Pi 3 B+ bord. Het swUpdate-bestand is de update die u importeert via Device Update voor IoT Hub.
Een SD-kaart flashen met de afbeelding
Gebruik uw favoriete hulpprogramma voor flashing van het besturingssysteem om de Device Update-basisinstallatiekopieën (adu-base-image) te installeren op de SD-kaart die wordt gebruikt in het Raspberry Pi 3 B+-apparaat.
Gebruik bmaptool om de SD-kaart te flashen
Installeer het
bmaptool
hulpprogramma als u dit nog niet hebt gedaan.sudo apt-get install bmap-tools
Zoek het pad voor de SD-kaart in
/dev
. Het pad moet er ongeveer uitzien als/dev/sd*
of/dev/mmcblk*
. U kunt hetdmesg
hulpprogramma gebruiken om het juiste pad te vinden.Ontkoppel alle gekoppelde partities voordat u knippert.
sudo umount /dev/<device>
Zorg ervoor dat u schrijfmachtigingen voor het apparaat hebt.
sudo chmod a+rw /dev/<device>
Optioneel: download het bimap-bestand en het afbeeldingsbestand en plaats deze in dezelfde map om sneller te knipperen.
Flash de SD-kaart.
sudo bmaptool copy <path to image> /dev/<device>
Device Update for Azure IoT Hub software is onderworpen aan de volgende licentievoorwaarden:
Lees de licentievoorwaarden voordat u de agent gebruikt. Door uw installatie en gebruik gaat u akkoord met deze voorwaarden. Als u niet akkoord gaat met de licentievoorwaarden, gebruikt u de Device Update voor IoT Hub agent niet.
Een apparaat of module maken in IoT Hub en een connection string
Voeg nu het apparaat toe aan IoT Hub. Vanuit IoT Hub wordt een connection string voor het apparaat gegenereerd.
Start IoT Hub vanuit de Azure Portal.
Maak een nieuw apparaat.
Selecteer Apparaten in het linkerdeelvenster. Selecteer vervolgens Nieuw.
Voer onder Apparaat-id een naam in voor het apparaat. Zorg ervoor dat het selectievakje Automatisch genereren van sleutels is ingeschakeld.
Selecteer Opslaan. Op de pagina Apparaten moet het apparaat dat u hebt gemaakt, in de lijst staan.
Haal de connection string van het apparaat op met behulp van een van de volgende twee opties:
- Optie 1: De Device Update-agent gebruiken met een module-id: selecteer bovenaan op dezelfde pagina Apparaten de optie Module-identiteit toevoegen . Maak een nieuwe Device Update-module met de naam IoTHubDeviceUpdate. Kies andere opties die van toepassing zijn op uw use-case en selecteer vervolgens Opslaan. Selecteer de zojuist gemaakte module. Selecteer in de moduleweergave het pictogram Kopiëren naast Primaire verbindingsreeks.
- Optie 2: De Device Update-agent gebruiken met de apparaat-id: selecteer in de apparaatweergave het pictogram Kopiëren naast Primaire verbindingsreeks.
Plak de gekopieerde tekens ergens voor later gebruik in de volgende stappen:
Deze gekopieerde tekenreeks is uw apparaat connection string.
Configuraties op apparaten voorbereiden voor Apparaatupdate voor IoT Hub
Er moeten twee configuratiebestanden op het apparaat staan, zodat Device Update voor IoT Hub correct wordt geconfigureerd. Het eerste bestand is het du-config.json
bestand, dat moet bestaan op /adu/du-config.json
. Het tweede bestand is het du-diagnostics-config.json
bestand, dat moet bestaan op /adu/du-diagnostics-config.json
.
Hier volgen twee voorbeelden voor de du-config.json
bestanden en du-diagnostics-config.json
:
Voorbeeld 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"
}
]
}
Voorbeeld du-diagnostics-config.json
{
"logComponents":[
{
"componentName":"adu",
"logPath":"/adu/logs/"
},
{
"componentName":"do",
"logPath":"/var/log/deliveryoptimization-agent/"
}
],
"maxKilobytesToUploadPerLogPath":50
}
De Device Update-agent configureren op Raspberry Pi
Zorg ervoor dat Raspberry Pi 3 is verbonden met het netwerk.
Volg deze instructies om de configuratiegegevens toe te voegen:
Voer eerst SSH in op de computer met behulp van de volgende opdracht in het PowerShell-venster:
ssh raspberrypi3 -l root
Maak of open het bestand om het
du-config.json
te bewerken met behulp van:nano /adu/du-config.json
Nadat u de opdracht hebt uitgevoerd, ziet u een geopende editor met het bestand. Als u het bestand nog nooit hebt gemaakt, is het leeg. Kopieer nu de inhoud van het voorgaande voorbeeld du-config.json en vervang de configuraties die vereist zijn voor uw apparaat. Vervang vervolgens het voorbeeld connection string door het voorbeeld voor het apparaat dat u in de voorgaande stappen hebt gemaakt.
Nadat u de wijzigingen hebt voltooid, selecteert u Ctrl+X om de editor af te sluiten. Voer vervolgens y in om de wijzigingen op te slaan.
Nu moet u het
du-diagnostics-config.json
bestand maken met behulp van vergelijkbare opdrachten. Begin met het maken of openen van het bestand om hetdu-diagnostics-config.json
te bewerken met behulp van:nano /adu/du-diagnostics-config.json
Kopieer de inhoud van het voorgaande voorbeeld du-diagnostics-config.json en vervang configuraties die afwijken van de standaardbuild. Het voorbeeldbestand du-diagnostics-config.json vertegenwoordigt de standaardlogboeklocaties voor Device Update voor IoT Hub. U hoeft deze alleen te wijzigen als uw implementatie verschilt.
Nadat u de wijzigingen hebt voltooid, selecteert u Ctrl+X om de editor af te sluiten. Voer vervolgens y in om de wijzigingen op te slaan.
Gebruik de volgende opdracht om de bestanden in de
/adu/
map weer te geven. U ziet nu beide configuratiebestanden.du-diagnostics-config.json-bestanden om te bewerken met behulp van:ls -la /adu/
Start de systeemdemon Device Update opnieuw op om ervoor te zorgen dat de configuraties zijn toegepast. Gebruik de volgende opdracht in de terminal die is aangemeld bij de
raspberrypi
:systemctl start adu-agent
Controleer met behulp van de volgende opdracht of de agent live is:
systemctl status adu-agent
U ziet dat de status terugkomt als levend en groen.
Het apparaat verbinden in Apparaatupdate voor IoT Hub
Selecteer Apparaten in het linkerdeelvenster.
Selecteer de koppeling met de naam van uw apparaat.
Selecteer bovenaan de pagina Apparaatdubbel als u rechtstreeks verbinding maakt met Device Update met behulp van de IoT-apparaat-id. Selecteer anders de module die u hebt gemaakt en selecteer de bijbehorende moduledubbel.
Zoek in de gerapporteerde sectie van de apparaatdubbeleigenschappen naar de Linux-kernelversie. Voor een nieuw apparaat, dat geen update van Device Update heeft ontvangen, vertegenwoordigt de waarde DeviceManagement:DeviceInformation:1.swVersion de firmwareversie die op het apparaat wordt uitgevoerd. Nadat een update is toegepast op een apparaat, gebruikt Device Update de eigenschapswaarde AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId om de firmwareversie aan te geven die op het apparaat wordt uitgevoerd.
De basis- en updateinstallatiekopieën hebben een versienummer in de bestandsnaam.
adu-<image type>-image-<machine>-<version number>.<extension>
Gebruik dat versienummer in de latere sectie 'De update importeren'.
Een tag toevoegen aan uw apparaat
Meld u aan bij de Azure Portal en ga naar de IoT-hub.
Zoek in het linkerdeelvenster onder Apparaten uw IoT-apparaat en ga naar de apparaatdubbel of moduledubbel.
Verwijder in de moduledubbel van de Device Update-agentmodule alle bestaande tagwaarden voor Device Update door deze in te stellen op null. Als u de apparaat-id gebruikt met de Device Update-agent, moet u deze wijzigingen aanbrengen op de apparaatdubbel.
Voeg een nieuwe tagwaarde voor Device Update toe, zoals wordt weergegeven:
"tags": { "ADUGroup": "<CustomTagValue>" }
De update importeren
Download het manifest voor de voorbeeldzelfstudie (Zelfstudie importeren Manifest_Pi.json) en de voorbeeldupdate (adu-update-image-raspberrypi3-0.6.5073.1.swu) van Release Assets voor de nieuwste agent.
Meld u aan bij de Azure Portal en ga naar uw IoT-hub met Device Update. Selecteer in het linkerdeelvenster onder Automatische Apparaatbeheerde optie Updates.
Selecteer het tabblad Updates.
Selecteer + Nieuwe update importeren.
Selecteer + Selecteren in opslagcontainer. Selecteer een bestaand account of maak een nieuw account met behulp van + Opslagaccount. Selecteer vervolgens een bestaande container of maak een nieuwe container met behulp van + Container. Deze container wordt gebruikt om uw updatebestanden te faseren voor importeren.
Notitie
U wordt aangeraden elke keer dat u een update importeert een nieuwe container te gebruiken om te voorkomen dat bestanden uit eerdere updates per ongeluk worden geïmporteerd. Als u geen nieuwe container gebruikt, moet u alle bestanden uit de bestaande container verwijderen voordat u deze stap voltooit.
Selecteer uploaden in de container en ga naar de bestanden die u in stap 1 hebt gedownload. Nadat u al uw updatebestanden hebt geselecteerd, selecteert u Uploaden. Selecteer vervolgens de knop Selecteren om terug te keren naar de pagina Update importeren .
In deze schermopname ziet u de importstap. Bestandsnamen komen mogelijk niet overeen met de namen die in het voorbeeld worden gebruikt.
Controleer op de pagina Update importeren de bestanden die moeten worden geïmporteerd. Selecteer vervolgens Update importeren om het importproces te starten.
Het importproces wordt gestart en het scherm schakelt over naar de sectie Importgeschiedenis . Wanneer de kolom Status aangeeft dat het importeren is voltooid, selecteert u de kop Beschikbare updates . De geïmporteerde update wordt nu in de lijst weergegeven.
Meer informatie over het importeren van updates.
Een updategroep maken
Ga naar het tabblad Groepen en implementaties boven aan de pagina.
Selecteer Groep toevoegen om een nieuwe groep te maken.
Selecteer een IoT Hub tag en Apparaatklasse in de lijst. Selecteer vervolgens Groep maken.
Nadat de groep is gemaakt, worden het updatenalevingsdiagram en de lijst met groepen bijgewerkt. In de grafiek voor updatenaleving ziet u het aantal apparaten in verschillende nalevingsstatussen: Bij de meest recente update, Nieuwe updates beschikbaar en Updates wordt uitgevoerd. Meer informatie over updatecompatibiliteit.
U ziet nu de zojuist gemaakte groep en eventuele beschikbare updates voor de apparaten in de nieuwe groep. Als er apparaten zijn die niet voldoen aan de apparaatklassevereisten van de groep, worden ze weergegeven in een bijbehorende ongeldige groep. Als u de beste beschikbare update wilt implementeren voor de nieuwe door de gebruiker gedefinieerde groep vanuit deze weergave, selecteert u Implementeren naast de groep.
Meer informatie over het toevoegen van tags en het maken van updategroepen.
De update implementeren
Nadat de groep is gemaakt, ziet u een nieuwe update beschikbaar voor uw apparaatgroep. Een koppeling naar de update moet onder Beste update staan. Mogelijk moet u eenmaal vernieuwen. Meer informatie over updatecompatibiliteit.
Selecteer de doelgroep door de groepsnaam te selecteren. U wordt omgeleid naar de groepsdetails onder Basisbeginselen van groep.
Ga naar het tabblad Huidige implementatie om de implementatie te starten. Selecteer de koppeling implementeren naast de gewenste update in de sectie Beschikbare updates . De best beschikbare update voor een bepaalde groep wordt aangeduid met een beste markering.
Plan uw implementatie om onmiddellijk of in de toekomst te starten. Selecteer vervolgens Maken.
Onder Implementatiedetails wordt de status ingesteld op Actief. De geïmplementeerde update is gemarkeerd met (implementeren).
Bekijk de nalevingsgrafiek om te zien dat de update nu wordt uitgevoerd.
Nadat uw apparaat is bijgewerkt, ziet u dat uw nalevingsgrafiek en implementatiegegevens zijn bijgewerkt om hetzelfde weer te geven.
De update-implementatie bewaken
Selecteer het tabblad Implementatiegeschiedenis bovenaan de pagina.
Selecteer Details naast de implementatie die u hebt gemaakt.
Selecteer Vernieuwen om de meest recente statusdetails weer te geven.
U hebt nu een geslaagde end-to-end-update van installatiekopieën voltooid met behulp van Device Update voor IoT Hub op een Raspberry Pi 3 B+-apparaat.
Resources opschonen
Schoon uw Device Update-account, exemplaar, IoT-hub en IoT-apparaat op wanneer u deze niet meer nodig hebt.