Tutorial: Device Update for Azure IoT Hub unter Verwendung des Raspberry Pi 3 B+-Referenzimages

Device Update for Azure IoT Hub unterstützt image-, paket- und skriptbasierte Updates.

Imageupdates bieten ein höheres Maß an Vertrauen in den Endzustand des Geräts. Es ist in der Regel einfacher, die Ergebnisse eines Imageupdates zwischen einer Vorproduktions- und einer Produktionsumgebung zu replizieren, da dies nicht die gleichen Herausforderungen wie bei Paketen und deren Abhängigkeiten mit sich bringt. Aufgrund seiner atomischen Natur können Sie auch ein A/B-Failovermodell problemlos übernehmen.

In diesem Tutorial erfahren Sie Schritt für Schritt, wie Sie ein imagebasiertes End-to-End-Update mithilfe von Device Update for IoT Hub auf einer Raspberry Pi 3 B+-Platine ausführen.

In diesem Tutorial lernen Sie Folgendes:

  • Herunterladen eines Images
  • Hinzufügen eines Tags zu Ihrem IoT-Gerät
  • Importieren eines Updates
  • Bereitstellen eines Imageupdates
  • Überwachen der Updatebereitstellung

Hinweis

Image-Updates in diesem Tutorial wurden auf der Raspberry Pi B3-Platine überprüft.

Voraussetzungen

Erstellen Sie ein Konto und eine Instanz für Device Update, und konfigurieren Sie einen IoT-Hub, wenn Sie diese Schritte noch nicht ausgeführt haben. In diesem Tutorial muss das Gerät über eine Ethernet-Verbindung verbunden werden.

Dateien können Sie unter Ressourcen auf der GitHub-Releaseseite für Geräteupdates herunterladen. Das Archiv Tutorial_RaspberryPi.zip enthält alle erforderlichen Dateien für das Tutorial.

Erstellen eines Geräts in IoT Hub und Abrufen einer Verbindungszeichenfolge

Fügen Sie jetzt das Gerät zu IoT Hub hinzu. In IoT Hub wird eine Verbindungszeichenfolge für das Gerät generiert.

  1. Navigieren Sie im Azure-Portal zu Ihrem IoT-Hub.

  2. Klicken Sie im linken Bereich auf Geräte. Wählen Sie dann Neu aus.

  3. Geben Sie unter Geräte-ID einen Namen für das Gerät ein. Stellen Sie sicher, dass das Kontrollkästchen Schlüssel automatisch generieren aktiviert ist.

  4. Wählen Sie Speichern aus. Auf der Seite Geräte sollte das von Ihnen erstellte Gerät in der Liste aufgeführt sein.

  5. Rufen Sie die Geräteverbindungszeichenfolge ab, indem Sie zur Geräteansicht navigieren, und wählen Sie neben Primäre Verbindungszeichenfolge das Symbol Kopieren aus.

  6. Fügen Sie die kopierten Zeichen irgendwo zur späteren Verwendung in den folgenden Schritten ein:

    Diese kopierte Zeichenfolge ist Ihre Geräteverbindungszeichenfolge.

Hinweis

In diesem Tutorial wird eine Geräteverbindungszeichenfolge verwendet, um sich zu authentifizieren und eine Verbindung mit IoT Hub herzustellen, um die Einrichtung zu vereinfachen. Für Produktionsszenarien wird empfohlen, die Modulidentität zu verwenden und AIS (IoT-Identitätsdienst) zum Bereitstellen von Geräten zu nutzen. Weitere Informationen

Einrichten von Raspberry Pi

Basisimages und Updatedateien finden Sie unter Ressourcen auf der GitHub-Releaseseite für Geräteupdates. Das Archiv Tutorial_RaspberryPi.zip enthält alle erforderlichen Dateien für das Tutorial. Die WIC-Datei ist das Basisimage, das Sie auf ein Raspberry Pi B 3+-Board flashen können. Die swUpdate(.swu)-Datei, das benutzerdefinierte swupdate-Skript und das Manifest sind die Updatedateien, die Sie über Device Update for IoT Hub importieren würden.

Dieses Basisimage verwendet einen Yocto-Build (basierend auf Version 3.4.4) mit:

  • Software-Update, das das Dual-Partitionsupdate mit DU aktiviert
  • Device Update-Agent

Weitere Informationen zu den verwendeten Yocto-Ebenen finden Sie unter Geräteupdate Yocto GitHub..

Sie können Ihr bevorzugtes Tools zum Flashen des Betriebssystems verwenden, um das Geräteupdate-Basisimage („adu-base-image“) auf der SD-Karte zu installieren, die im Raspberry Pi 3 B+ verwendet werden soll. Im Folgenden finden Sie die Anweisungen zum Verwenden von bmaptool zum Flashen auf die SD-Karte.

Verwenden von bmaptool zum Einspielen der SD-Karte

  1. Installieren Sie das Hilfsprogramm bmaptool, wenn Sie das noch nicht getan haben.

    sudo apt-get install bmap-tools
    
  2. Suchen Sie den Pfad für die SD-Karte in /dev. Der Pfad sollte in etwa wie /dev/sd* oder /dev/mmcblk* aussehen. Sie können das Hilfsprogramm dmesg verwenden, um den richtigen Pfad zu finden.

  3. Heben Sie die Einbindung aller eingebundenen Partitionen vor dem Einspielen auf.

    sudo umount /dev/<device>
    
  4. Stellen Sie sicher, dass Sie über Schreibberechtigungen für das Gerät verfügen.

    sudo chmod a+rw /dev/<device>
    
  5. Optional: Zum schnelleren Einspielen laden Sie die Bitmapdatei und die Imagedatei herunter, und speichern Sie sie in demselben Verzeichnis.

  6. Spielen Sie die SD-Karte ein.

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

Die Software Device Update for Azure IoT Hub unterliegt den folgenden Lizenzbedingungen:

Lesen Sie vor Verwendung des Agents die Lizenzbedingungen. Durch die Installation und Verwendung erklären Sie Ihre Zustimmung zu diesen Bestimmungen. Wenn Sie den Lizenzbedingungen nicht zustimmen, verwenden Sie den Device Update for IoT Hub-Agent nicht.

Konfigurieren des Device Update-Agents auf Raspberry Pi

  1. Stellen Sie sicher, dass Raspberry Pi 3 mit dem Netzwerk verbunden ist.

  2. Verbinden Sie sich per SSH mit dem Raspberry Pi 3, indem Sie den folgenden Befehl im PowerShell-Fenster eingeben:

      ssh raspberrypi3 -l root
    
  3. Die DU-Konfigurationsdateien (du-config.json und du-diagnostics-config.json) müssen sich auf dem Gerät befinden, damit das Device Update for IoT Hub ordnungsgemäß konfiguriert wird.

    1. Erstellen oder öffnen Sie die Datei du-config.json zur Bearbeitung mit:
      nano /adu/du-config.json
    
    1. Nachdem Sie den Befehl ausgeführt haben, sollte ein geöffneter Editor mit der Datei angezeigt werden. Wenn Sie die Datei noch nie erstellt haben, ist sie leer. Kopieren Sie nun den Inhalt der Datei „du-config.json“ unten und ersetzen Sie die Konfigurationen durch die für Ihr Gerät erforderlichen. Ersetzen Sie dann die Beispielverbindungszeichenfolge durch die Verbindungszeichenfolge für das Gerät, das Sie in den vorhergehenden Schritten erstellt haben.

      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. Nachdem Sie Ihre Änderungen abgeschlossen haben, drücken Sie Ctrl+X, um den Editor zu beenden. Geben Sie dann y ein, um die Änderungen zu speichern.
  4. Jetzt müssen Sie die Datei du-diagnostics-config.json mit ähnlichen Befehlen erstellen.

    1. Beginnen Sie mit dem Erstellen oder Öffnen der Datei du-diagnostics-config.json zur Bearbeitung mit den folgenden Schritten:
      nano /adu/du-diagnostics-config.json
    
    1. Kopieren Sie den Inhalt von „du-diagnostics-config.json“ unten und ersetzen Sie alle Konfigurationen, die sich vom Standardbuild unterscheiden. Die Beispieldatei „du-diagnostics-config.json“ stellt die Standardprotokollspeicherorte für Device Update for IoT Hub dar. Sie müssen diese Standardwerte nur ändern, wenn Ihre Implementierung davon abweicht.

    du-diagnostics-config.json

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
    1. Nachdem Sie Ihre Änderungen abgeschlossen haben, drücken Sie Ctrl+X, um den Editor zu beenden. Geben Sie dann y ein, um die Änderungen zu speichern.
  5. Verwenden Sie den folgenden Befehl, um die Dateien im Verzeichnis /adu/ anzuzeigen. Die beiden Konfigurationsdateien „du-config.json“ und „du-diagnostics-config.json“ sollten zur Bearbeitung mit den folgenden Schritten angezeigt werden:

      ls -la /adu/
    
  6. Starten Sie den Systemdaemon für Device Update neu, um sicherzustellen, dass die Konfigurationen angewendet wurden. Verwenden Sie den folgenden Befehl im Terminal, das bei raspberrypi angemeldet ist:

      systemctl start deviceupdate-agent
    
  7. Überprüfen Sie mit dem folgenden Befehl, ob der Agent aktiv ist:

      systemctl status deviceupdate-agent
    

    Der Status sollte als aktiv in grün angezeigt werden.

Verbinden des Geräts in Device Update for IoT Hub

  1. Klicken Sie im linken Bereich auf Geräte.

  2. Wählen Sie den Link mit Ihrem Gerätenamen aus.

  3. Wählen Sie oben auf der Seite Gerätezwilling aus.

  4. Suchen Sie unter dem Abschnitt reported (gemeldet) der Eigenschaften Gerätezwilling nach der Linux-Kernelversion.

    Bei einem neuen Gerät, das noch kein Update von Device Update erhalten hat, stellt der Wert DeviceManagement:DeviceInformation:1.swVersion die auf dem Gerät ausgeführte Firmwareversion dar. Nachdem ein Update auf ein Gerät angewendet wurde, verwendet Device Update den Eigenschaftswert AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId, um die auf dem Gerät ausgeführte Firmwareversion darzustellen.

  5. Die Dateien für Basis- und Update-Image enthalten eine Versionsnummer im Dateinamen.

     adu-<image type>-image-<machine>-<version number>.<extension>
    

    Verwenden Sie diese Versionsnummer im späteren Abschnitt „Importieren des Updates“.

Hinzufügen eines Geräteupdate-Gruppentags zu Ihrem Gerät

  1. Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.

  2. Suchen Sie im linken Bereich unter Geräte nach Ihrem IoT-Gerät, und wechseln Sie zum Geräte- oder Modulzwilling.

  3. Löschen Sie im Modulzwilling des Device Update-Agent-Moduls alle vorhandenen Device Update-Tagwerte, indem Sie sie auf „NULL“ festlegen. Wenn Sie beim Device Update-Agent die Geräteidentität verwenden, nehmen Sie diese Änderungen im Gerätezwilling vor.

  4. Fügen Sie wie hier gezeigt einen neuen Device Update-Tagwert hinzu:

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

    Screenshot eines digitalen Zwillings mit Taginformationen.

    Dieser Screenshot zeigt den Abschnitt, in dem das Tag dem Zwilling hinzugefügt werden muss.

Importieren des Updates

  1. Laden Sie das Beispielmanifest für das Tutorial und das Beispiel-Update (SWU-Datei) aus Tutorial_RaspberryPi.zip unter Release-Ressourcen für den neuesten Agent herunter.

  2. Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrem IoT-Hub mit Device Update. Wählen Sie im linken Bereich unter Automatische Geräteverwaltung die Option Updates aus.

  3. Wählen Sie die Registerkarte Updates aus.

  4. Wählen Sie + Neues Update importieren aus.

  5. Klicken Sie auf + Aus Speichercontainer auswählen. Wählen Sie ein vorhandenes Konto aus, oder erstellen Sie über die Option + Speicherkonto ein neues. Wählen Sie dann einen vorhandenen Container aus, oder erstellen Sie mithilfe von + Container einen neuen. Dieser Container wird für das Stagen Ihrer Updatedateien für den Import verwendet.

    Hinweis

    Es wird empfohlen, bei jedem Import eines Updates einen neuen Container zu verwenden, um zu vermeiden, dass versehentlich Dateien aus früheren Updates importiert werden. Wenn Sie keinen neuen Container verwenden, müssen Sie vor diesem Schritt alle Dateien aus dem vorhandenen Container löschen.

    Screenshot: Speicherkonten und Container.

  6. Klicken Sie in Ihrem Container auf Hochladen, und navigieren Sie zu den in Schritt 1 heruntergeladenen Dateien. Nachdem Sie alle Updatedateien ausgewählt haben, klicken Sie auf Hochladen. Klicken Sie dann auf die Schaltfläche Auswählen, um zur Seite Update importieren zurückzukehren.

    Screenshot: Auswählen hochgeladener Dateien.

    Dieser Screenshot veranschaulicht den Importschritt. Dateinamen stimmen möglicherweise nicht mit denen überein, die im Beispiel verwendet werden.

  7. Überprüfen Sie auf der Seite Update importieren die zu importierenden Dateien. Klicken Sie dann auf Update importieren, um den Importvorgang zu starten. Importieren Sie das Beispielmanifest für das Tutorial, das Beispielupdate (SWU-Datei) und das zuvor heruntergeladene Beispiel-A/B-Skript.

    Screenshot: „Update importieren“.

  8. Der Importvorgang beginnt, und auf dem Bildschirm wird der Abschnitt Importverlauf angezeigt. Wenn in der Spalte Status angezeigt wird, dass der Import erfolgreich war, wählen Sie den Header Verfügbare Updates aus. Ihr importiertes Update sollte nun in der Liste angezeigt werden.

    Screenshot des Auftragsstatus.

Weitere Informationen zum Importvorgang finden Sie unter Importieren eines Updates in Device Update.

Anzeigen von Gerätegruppen

Device Update verwendet Gruppen, um Geräte zu organisieren. Device Update ordnet Geräte basierend auf den zugewiesenen Tags und Kompatibilitätseigenschaften automatisch in Gruppen ein. Jedes Gerät gehört nur zu einer Gruppe, aber Gruppen können mehrere Untergruppen haben, um unterschiedliche Geräteklassen zu sortieren.

  1. Navigieren Sie oben auf der Seite zur Registerkarte Gruppen und Bereitstellungen.

    Screenshot: ungruppierte Geräte.

  2. Zeigen Sie die Liste der Gruppen und das Updatekonformitätsdiagramm an. Das Updatekonformitätsdiagramm zeigt die Anzahl von Geräten in verschiedenen Konformitätszuständen: Mit neuestem Update, Neue Updates verfügbar und Updates werden ausgeführt. Informieren Sie sich weiter über die Updatekonformität.

    Screenshot: Updatekonformitätsansicht.

  3. Sie sollten eine Gerätegruppe sehen, die das simulierte Gerät, das Sie in diesem Tutorial eingerichtet haben, sowie alle verfügbaren Updates für die Geräte in der neuen Gruppe enthält. Wenn Geräte vorhanden sind, die die Geräteklassenanforderungen der Gruppe nicht erfüllen, werden sie in einer entsprechenden Gruppe ungültiger Geräte angezeigt. Klicken Sie neben der Gruppe auf Bereitstellen, um das beste verfügbare Update für die neue benutzerdefinierte Gruppe aus dieser Ansicht bereitzustellen.

Weitere Informationen zu Tags und Gruppen finden Sie unter Verwalten von Gerätegruppen.

Bereitstellen des Updates

  1. Nachdem die Gruppe erstellt wurde, sollte unter Bestes Update ein neues Update für Ihre Gerätegruppe mit dem entsprechenden Link angezeigt werden. Möglicherweise müssen Sie den Browser einmal aktualisieren.

    Weitere Informationen zur Kompatibilität finden Sie unter Device Update-Konformität.

  2. Wählen Sie die Zielgruppe aus, indem Sie den Gruppennamen auswählen. Sie werden zu den Gruppendetails unter Allgemeine Informationen zu Gruppen weitergeleitet.

    Screenshot: Gruppendetails.

  3. Um die Bereitstellung einzuleiten, wechseln Sie zur Registerkarte Aktuelle Bereitstellung. Wählen Sie im Abschnitt Verfügbare Updates neben dem gewünschten Update den Link Bereitstellen aus. Das beste verfügbare Update für eine bestimmte Gruppe wird mit Beste hervorgehoben.

    Screenshot: Auswählen eines Updates.

  4. Planen Sie den Start Ihrer Bereitstellung unverzüglich oder in der Zukunft. Klicken Sie anschließend auf Erstellen.

    Tipp

    Das Startdatum und die Uhrzeit sind standardmäßig auf Werte festgelegt, die vom aktuellen Zeitpunkt aus 24 Stunden in der Zukunft liegen. Wählen Sie unbedingt ein anderes Datum und eine andere Uhrzeit aus, wenn die Bereitstellung früher beginnen soll.

    Screenshot: Erstellen einer Bereitstellung.

  5. Unter Bereitstellungsdetails wird der Status in Aktiv geändert. Das Bereitstellungsupdate ist mit (Wird bereitgestellt) gekennzeichnet.

    Screenshot: Bereitstellungsstatus.

  6. Zeigen Sie das Kompatibilitätsdiagramm an, um herauszufinden, ob das Update jetzt in Bearbeitung ist.

  7. Nachdem Ihr Gerät erfolgreich aktualisiert wurde, sehen Sie, dass Ihr Konformitätsdiagramm und die Bereitstellungsdetails so aktualisiert wurden, dass sie übereinstimmen.

    Screenshot: Update erfolgreich.

Überwachen der Updatebereitstellung

  1. Klicken Sie oben auf der Seite auf die Registerkarte Bereitstellungsverlauf.

    Screenshot: „Bereitstellungsverlauf“.

  2. Wählen Sie neben der von Ihnen erstellten Bereitstellung den Link Details aus.

    Screenshot: Bereitstellungsdetails.

  3. Wählen Sie Aktualisieren aus, um die neuesten Statusdetails anzuzeigen.

Jetzt haben Sie ein erfolgreiches End-to-End-Image-Update mithilfe von Device Update for IoT Hub auf einem Raspberry Pi 3 B+-Gerät abgeschlossen.

Bereinigen von Ressourcen

Bereinigen Sie Ihr Konto, die Instanz, den IoT-Hub und das IoT-Gerät für Device Update, falls Sie diese Komponenten nicht mehr benötigen.

Nächste Schritte