Freigeben über


Lernprogramm: Geräteupdate für Azure IoT Hub mit dem Raspberry Pi 3 B+ Referenzimage

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. Normalerweise ist es einfacher, die Ergebnisse einer Imageaktualisierung zwischen einer Vorproduktionsumgebung und einer Produktionsumgebung zu replizieren, da sie nicht die gleichen Herausforderungen wie Pakete und deren Abhängigkeiten darstellt. Aufgrund ihrer atomischen Natur können Sie auch problemlos ein A/B-Failovermodell übernehmen.

Dieses Lernprogramm führt Sie durch die Schritte zum Ausführen eines end-to-end imagebasierten Updates mithilfe von Device Update for IoT Hub auf einem Raspberry Pi 3 B+ Board.

In diesem Tutorial lernen Sie, wie Sie:

  • Laden Sie ein Bild herunter.
  • Fügen Sie Ihrem IoT-Gerät ein Etikett hinzu.
  • Importieren eines Updates
  • Erstellen einer Gerätegruppe.
  • Bereitstellung eines Image-Updates
  • Überwachen Sie die Updatebereitstellung.

Hinweis

Bildaktualisierungen in diesem Lernprogramm wurden auf dem Raspberry Pi B3-Board überprüft.

Voraussetzungen

Falls noch nicht geschehen, erstellen Sie ein Geräteaktualisierungskonto und eine Instanz , und konfigurieren Sie einen IoT-Hub.

Herunterladen des Bilds

Wir stellen Beispielbilder in Assets auf der Release-Seite von Device Update auf GitHub bereit. Die .gz Datei ist die Image-Datei, die Sie auf einen Raspberry Pi 3 B+ flashen können. Die swUpdate-Datei ist das Update, das Sie über Device Update für IoT Hub importieren würden.

Das Image auf eine SD-Karte flashen

Verwenden Sie Ihr bevorzugtes Betriebssystem-Flashing-Tool, um das Device Update-Basisimage (adu-base-image) auf der SD-Karte zu installieren, die auf dem Raspberry Pi 3 B+-Gerät verwendet wird.

Verwenden von bmaptool zum Einspielen der SD-Karte

  1. Installieren Sie das bmaptool Dienstprogramm, falls nicht bereits installiert.

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

  3. Hängen Sie alle eingehängten Partitionen vor dem Flashen aus.

    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: Laden Sie die Bimap-Datei und die Bilddatei herunter und legen Sie sie im selben Verzeichnis ab.

  6. Spielen Sie die SD-Karte ein.

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

Geräteupdate für Azure IoT Hub-Software unterliegt den folgenden Lizenzbedingungen:

Lesen Sie die Lizenzbedingungen vor der Verwendung des Agents. Ihre Installation und Nutzung stellt Ihre Annahme dieser Bedingungen dar. Wenn Sie den Lizenzbedingungen nicht zustimmen, verwenden Sie nicht den Device Update for IoT Hub Agent.

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

Fügen Sie nun das Gerät zum IoT Hub hinzu. Von IoT Hub aus wird eine Verbindungszeichenfolge für das Gerät generiert.

  1. Starten Sie IoT Hub im Azure-Portal.

  2. Erstellen Sie ein neues Gerät.

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

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

  5. Wählen Sie Speichern aus. Auf der Seite "Geräte" sollte sich das erstellte Gerät in der Liste befinden.

  6. Rufen Sie die Geräteverbindungszeichenfolge mithilfe einer von zwei Optionen ab:

    • Option 1: Verwenden Sie den Geräteaktualisierungs-Agent mit einer Modulidentität: Wählen Sie auf derselben Seite "Geräte " oben "Modulidentität hinzufügen" aus. Erstellen Sie ein neues Device Update-Modul mit dem Namen IoTHubDeviceUpdate. Wählen Sie andere Optionen aus, während sie für Ihren Anwendungsfall gelten, und wählen Sie dann "Speichern" aus. Wählen Sie das neu erstellte Modul aus. Wählen Sie in der Modulansicht das Symbol "Kopieren " neben der primären Verbindungszeichenfolge aus.
    • Option 2: Verwenden Sie den Geräteaktualisierungs-Agent mit der Geräteidentität: Wählen Sie in der Geräteansicht das Symbol "Kopieren " neben der primären Verbindungszeichenfolge aus.
  7. Fügen Sie die kopierten Zeichen an einer beliebigen Stelle ein, um sie später in den folgenden Schritten zu verwenden:

    Diese kopierte Zeichenfolge ist Ihre Geräteverbindungszeichenfolge.

Vorbereiten von Gerätekonfigurationen für Geräteupdates für IoT Hub

Zwei Konfigurationsdateien müssen sich auf dem Gerät befinden, damit geräteupdate für IoT Hub ordnungsgemäß konfiguriert wird. Die erste Datei ist die du-config.json-Datei, die an /adu/du-config.json vorhanden sein muss. Die zweite Datei ist die du-diagnostics-config.json-Datei, die an /adu/du-diagnostics-config.json vorhanden sein muss.

Hier sind zwei Beispiele für die du-config.json- und die du-diagnostics-config.json-Dateien:

Beispiel-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"
         }
      ]
   }  

Beispiel-du-diagnostics-config.json

   {
      "logComponents":[
         {
               "componentName":"adu",
               "logPath":"/adu/logs/"
         },
         {
               "componentName":"do",
               "logPath":"/var/log/deliveryoptimization-agent/"
         }
      ],
      "maxKilobytesToUploadPerLogPath":50
   }

Konfigurieren des Device Update-Agents auf Raspberry Pi

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

  2. Führen Sie die folgenden Anweisungen aus, um die Konfigurationsdetails hinzuzufügen:

    1. Melden Sie sich zunächst über SSH am Rechner an, indem Sie den folgenden Befehl im PowerShell-Fenster verwenden:

         ssh raspberrypi3 -l root
      
    2. Erstellen oder öffnen Sie die du-config.json Datei zum Bearbeiten mit:

         nano /adu/du-config.json
      
    3. 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 das vorherige Beispiel du-config.json Inhalte, und ersetzen Sie die für Ihr Gerät erforderlichen Konfigurationen. Ersetzen Sie dann die Beispielverbindungszeichenfolge durch die Zeichenfolge für das Gerät, das Sie in den vorherigen Schritten erstellt haben.

    4. Nachdem Sie die Änderungen abgeschlossen haben, wählen Sie STRG+X aus, um den Editor zu beenden. Geben Sie dann "y" ein, um die Änderungen zu speichern.

    5. Jetzt müssen Sie die du-diagnostics-config.json Datei mithilfe ähnlicher Befehle erstellen. Beginnen Sie mit dem Erstellen oder Öffnen der Datei für die du-diagnostics-config.json Bearbeitung mithilfe von:

         nano /adu/du-diagnostics-config.json
      
    6. Kopieren Sie das vorherige Beispiel du-diagnostics-config.json Inhalt, und ersetzen Sie alle Konfigurationen, die sich vom Standardbuild unterscheiden. Die Beispieldatei du-diagnostics-config.json repräsentiert die Standardprotokollspeicherorte für Device Update für IoT Hub. Sie müssen diese nur ändern, wenn sich Ihre Implementierung unterscheidet.

    7. Nachdem Sie die Änderungen abgeschlossen haben, wählen Sie STRG+X aus, um den Editor zu beenden. Geben Sie dann "y" ein, um die Änderungen zu speichern.

    8. Verwenden Sie den folgenden Befehl, um die Dateien im /adu/ Verzeichnis anzuzeigen. Sie sollten beide Ihrer Konfigurationsdateien, die du-diagnostics-config.json Dateien, zur Bearbeitung betrachten, indem Sie Folgendes verwenden:

         ls -la /adu/
      
  3. Starten Sie den Geräteupdate-Systemdaemon neu, um sicherzustellen, dass die Konfigurationen angewendet wurden. Verwenden Sie den folgenden Befehl innerhalb des Terminals, in dem Sie bei raspberrypi angemeldet sind.

       systemctl start adu-agent
    
  4. Überprüfen Sie, ob der Agent live ist, indem Sie den folgenden Befehl verwenden:

       systemctl status adu-agent
    

    Sie sollten sehen, dass der Status wieder lebendig und grün ist.

Verbinden des Geräts im Geräteupdate für IoT Hub

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

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

  3. Wählen Sie oben auf der Seite "Device Twin " aus, wenn Sie mithilfe der IoT-Geräteidentität eine direkte Verbindung mit Device Update herstellen. Wählen Sie andernfalls das Modul aus, das Sie erstellt haben, und wählen Sie dessen Modultwin aus.

  4. Suchen Sie im gemeldeten Abschnitt der Device Twin-Eigenschaften nach der Linux-Kernelversion. Für ein neues Gerät, das kein Update von Device Update erhalten hat, stellt der Wert "DeviceManagement:DeviceInformation:1.swVersion " die Firmwareversion dar, die auf dem Gerät ausgeführt wird. Nachdem ein Update auf ein Gerät angewendet wurde, verwendet Device Update den Wert der AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId-Eigenschaft , um die firmwareversion darzustellen, die auf dem Gerät ausgeführt wird.

  5. Die Basis- und Aktualisierungsimagedateien weisen eine Versionsnummer im Dateinamen auf.

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

Verwenden Sie diese Versionsnummer im späteren Abschnitt "Update importieren".

Hinzufügen eines Tags zu Ihrem Gerät

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zum IoT-Hub.

  2. Suchen Sie im linken Bereich unter Geräte Ihr IoT-Gerät, und navigieren Sie zu Ihrem Geräte-Twin oder Modul-Twin.

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

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

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

Importieren des Updates

  1. Laden Sie das Beispiel-Lernprogrammmanifest (Tutorial Import Manifest_Pi.json) und das Beispielupdate (adu-update-image-raspberrypi3-0.6.5073.1.swu) von Release Assets 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 verwendet, um Ihre Aktualisierungsdateien für den Import vorzubereiten.

    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. Wählen Sie in Ihrem Container Hochladen aus, und wechseln Sie zu den in Schritt 1 heruntergeladenen Dateien. Nachdem Sie alle Aktualisierungsdateien ausgewählt haben, wählen Sie "Hochladen" aus. 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.

    Screenshot, der das Importupdate zeigt.

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

    Screenshot, der den Auftragsstatus zeigt.

Erfahren Sie mehr über das Importieren von Updates.

Erstellen einer Updategruppe

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

    Screenshot, der ungruppierte Geräte zeigt.

  2. Wählen Sie Gruppe hinzufügen aus, um eine neue Gruppe zu erstellen.

    Screenshot, der das Hinzufügen von Gerätegruppen zeigt.

  3. Wählen Sie in der Liste ein IoT Hub-Tag und eine Geräteklasse aus. Wählen Sie anschließend Gruppe erstellen aus.

    Screenshot der Tag-Auswahl.

  4. Nachdem die Gruppe erstellt wurde, werden das Kompatibilitätsdiagramm und die Gruppenliste aktualisiert. 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, der die Updatekonformitätsansicht zeigt.

  5. Ihre neu erstellte Gruppe und alle verfügbaren Updates für die Geräte in der neuen Gruppe sollten angezeigt werden. Wenn Geräte vorhanden sind, die die Geräteklassenanforderungen der Gruppe nicht erfüllen, werden sie in einer entsprechenden ungültigen Gruppe angezeigt. Klicken Sie in dieser Ansicht neben der Gruppe auf Bereitstellen, um das beste verfügbare Update für die neue benutzerdefinierte Gruppe bereitzustellen.

Erfahren Sie mehr darüber, wie Sie Tags hinzufügen und Updategruppen erstellen.

Bereitstellen des Updates

  1. Nachdem die Gruppe erstellt wurde, sollte ein neues Update für Ihre Gerätegruppe verfügbar sein. Ein Link zum Update sollte unter "Bestes Update" stehen. Möglicherweise müssen Sie den Browser einmal aktualisieren. Informieren Sie sich weiter über die Updatekonformitä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, der die Gruppendetails zeigt.

  3. Um die Bereitstellung zu starten, wechseln Sie zur Registerkarte "Aktuelle Bereitstellung ". Wählen Sie den Bereitstellungslink neben dem gewünschten Update im Abschnitt "Verfügbare Updates" 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 sofort oder zu einem späteren Zeitpunkt. Klicken Sie anschließend auf Erstellen.

    Screenshot der Schaltfläche

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

    Screenshot, der die aktive Bereitstellung zeigt.

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

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

    Screenshot, der zeigt, dass Update erfolgreich war.

Überwachung der Updatebereitstellung

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

    Screenshot, der den Bereitstellungsverlauf zeigt.

  2. Klicken Sie neben der von Ihnen erstellten Bereitstellung auf Details.

    Screenshot, der die Bereitstellungsdetails zeigt.

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

Sie haben jetzt ein erfolgreiches End-to-End-Imageupdate mit Device Update für IoT Hub auf einem Raspberry Pi 3 B+ -Gerät abgeschlossen.

Bereinigen von Ressourcen

Wenn sie nicht mehr benötigt wird, bereinigen Sie Ihr Geräteupdatekonto, Instanz, IoT-Hub und IoT-Gerät.

Nächste Schritte