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
- Gerätegruppe erstellen.
- 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.
Herunterladen des Image
Beispielimages finden Sie auf der GitHub-Releaseseite für Device Update in Ressourcen. Die GZ-Datei ist das Basisimage, das Sie auf eine Raspberry Pi B 3+-Platine einspielen können. Die swUpdate-Datei ist das Update, das Sie über Device Update for IoT Hub importieren würden.
Einspielen einer SD-Karte mit dem Image
Installieren Sie das Device Update-Basisimage („adu-base-image“) mithilfe Ihres bevorzugten Tools zum Einspielen von Betriebssystemen auf der SD-Karte, die im Raspberry Pi 3 B+-Gerät verwendet werden soll.
Verwenden von bmaptool zum Einspielen der SD-Karte
Installieren Sie das Hilfsprogramm
bmaptool
, wenn Sie das noch nicht getan haben.sudo apt-get install bmap-tools
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 Hilfsprogrammdmesg
verwenden, um den richtigen Pfad zu finden.Heben Sie die Einbindung aller eingebundenen Partitionen vor dem Einspielen auf.
sudo umount /dev/<device>
Stellen Sie sicher, dass Sie über Schreibberechtigungen für das Gerät verfügen.
sudo chmod a+rw /dev/<device>
Optional: Zum schnelleren Einspielen laden Sie die Bitmapdatei und die Imagedatei herunter, und speichern Sie sie in demselben Verzeichnis.
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.
Erstellen eines Geräts oder Moduls 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.
Starten Sie IoT Hub im Azure-Portal.
Erstellen Sie ein neues Gerät.
Klicken Sie im linken Bereich auf Geräte. Wählen Sie dann Neu aus.
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.
Wählen Sie Speichern aus. Auf der Seite Geräte sollte das von Ihnen erstellte Gerät in der Liste aufgeführt sein.
Rufen Sie die Geräteverbindungszeichenfolge mit einer von zwei Optionen ab:
- Option 1: Verwenden des Device Update-Agents mit einer Modulkennung: Wählen Sie auf derselben Seite Geräte oben die Option + Modulkennung hinzufügen aus. Erstellen Sie ein neues Device Update-Modul mit dem Namen IoTHubDeviceUpdate. Wählen Sie andere Optionen, die für Ihren Anwendungsfall zutreffen, und dann Speichern aus. Wählen Sie das neu erstellte Modul aus. Wählen Sie in der Modulansicht neben Primäre Verbindungszeichenfolge das Symbol Kopieren aus.
- Option 2: Verwenden des Device Update-Agents mit der Geräteidentität: Wählen Sie in der Geräteansicht neben Primäre Verbindungszeichenfolge das Symbol Kopieren aus.
Fügen Sie die kopierten Zeichen irgendwo zur späteren Verwendung in den folgenden Schritten ein:
Diese kopierte Zeichenfolge ist Ihre Geräteverbindungszeichenfolge.
Vorbereiten von Konfigurationen auf dem Gerät für Device Update for IoT Hub
Auf dem Gerät müssen sich zwei Konfigurationsdateien befinden, damit Device Update for IoT Hub ordnungsgemäß konfiguriert wird. Die erste ist die Datei du-config.json
, die unter /adu/du-config.json
vorhanden sein muss. Die zweite ist die Datei du-diagnostics-config.json
, die unter /adu/du-diagnostics-config.json
vorhanden sein muss.
Im Folgenden finden Sie zwei Beispiele für die Dateien du-config.json
und du-diagnostics-config.json
:
Beispiel für „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 für „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
Stellen Sie sicher, dass Raspberry Pi 3 mit dem Netzwerk verbunden ist.
Folgen Sie diesen Anleitungen, um die Konfigurationsdetails hinzuzufügen:
Stellen Sie im PowerShell-Fenster mithilfe des folgenden Befehls eine SSH-Verbindung mit dem Computer her:
ssh raspberrypi3 -l root
Erstellen oder öffnen Sie die Datei
du-config.json
zur Bearbeitung mit:nano /adu/du-config.json
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 jetzt den vorstehenden Beispielinhalt von „du-config.json“, 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.
Nachdem Sie Ihre Änderungen abgeschlossen haben, drücken Sie STRG+X, um den Editor zu beenden. Geben Sie dann y ein, um die Änderungen zu speichern.
Jetzt müssen Sie die Datei
du-diagnostics-config.json
mit ähnlichen Befehlen erstellen. Beginnen Sie mit dem Erstellen oder Öffnen der Dateidu-diagnostics-config.json
zur Bearbeitung mit den folgenden Schritten:nano /adu/du-diagnostics-config.json
Kopieren Sie den vorstehenden Beispielinhalt von „du-diagnostics-config.json“, 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 nur ändern, wenn Ihre Implementierung davon abweicht.
Nachdem Sie Ihre Änderungen abgeschlossen haben, drücken Sie STRG+X, um den Editor zu beenden. Geben Sie dann y ein, um die Änderungen zu speichern.
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/
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 adu-agent
Überprüfen Sie mit dem folgenden Befehl, ob der Agent aktiv ist:
systemctl status adu-agent
Der Status sollte als aktiv in grün angezeigt werden.
Verbinden des Geräts in Device Update for IoT Hub
Klicken Sie im linken Bereich auf Geräte.
Wählen Sie den Link mit Ihrem Gerätenamen aus.
Wählen Sie oben auf der Seite die Option Gerätezwilling aus, wenn Sie mithilfe der IoT-Geräteidentität eine Verbindung mit Device Update direkt herstellen. Wählen Sie andernfalls das von Ihnen erstellte Modul und dann dessen Modulzwilling aus.
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.
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 Tags zu Ihrem Gerät
Melden Sie sich beim Azure-Portal an, und navigieren Sie zum IoT-Hub.
Suchen Sie im linken Bereich unter Geräte nach Ihrem IoT-Gerät, und wechseln Sie zum Geräte- oder Modulzwilling.
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.
Fügen Sie wie hier gezeigt einen neuen Device Update-Tagwert hinzu:
"tags": { "ADUGroup": "<CustomTagValue>" }
Importieren des Updates
Laden Sie das Beispielmanifest für das Tutorial („Tutorial Import Manifest_Pi.json“) und das Beispielupdate („adu-update-image-raspberrypi3-0.6.5073.1.swu“) aus den Releaseressouren für den neuesten Agent herunter.
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.
Wählen Sie die Registerkarte Updates aus.
Wählen Sie + Neues Update importieren aus.
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.
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.
Dieser Screenshot veranschaulicht den Importschritt. Dateinamen stimmen möglicherweise nicht mit denen überein, die im Beispiel verwendet werden.
Überprüfen Sie auf der Seite Update importieren die zu importierenden Dateien. Klicken Sie dann auf Update importieren, um den Importvorgang zu starten.
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.
Informieren Sie sich weiter über das Importieren von Updates.
Erstellen einer Updategruppe
Navigieren Sie oben auf der Seite zur Registerkarte Gruppen und Bereitstellungen.
Klicken Sie auf Gruppe hinzufügen, um eine neue Gruppe zu erstellen.
Wählen Sie in der Liste ein IoT Hub-Tag und eine Geräteklasse aus. Wählen Sie anschließend Gruppe erstellen aus.
Nachdem die Gruppe erstellt wurde, werden das Updatekonformitä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.
Die neu erstellte Gruppe und alle verfügbaren Updates für die Geräte in der neuen Gruppe sollten angezeigt werden. Wenn es Geräte gibt, die die Geräteklassenanforderungen der Gruppe nicht erfüllen, werden sie in einer entsprechenden ungültigen Gruppe angezeigt. Um das beste verfügbare Update für die neue benutzerdefinierte Gruppe aus dieser Ansicht bereitzustellen, wählen Sie neben der Gruppe Bereitstellen aus.
Informieren Sie sich weiter über das Hinzufügen von Tags und Erstellen von Updategruppen.
Bereitstellen des Updates
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 angezeigt werden. Möglicherweise müssen Sie den Browser einmal aktualisieren. Informieren Sie sich weiter über die Updatekonformität.
Wählen Sie die Zielgruppe aus, indem Sie den Gruppennamen auswählen. Sie werden zu den Gruppendetails unter Allgemeine Informationen zu Gruppen weitergeleitet.
Um die Bereitstellung zu starten, wechseln Sie zur Registerkarte Aktuelle Bereitstellung. Klicken Sie im Abschnitt Verfügbare Updates auf den Link Bereitstellen neben dem gewünschten Update. Das beste verfügbare Update für eine bestimmte Gruppe wird mit Beste hervorgehoben.
Planen Sie den Start Ihrer Bereitstellung unverzüglich oder in der Zukunft. Klicken Sie anschließend auf Erstellen.
Unter Bereitstellungsdetails wird der Status in Aktiv geändert. Das Bereitstellungsupdate ist mit (Wird bereitgestellt) gekennzeichnet.
Zeigen Sie das Kompatibilitätsdiagramm an, um herauszufinden, ob das Update jetzt in Bearbeitung ist.
Nachdem das Gerät erfolgreich aktualisiert wurde, erkennen Sie, dass Ihr Konformitätsdiagramm und die Bereitstellungsdetails so aktualisiert wurden, dass sie übereinstimmen.
Überwachen der Updatebereitstellung
Klicken Sie oben auf der Seite auf die Registerkarte Bereitstellungsverlauf.
Klicken Sie neben der erstellten Bereitstellung auf Details.
Klicken Sie auf Aktualisieren, 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.