Delen via


Zelfstudie: Azure Device Update voor IoT Hub met behulp van een Raspberry Pi-installatiekopieën

Apparaatupdate voor Azure IoT Hub ondersteunt updates op basis van installatiekopieën, pakketten en scripts. In deze zelfstudie ziet u een end-to-end apparaatupdate op basis van een apparaatupdate voor IoT Hub met behulp van een Yocto-afbeelding op een Raspberry Pi 3 B+-bord.

Installatiekopieënupdates bieden een hoge mate van vertrouwen in de eindstatus van het apparaat en vormen niet dezelfde problemen met pakket- en afhankelijkheidsbeheer als updates op basis van pakketten of scripts. Het is eenvoudiger om de resultaten van een installatiekopie-update tussen een preproductie- en productieomgeving te repliceren of eenvoudig een A/B-failovermodel te gebruiken.

In deze zelfstudie hebt u:

  • Download en installeer een installatiekopieënupdate.
  • Wijs een tag toe aan uw IoT-apparaat.
  • Importeer de update van de installatiekopieën.
  • Implementeer de update van de installatiekopieën.
  • Bekijk de update-implementatiegeschiedenis.

Vereisten

Registreer het apparaat en haal de verbindingsreeks

Voeg uw apparaat toe aan het apparaatregister in uw IoT-hub en haal de verbindingsreeks Die IoT Hub voor het apparaat genereert.

  1. Open in Azure Portal de ioT-hubpagina die is gekoppeld aan uw Device Update-exemplaar.
  2. Selecteer Apparaatbeheerapparaten> in het linkernavigatiedeelvenster.
  3. Selecteer Apparaat toevoegen op de pagina Apparaten.
  4. Voer onder Apparaat-id een naam in voor het apparaat. Zorg ervoor dat het selectievakje Automatisch genereren van sleutels is ingeschakeld.
  5. Selecteer Opslaan. Het apparaat wordt weergegeven in de lijst op de pagina Apparaten .
  6. Selecteer op de pagina Apparaten het apparaat dat u hebt geregistreerd.
  7. Selecteer op de apparaatpagina het pictogram Kopiëren naast de verbindingsreeks (primaire sleutel). Sla dit apparaat op verbindingsreeks te gebruiken wanneer u de Device Update-agent configureert.

Notitie

Voor demonstratiedoeleinden maakt deze zelfstudie gebruik van een apparaat verbindingsreeks om de IoT-hub te verifiëren en er verbinding mee te maken. Voor productiescenario's is het beter om module-id en IoT Identity Service te gebruiken om apparaten in te richten. Zie Device Update-agent inrichten voor meer informatie.

Raspberry Pi instellen

Het Tutorial_RaspberryPi3.zip-bestand bevat alle vereiste bestanden voor de zelfstudie. Download het bestand uit de sectie Assets van de meest recente release op de pagina Releases van GitHub Device Update en pak het uit.

In de uitgepakte map Tutorial_RaspberryPi3 is de basisafbeelding die u op het Raspberry Pi-bord kunt knipperen adu-base-image-raspberrypi3.wic. De basisinstallatiekopie maakt gebruik van een Yocto-build op basis van de release 3.4.4. De installatiekopie heeft de Device Update-agent en SWUpdate, waarmee de update voor dubbele partities van Device Update wordt ingeschakeld. Zie Een aangepast Linux-systeem bouwen met device update-agent met behulp van het Yocto-project voor meer informatie over de Yocto-lagen.

De updatebestanden die u importeert via Device Update zijn:

  • SWUpdate-bestand adu-update-image-raspberrypi3-1.2.0.swu
  • Aangepaste SWUpdate-script example-a-b-update.sh
  • Manifest EDS-ADUClient.yocto-update.1.2.0.importmanifest.json

Gebruik bmaptool om de SD-kaart te flashen

Belangrijk

Azure Device Update voor IoT Hub-software is onderhevig aan de volgende licentievoorwaarden:

Lees de licentievoorwaarden voordat u de agent gebruikt. De installatie en het gebruik van de agent vormen de acceptatie van deze voorwaarden. Als u niet akkoord gaat met de licentievoorwaarden, gebruikt u de Device Update-agent niet.

Gebruik een knipperend hulpprogramma voor het besturingssysteem om de basisinstallatiekopieën van Device Update te installeren op de SD-kaart die u gebruikt op het Raspberry Pi-apparaat. De volgende instructies gebruiken bmaptool om naar de SD-kaart te knipperen. Vervang de <device> tijdelijke aanduiding door de naam van uw apparaat en de <path to image> tijdelijke aanduiding door het pad naar het gedownloade afbeeldingsbestand.

  1. Installeer het bmap-tools hulpprogramma als u dit niet hebt.

    sudo apt-get install bmap-tools
    
  2. Zoek het SD-kaartpad 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. Flash de SD-kaart.

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

    Tip

    Als u sneller wilt knipperen, kunt u het bimap-bestand en het afbeeldingsbestand downloaden en deze in dezelfde map plaatsen.

De Device Update-agent configureren op Raspberry Pi

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

  2. Secure Shell (SSH) in de Raspberry Pi met behulp van de volgende opdracht in een PowerShell-venster:

    ssh raspberrypi3 -l root
    

De apparaatupdate-configuratiebestanden maken

De apparaatupdate-du-config.json en du-diagnostics-config.json configuratiebestanden moeten zich op het apparaat bevinden. Als u de bestanden wilt maken, voert u de volgende opdrachten uit in de terminal die is aangemeld bij de Raspberry Pi.

  1. Voer de volgende opdracht uit om het du-config.json-bestand te maken of te openen om het te bewerken:

    nano /adu/du-config.json
    
  2. De editor opent het bestand du-config.json . Als u het bestand maakt, is het leeg. Kopieer en plak de volgende code in het bestand, waarbij u de voorbeeldwaarden vervangt door de vereiste configuraties voor uw apparaat. Vervang de voorbeeldtekenreeks connectionData door het apparaat verbindingsreeks u in de stap voor apparaatregistratie hebt gekopieerd.

    {
       "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. Druk op Ctrl+X om de editor af te sluiten en voer y in om uw wijzigingen op te slaan.

  4. Maak het du-diagnostics-config.json-bestand met behulp van vergelijkbare opdrachten. Het bestand maken en openen:

    nano /adu/du-diagnostics-config.json
    
  5. Kopieer en plak de volgende du-diagnostics-config.json code in het bestand. De waarden zijn de standaardlocaties voor apparaatupdatelogboeken en u moet ze alleen wijzigen als uw configuratie verschilt van de standaardinstelling.

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
  6. Druk op Ctrl+X om de editor af te sluiten en voer y in om uw wijzigingen op te slaan.

  7. Gebruik de volgende opdracht om de bestanden weer te geven die zich in de map /adu/ bevinden. U ziet beide configuratiebestanden.

    ls -la /adu/
    
  8. Gebruik de volgende opdracht om de daemon van het apparaatupdatesysteem opnieuw op te starten en ervoor te zorgen dat configuraties worden toegepast.

    systemctl start deviceupdate-agent
    
  9. Controleer of de agent live is door de volgende opdracht uit te voeren:

    systemctl status deviceupdate-agent
    

    De status moet als levend en groen worden weergegeven.

Verbinding maken met het apparaat in IoT Hub en een groepstag toevoegen

  1. Selecteer apparaatbeheerapparaten> in de linkernavigatiebalk op de ioT-hubpagina van Azure Portal voor uw Device Update-exemplaar.

  2. Selecteer op de pagina Apparaten de naam van uw apparaat.

  3. Selecteer boven aan de apparaatpagina de optie Apparaatdubbel.

  4. Zoek op de pagina Apparaatdubbel onder de "reported" sectie van de sectie apparaatdubbel "properties" naar de Linux-kernelversie voor uw apparaat.

    Voor een nieuw apparaat dat geen update van Device Update heeft ontvangen, vertegenwoordigt de eigenschap DeviceManagement:DeviceInformation:1.swVersion de firmwareversie die op het apparaat wordt uitgevoerd. Nadat op het apparaat een update is toegepast, vertegenwoordigt de eigenschap AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId de firmwareversie.

    De namen van de basis- en update-installatiekopiebestanden hebben de indeling adu-image-image-machine-version><<<> number.<>extensie>. Noteer de versienummers die moeten worden gebruikt wanneer u de update importeert.

Een groepstag toevoegen

Device Update organiseert apparaten automatisch in groepen op basis van hun toegewezen tags en compatibiliteitseigenschappen. Elk apparaat kan tot slechts één groep behoren, maar groepen kunnen meerdere subgroepen hebben om verschillende apparaatklassen te sorteren. Zie Apparaatgroepen beheren voor meer informatie over tags en groepen.

  1. Verwijder in de apparaatdubbel alle bestaande tagwaarden van Device Update door deze in te stellen op null en voeg vervolgens de volgende nieuwe tag device update-groep toe. Als u een module-id gebruikt met de Device Update-agent, voegt u de tag toe aan de Module Identity Twin in plaats van de apparaatdubbel.

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

    In de volgende schermopname ziet u waar in het bestand de tag moet worden toegevoegd.

    Schermopname van dubbel met taggegevens.

  2. Selecteer Opslaan.

De update importeren

  1. Selecteer op de ioT-hubpagina van Azure Portal voor uw exemplaar van Device Update Apparaatbeheer> Updates in het linkernavigatievenster.

  2. Selecteer Een nieuwe update importeren op de pagina Updates.

  3. Selecteer Selecteren in opslagcontainer op de pagina Update importeren.

  4. Selecteer op de pagina Opslagaccounts een bestaand opslagaccount of maak een nieuw account door Opslagaccount te selecteren.

  5. Selecteer op de pagina Containers een bestaande container of maak een nieuwe container door Container te selecteren. U gebruikt de container om de updatebestanden voor importeren te fasen.

    Schermopname van Opslagaccounts en Containers.

    Tip

    Als u wilt voorkomen dat bestanden uit eerdere updates per ongeluk worden geïmporteerd, gebruikt u telkens wanneer u een update importeert een nieuwe container. Als u geen nieuwe container gebruikt, moet u alle bestanden uit de bestaande container verwijderen.

  6. Selecteer Uploaden op de containerpagina. Sleep en zet deze neer, of blader naar en selecteer de volgende updatebestanden uit de Tutorial_RaspberryPi3 map die u hebt gedownload:

    • adu-update-image-raspberrypi3-1.2.0.swu
    • example-a-b-update.sh
    • EDS-ADUClient.yocto-update.1.2.0.importmanifest.json
  7. Selecteer Uploaden. Nadat ze zijn geüpload, worden de bestanden weergegeven op de containerpagina.

  8. Controleer en selecteer de bestanden die u wilt importeren op de containerpagina en selecteer vervolgens Selecteren.

    Schermopname van het selecteren van geüploade bestanden.

  9. Selecteer Update importeren in het scherm Update importeren.

    Schermopname van importupdate.

Het importproces wordt gestart en het scherm schakelt over naar het scherm Updates . Nadat het importeren is voltooid, wordt deze weergegeven op het tabblad Updates . Zie Een update importeren in Device Update voor meer informatie over het importproces.

Schermopname van de taakstatus.

Selecteer de apparaatgroep

U kunt de groepstag gebruiken die u op uw apparaat hebt toegepast om de update te implementeren in de apparaatgroep. Selecteer het tabblad Groepen en implementaties boven aan de pagina Updates om de lijst met groepen en implementaties en het updatenalevingsdiagram weer te geven.

In het diagram voor updatecompatibiliteit ziet u het aantal apparaten in verschillende nalevingsstatussen: Bij de meest recente update, nieuwe updates die beschikbaar zijn en updates die worden uitgevoerd. Zie Apparaatupdate-naleving voor meer informatie.

Onder Groepsnaam ziet u een lijst met alle apparaatgroepen voor apparaten die zijn verbonden met deze IoT-hub en de beschikbare updates, met koppelingen voor het implementeren van de updates onder Status. Apparaten die niet voldoen aan de apparaatklassevereisten van een groep, worden weergegeven in een overeenkomstige ongeldige groep. Zie Apparaatgroepen beheren voor meer informatie over tags en groepen.

U ziet nu de apparaatgroep die het apparaat bevat dat u in deze zelfstudie hebt ingesteld, samen met de beschikbare updates voor de apparaten in de groep. U moet de pagina mogelijk vernieuwen. Als u vanuit deze weergave de best beschikbare update voor een groep wilt implementeren, selecteert u Implementeren naast de groep.

Schermopname van de weergave voor updatecompatibiliteit.

De update implementeren

  1. Selecteer op de pagina Groepsdetails het tabblad Huidige implementatie en selecteer vervolgens Implementeren naast de gewenste update in de sectie Beschikbare updates . De best beschikbare update voor de groep wordt aangeduid met een beste markering.

    Schermopname van het selecteren van een update.

  2. Op de pagina Implementatie maken plant u de implementatie om direct of in de toekomst te beginnen en selecteert u Vervolgens Maken.

    Schermopname van het maken van een implementatie.

    Tip

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

  3. Onder Implementatiedetails wordt de status geactiveerd. Onder Beschikbare updates is de geselecteerde update gemarkeerd met (implementeren).

    Schermopname van de implementatie als Actief.

  4. Bekijk op de pagina Updates het nalevingsdiagram om te zien dat de update nu wordt uitgevoerd. Nadat uw apparaat is bijgewerkt, worden uw nalevingsgrafiek en implementatiegegevens bijgewerkt om die status weer te geven.

    Schermopname van de geslaagde update.

Update-implementatiegeschiedenis weergeven

Implementatiegeschiedenis weergeven:

  1. Selecteer het tabblad Implementatiegeschiedenis boven aan de pagina Groepsdetails en selecteer de koppeling naar details naast de implementatie die u hebt gemaakt.

    Schermopname van de implementatiegeschiedenis.

  2. Selecteer Vernieuwen op de pagina Implementatiedetails om de meest recente statusdetails weer te geven.

    Schermopname van implementatiedetails.

Resources opschonen

Wanneer u de resources die u voor deze zelfstudie hebt gemaakt niet meer nodig hebt, kunt u ze verwijderen.

  1. Navigeer in Azure Portal naar de resourcegroep die de resources bevat.
  2. Als u alle resources in de groep wilt verwijderen, selecteert u Resourcegroep verwijderen.
  3. Als u slechts een deel van de resources wilt verwijderen, gebruikt u de selectievakjes om de resources te selecteren en selecteert u Vervolgens Verwijderen.

Volgende stappen