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 betrouwbaarheidsniveau 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.
  • 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. Voor deze zelfstudie moet het apparaat worden verbonden via een Ethernet-verbinding.

Download bestanden in Assets op de pagina GitHub-releases van Device Update. De Tutorial_RaspberryPi.zip bevat alle vereiste bestanden voor de zelfstudie.

Een apparaat 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.

  1. Navigeer vanuit de Azure Portal naar uw IoT-hub.

  2. Selecteer Apparaten in het linkerdeelvenster. Selecteer vervolgens Nieuw.

  3. Voer onder Apparaat-id een naam in voor het apparaat. Zorg ervoor dat het selectievakje Automatisch genereren van sleutels is ingeschakeld.

  4. Selecteer Opslaan. Op de pagina Apparaten moet het apparaat dat u hebt gemaakt, in de lijst staan.

  5. Haal het apparaat op connection string door naar de apparaatweergave te navigeren en het pictogram Kopiëren naast Primaire verbindingsreeks te selecteren.

  6. Plak de gekopieerde tekens ergens voor later gebruik in de volgende stappen:

    Deze gekopieerde tekenreeks is uw apparaat connection string.

Notitie

In deze zelfstudie wordt een apparaat connection string gebruikt om de IoT Hub te verifiëren en er verbinding mee te maken voor een eenvoudige configuratie. Voor productiescenario's raden we u aan module-id te gebruiken en AIS (IoT Identity Service) te gebruiken om apparaten in te richten. Meer informatie

Raspberry Pi instellen

We bieden basisinstallatiekopieën en updatebestanden in Assets op de pagina GitHub-releases voor apparaatupdates. De Tutorial_RaspberryPi.zip bevat alle vereiste bestanden voor de zelfstudie. Het .wic-bestand is de basisafbeelding waarop u kunt flashen op een Raspberry Pi 3 B+-bord. Het swUpdate(.swu)-bestand, het aangepaste swupdate-script en het manifest zijn de updatebestanden die u importeert via Device Update voor IoT Hub.

Deze basisinstallatiekopie maakt gebruik van een Yocto-build (gebaseerd op versie 3.4.4) met:

  • SWUpdate waarmee het bijwerken van dubbele partities met DU mogelijk wordt
  • Device Update-agent

Raadpleeg Device Update Yocto GitHub voor meer informatie over de gebruikte Yocto-lagen.

U kunt uw favoriete hulpprogramma voor het knipperen van het besturingssysteem gebruiken 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. Hieronder staan de instructies voor het gebruik van bmaptool om naar de SD-kaart te flashen.

Gebruik bmaptool om de SD-kaart te flashen

  1. Installeer het bmaptool hulpprogramma als u dit nog niet hebt gedaan.

    sudo apt-get install bmap-tools
    
  2. Zoek het pad voor de SD-kaart in /dev. Het pad moet er ongeveer uitzien als /dev/sd* of /dev/mmcblk*. U kunt het dmesg hulpprogramma gebruiken om het juiste pad te vinden.

  3. Ontkoppel alle gekoppelde partities voordat u knippert.

    sudo umount /dev/<device>
    
  4. Zorg ervoor dat u schrijfmachtigingen voor het apparaat hebt.

    sudo chmod a+rw /dev/<device>
    
  5. Optioneel: download het bimap-bestand en het afbeeldingsbestand en plaats deze in dezelfde map om sneller te knipperen.

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

De Device Update-agent configureren op Raspberry Pi

  1. Zorg ervoor dat Raspberry Pi 3 is verbonden met het netwerk.

  2. SSH in de Raspberry Pi 3 met behulp van de volgende opdracht in het PowerShell-venster:

      ssh raspberrypi3 -l root
    
  3. De DU-configuratiebestanden (du-config.json en du-diagnostics-config.json) moeten zich op het apparaat bevinden, zodat Device Update voor IoT Hub correct wordt geconfigureerd.

    1. Het bestand maken of openen om het du-config.json te bewerken met behulp van:
      nano /adu/du-config.json
    
    1. 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 onderstaande du-config.json-inhoud 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.

      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. Nadat u de wijzigingen hebt voltooid, selecteert u Ctrl+X om de editor af te sluiten. Voer vervolgens in y om de wijzigingen op te slaan.
  4. Nu moet u het du-diagnostics-config.json bestand maken met behulp van vergelijkbare opdrachten.

    1. Begin met het maken of openen van het bestand om het du-diagnostics-config.json te bewerken met behulp van:
      nano /adu/du-diagnostics-config.json
    
    1. Kopieer de inhoud van du-diagnostics-config.json hieronder 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 standaardwaarden alleen te wijzigen als uw implementatie verschilt.

    du-diagnostics-config.json

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
    1. Nadat u de wijzigingen hebt voltooid, selecteert u Ctrl+X om de editor af te sluiten. Voer vervolgens in y om de wijzigingen op te slaan.
  5. 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/
    
  6. 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 deviceupdate-agent
    
  7. Controleer met behulp van de volgende opdracht of de agent live is:

      systemctl status deviceupdate-agent
    

    Als het goed is, wordt de status weergegeven als actief en groen.

Het apparaat verbinden in Apparaatupdate voor IoT Hub

  1. Selecteer Apparaten in het linkerdeelvenster.

  2. Selecteer de koppeling met de naam van uw apparaat.

  3. Selecteer apparaatdubbel bovenaan de pagina.

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

  5. 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 Device Update-groepstag toevoegen aan uw apparaat

  1. Ga in Azure Portal naar uw IoT-hub.

  2. Zoek in het linkerdeelvenster onder Apparaten uw IoT-apparaat en ga naar de apparaatdubbel of moduledubbel.

  3. 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, brengt u deze wijzigingen aan op de apparaatdubbel.

  4. Voeg een nieuwe tagwaarde voor Device Update toe, zoals wordt weergegeven:

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

    Schermopname van dubbel met taggegevens.

    In deze schermopname ziet u de sectie waarin de tag moet worden toegevoegd in de dubbel.

De update importeren

  1. Download het voorbeeldmanifest voor de zelfstudie en de voorbeeldupdate (.swu-bestand) en het voorbeeld-A/B-script van Tutorial_RaspberryPi.zip onder Activa vrijgeven voor de meest recente agent.

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

  3. Selecteer het tabblad Updates.

  4. Selecteer + Nieuwe update importeren.

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

    Schermopname van Opslagaccounts en Containers.

  6. Selecteer uploaden in uw 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 .

    Schermopname van het selecteren van geüploade bestanden.

    In deze schermopname ziet u de importstap. Bestandsnamen komen mogelijk niet overeen met de namen die in het voorbeeld worden gebruikt.

  7. Controleer op de pagina Update importeren de bestanden die moeten worden geïmporteerd. Selecteer vervolgens Update importeren om het importproces te starten. Voor de zelfstudie importeert u het voorbeeldzelfzelfstudiemanifest en de voorbeeldupdate (.swu-bestand) en het voorbeeld-A/B-script dat u eerder hebt gedownload.

    Schermopname van Import update.

  8. Het importproces wordt gestart en het scherm schakelt over naar de sectie Geschiedenis van importeren . Wanneer de kolom Status aangeeft dat het importeren is voltooid, selecteert u de kop Beschikbare updates . Als het goed is, ziet u nu de geïmporteerde update in de lijst.

    Schermopname van de taakstatus.

Zie Een update importeren naar Device Update voor meer informatie over het importproces.

Apparaatgroepen weergeven

Device Update maakt gebruik van groepen om apparaten te ordenen. Device Update sorteert apparaten automatisch in groepen op basis van de toegewezen tags en compatibiliteitseigenschappen. Elk apparaat behoort tot slechts één groep, maar groepen kunnen meerdere subgroepen hebben om verschillende apparaatklassen te sorteren.

  1. Ga naar het tabblad Groepen en implementaties bovenaan de pagina.

    Schermopname van niet-gegroepeerde apparaten.

  2. Bekijk de lijst met groepen en de grafiek voor updatenaleving. In de grafiek voor updatenaleving ziet u het aantal apparaten in verschillende nalevingsstatussen: Bij de laatste update, Nieuwe updates beschikbaar en Updates wordt uitgevoerd. Meer informatie over updatecompatibiliteit.

    Schermopname van de weergave updatenaleving.

  3. U ziet een apparaatgroep die het gesimuleerde apparaat bevat dat u in deze zelfstudie hebt ingesteld, samen met 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 best beschikbare update wilt implementeren voor de nieuwe door de gebruiker gedefinieerde groep vanuit deze weergave, selecteert u Implementeren naast de groep.

Zie Apparaatgroepen beheren voor meer informatie over tags en groepen.

De update implementeren

  1. Nadat de groep is gemaakt, ziet u een nieuwe update beschikbaar voor uw apparaatgroep met een koppeling naar de update onder Beste update. Mogelijk moet u één keer vernieuwen.

    Zie Naleving van apparaatupdates voor meer informatie over naleving.

  2. Selecteer de doelgroep door de groepsnaam te selecteren. U wordt omgeleid naar de groepsdetails onder Basisprincipes van groep.

    Schermopname van groepsdetails.

  3. 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 de markering Beste .

    Schermopname van het selecteren van een update.

  4. Plan de implementatie om onmiddellijk of in de toekomst te beginnen. Selecteer vervolgens Maken.

    Tip

    Standaard zijn de begindatum en -tijd 24 uur verwijderd van uw huidige tijd. Zorg ervoor dat u een andere datum en tijd selecteert als u wilt dat de implementatie eerder begint.

    Schermopname van het maken van een implementatie.

  5. Onder Implementatiedetails wordt Status ingesteld op Actief. De geïmplementeerde update is gemarkeerd met (implementeren).

    Schermopname van de implementatie als Actief.

  6. Bekijk de nalevingsgrafiek om te zien dat de update nu wordt uitgevoerd.

  7. Nadat uw apparaat is bijgewerkt, ziet u dat uw nalevingsgrafiek en implementatiedetails worden bijgewerkt om hetzelfde weer te geven.

    Schermopname die laat zien dat de update is voltooid.

De update-implementatie bewaken

  1. Selecteer het tabblad Implementatiegeschiedenis bovenaan de pagina.

    Schermopname van de implementatiegeschiedenis.

  2. Selecteer de koppeling details naast de implementatie die u hebt gemaakt.

    Schermopname met details van de implementatie.

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

Volgende stappen