Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Schnellstart erstellen Sie ein simuliertes Gerät auf Ihrem Windows-Computer. Das simulierte Gerät wird für die Verwendung des X.509-Zertifikatnachweises zur Authentifizierung konfiguriert. Nachdem Sie Ihr Gerät konfiguriert haben, stellen Sie es mithilfe des Azure IoT Hub Device Provisioning Service in Ihrem IoT-Hub bereit.
Wenn Sie mit dem Prozess der Bereitstellung noch nicht vertraut sind, sollten Sie zunächst die Übersicht zur Bereitstellung lesen. Stellen Sie außerdem sicher, dass Sie die Schritte in der Schnellstartanleitung ausführen: Einrichten des IoT Hub-Gerätebereitstellungsdiensts mit dem Azure-Portal , bevor Sie fortfahren.
In dieser Schnellstartanleitung wird die Vorgehensweise anhand einer Projektmappe für eine Windows-Arbeitsstation veranschaulicht. Sie können die Schritte aber auch unter Linux ausführen. Ein Beispiel für Linux finden Sie im Tutorial: Bereitstellen für Geolatenz.
Prerequisites
Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Führen Sie die Schritte in der Schnellstartanleitung aus: Einrichten des IoT Hub-Gerätebereitstellungsdiensts mit dem Azure-Portal.
Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung. Informationen zu Linux oder macOS finden Sie in der SDK-Dokumentation im entsprechenden Abschnitt unter Vorbereiten Ihrer Entwicklungsumgebung.
Installieren Sie Visual Studio 2022 mit der aktivierten Workload Desktopentwicklung mit C++. Visual Studio 2015, Visual Studio 2017 und Visual Studio 2019 werden ebenfalls unterstützt. Informationen zu Linux oder macOS finden Sie in der SDK-Dokumentation im entsprechenden Abschnitt unter Vorbereiten Ihrer Entwicklungsumgebung.
Installieren Sie das neueste CMake-Buildsystem. Überprüfen Sie unbedingt die Option, mit der die ausführbare Datei „CMake“ Ihrem Pfad hinzugefügt wird.
Important
Vergewissern Sie sich vor Beginn der Installation von
CMake, dass die erforderlichen Visual Studio-Komponenten (Visual Studio und die Workload „Desktopentwicklung mit C++“) auf dem Computer installiert sind. Sobald die Voraussetzungen erfüllt sind und der Download überprüft wurde, installieren Sie das CMake-Buildsystem. Außerdem können ältere Versionen des CMake-Buildsystems die in diesem Artikel verwendete Lösungsdatei nicht generieren. Stellen Sie sicher, dass Sie die neueste Version von CMake verwenden.
Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung. Informationen zu Linux oder macOS finden Sie in der SDK-Dokumentation im entsprechenden Abschnitt unter Vorbereiten Ihrer Entwicklungsumgebung.
Installieren Sie das .NET SDK 6.0 oder höher auf Ihrem Windows-Computer. Sie können den folgenden Befehl ausführen, um Ihre Version zu überprüfen:
dotnet --info
Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung. Informationen zu Linux oder macOS finden Sie in der SDK-Dokumentation im entsprechenden Abschnitt unter Vorbereiten Ihrer Entwicklungsumgebung.
- Installieren Sie Node.js v4.0 oder höher auf Ihrem Computer.
Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung.
- Python 3.6 oder höher auf Ihrem Computer.
Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung. Informationen zu Linux oder macOS finden Sie in der SDK-Dokumentation im entsprechenden Abschnitt unter Vorbereiten Ihrer Entwicklungsumgebung.
Installieren Sie das Java SE Development Kit 8 oder höher auf Ihrem Computer.
Laden Sie Maven herunter, und installieren Sie es.
Installieren Sie die aktuelle Version von Git. Stellen Sie sicher, dass Git den Umgebungsvariablen hinzugefügt wurde, auf die das Befehlsfenster Zugriff hat. Unter den Git-Clienttools von Software Freedom Conservancy finden Sie die neueste Version der zu installierenden
git-Tools. Hierzu zählt auch die Befehlszeilen-App Git Bash, über die Sie mit Ihrem lokalen Git-Repository interagieren können.Sorgen Sie dafür, dass OpenSSL auf Ihrem Computer installiert wird. Unter Windows enthält Ihre Git-Installation eine Installation von OpenSSL. Sie können über die Git Bash-Eingabeaufforderung auf OpenSSL zugreifen. Zur Überprüfung, ob OpenSSL installiert ist, öffnen Sie eine Git Bash-Eingabeaufforderung, und geben Sie
openssl versionein.Note
Es sei denn, Sie sind mit OpenSSL bereits vertraut und es ist auf Ihrem Windows-Computer installiert, empfehlen wir die Nutzung von OpenSSL über die Git Bash-Konsole. Alternativ können Sie den Quellcode herunterladen und OpenSSL erstellen. Weitere Informationen dazu finden Sie auf der Seite OpenSSL-Downloads. Oder Sie können OpenSSL vorab von einem Nicht-Microsoft-Anbieter herunterladen. Weitere Informationen dazu finden Sie im OpenSSL-Wiki. Microsoft garantiert nicht die Gültigkeit von Paketen, die von Nicht-Microsoft-Anbietern heruntergeladen wurden. Wenn Sie OpenSSL erstellen oder herunterladen möchten, sorgen Sie dafür, dass auf die OpenSSL-Binärdatei in Ihrem Pfad zugegriffen werden kann und dass die Umgebungsvariable
OPENSSL_CNFauf den Pfad Ihrer Datei openssl.cnf festgelegt wird.Öffnen Sie sowohl eine Windows-Eingabeaufforderung als auch eine Git Bash-Eingabeaufforderung.
Bei den Schritten in diesem Schnellstart wird davon ausgegangen, dass Sie einen Windows-Computer und die OpenSSL-Installation verwenden, die als Teil von Git installiert wurde. Sie verwenden die Git Bash-Eingabeaufforderung für die Ausgabe von OpenSSL-Befehlen und die Windows-Eingabeaufforderung für alles andere. Wenn Sie Linux verwenden, können Sie alle Befehle aus einer Bash-Shell ausgeben.
Vorbereiten Ihrer Entwicklungsumgebung
In diesem Abschnitt bereiten Sie eine Entwicklungsumgebung vor, die zum Erstellen des Azure IoT C SDK verwendet wird. Mit dem Beispielcode wird versucht, das Gerät während der Startsequenz des Geräts bereitzustellen.
Öffnen Sie einen Webbrowser, und wechseln Sie zur Releaseseite für das Azure IoT C SDK.
Wählen Sie oben auf der Seite die Registerkarte Tags aus.
Kopieren Sie den Tagnamen für das aktuelle Release des Azure IoT C SDK.
Führen Sie in Ihrer Windows-Eingabeaufforderung die folgenden Befehle zum Klonen des aktuellen Releases des GitHub-Repositorys Azure IoT-Geräte-SDK für C aus. Ersetzen Sie
<release-tag>durch das Tag, das Sie im vorherigen Schritt kopiert haben. Beispiel:lts_01_2023.git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git cd azure-iot-sdk-c git submodule update --initDieser Vorgang kann mehrere Minuten dauern.
Wenn der Vorgang abgeschlossen ist, führen Sie die folgenden Befehle aus dem Verzeichnis
azure-iot-sdk-caus:mkdir cmake cd cmakeDas Codebeispiel verwendet ein X.509-Zertifikat für den Nachweis mittels X.509-Authentifizierung. Erstellen Sie mithilfe des folgenden Befehls eine spezifische SDK-Version für Ihre Entwicklungsplattform, die den Gerätebereitstellungsclient enthält. Im
cmake-Verzeichnis wird eine Visual Studio-Projektmappe für das simulierte Gerät generiert.Wenn Sie im folgenden Befehl den verwendeten Pfad mit
-Dhsm_custom_libangeben, müssen Sie unbedingt den absoluten Pfad zur Bibliothek in dem zuvor erstellten Verzeichniscmakeverwenden. Beim gezeigten Pfad wird davon ausgegangen, dass Sie das C-SDK im Stammverzeichnis des Laufwerks „C:“ geklont haben. Wenn Sie ein anderes Verzeichnis verwendet haben, passen Sie den Pfad entsprechend an.
Tip
Wenn cmake Ihr C++-Compiler nicht gefunden wird, treten beim Ausführen des vorherigen Befehls möglicherweise Buildfehler auf. Führen Sie in diesem Fall den Befehl in der Visual Studio Developer-Eingabeaufforderung aus.
Nach einer erfolgreichen Erstellung ähneln die letzten Ausgabezeilen der folgenden Ausgabe:
-- Building for: Visual Studio 17 2022 -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.22000. -- The C compiler identification is MSVC 19.32.31329.0 -- The CXX compiler identification is MSVC 19.32.31329.0 ... -- Configuring done -- Generating done -- Build files have been written to: C:/azure-iot-sdk-c/cmake
Klonen Sie in Ihrer Windows-Eingabeaufforderung das Azure IoT SDK für .NET GitHub-Repository mit dem folgenden Befehl:
git clone https://github.com/Azure/azure-iot-sdk-csharp.git
Klonen Sie in Ihrer Windows-Eingabeaufforderung das Azure IoT Node.js SDK-GitHub-Repository mit dem folgenden Befehl:
git clone https://github.com/Azure/azure-iot-sdk-node.git
Klonen Sie in Ihrer Windows-Eingabeaufforderung das Azure IoT Python SDK GitHub-Repository mit dem folgenden Befehl:
git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive
Note
Die in diesem Tutorial verwendeten Beispiele befinden sich im v2-Branch des Repositorys „azure-iot-sdk-python“. V3 des Python SDK ist für die Verwendung in der Betaversion verfügbar.
Klonen Sie in Ihrer Windows-Eingabeaufforderung das Azure IoT-SDKs für Java GitHub-Repository mit dem folgenden Befehl:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursiveNavigieren Sie zum Stammverzeichnis
azure-iot-sdk-java, und erstellen Sie das Projekt, um alle erforderlichen Pakete herunterzuladen.cd azure-iot-sdk-java mvn install -DskipTests=true
Erstellen eines selbstsignierten X.509-Gerätezertifikats
In diesem Abschnitt verwenden Sie OpenSSL zum Erstellen eines selbstsignierten X.509-Zertifikats und eines privaten Schlüssels. Dieses Zertifikat wird in Ihre Instanz des Bereitstellungsdiensts hochgeladen und vom Dienst überprüft.
Caution
Verwenden Sie mit OpenSSL erstellte Zertifikate in diesem Schnellstart nur für Entwicklungstests. Verwenden Sie diese Zertifikate nicht in der Produktion. Diese Zertifikate laufen nach 30 Tagen ab und enthalten möglicherweise hartcodierte Kennwörter, z. B. 1234. Informationen zum Abrufen von Zertifikaten, die für den Einsatz in der Produktion geeignet sind, finden Sie in der Azure IoT Hub-Dokumentation unter Abrufen eines X.509-Zertifizierungsstellenzertifikats.
Führen Sie die Schritte in diesem Abschnitt in Ihrer Git Bash-Eingabeaufforderung aus.
Navigieren Sie in Ihrer Git Bash-Eingabeaufforderung zu dem Verzeichnis, in dem Sie Ihre Zertifikate erstellen möchten.
Führen Sie den folgenden Befehl aus:
winpty openssl req -outform PEM -x509 -sha256 -newkey rsa:4096 -keyout device-key.pem -out device-cert.pem -days 30 -extensions usr_cert -addext extendedKeyUsage=clientAuth -subj "//CN=my-x509-device"Important
Der zusätzliche Schrägstrich für den Antragstellernamen (
//CN=my-x509-device) ist nur erforderlich, um die Zeichenfolge für Git auf Windows-Plattformen mit einem Escapezeichen zu versehen.Wenn die Aufforderung PEM-Passphrase eingeben: angezeigt wird, verwenden Sie die Passphrase
1234.Wenn Sie zum Bestätigen der PEM-Passphrase aufgefordert werden, geben Sie die Passphrase
1234erneut ein.Eine Datei für das öffentliche Schlüsselzertifikat (device-cert.pem) und eine Datei für den privaten Schlüssel (device-key.pem) sollten jetzt in dem Verzeichnis generiert werden, in dem Sie den Befehl
opensslausgeführt haben.Für die Zertifikatdatei ist der CN des Antragstellers auf
my-x509-devicefestgelegt. Bei X.509-basierten Registrierungen wird die Registrierungs-ID auf den allgemeinen Namen festgelegt. Die Registrierungs-ID ist eine von der Groß- und Kleinschreibung unabhängige Zeichenfolge aus alphanumerischen Zeichen und Sonderzeichen:'-','.','_',':'. Das letzte Zeichen muss alphanumerisch oder ein Bindestrich ('-') sein. Der allgemeine Name muss diesem Format entsprechen. DPS unterstützt Registrierungs-IDs mit einer Länge von bis zu 128 Zeichen; die maximale Länge des allgemeinen Namens des Antragstellers in einem X.509-Zertifikat beträgt jedoch 64 Zeichen. Die Registrierungs-ID ist daher auf 64 Zeichen beschränkt, wenn Sie X.509-Zertifikate verwenden.Die Zertifikatdatei ist Base64-codiert. Wenn Sie den allgemeinen Namen (Common Name, CN) des Antragstellers und andere Eigenschaften der Zertifikatdatei anzeigen möchten, geben Sie den folgenden Befehl ein:
Certificate: Data: Version: 3 (0x2) Serial Number: 77:3e:1d:e4:7e:c8:40:14:08:c6:09:75:50:9c:1a:35:6e:19:52:e2 Signature Algorithm: sha256WithRSAEncryption Issuer: CN = my-x509-device Validity Not Before: May 5 21:41:42 2022 GMT Not After : Jun 4 21:41:42 2022 GMT Subject: CN = my-x509-device Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (4096 bit) Modulus: 00:d2:94:37:d6:1b:f7:43:b4:21:c6:08:1a:d6:d7: e6:40:44:4e:4d:24:41:6c:3e:8c:b2:2c:b0:23:29: ... 23:6e:58:76:45:18:03:dc:2e:9d:3f:ac:a3:5c:1f: 9f:66:b0:05:d5:1c:fe:69:de:a9:09:13:28:c6:85: 0e:cd:53 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 63:C0:B5:93:BF:29:F8:57:F8:F9:26:44:70:6F:9B:A4:C7:E3:75:18 X509v3 Authority Key Identifier: keyid:63:C0:B5:93:BF:29:F8:57:F8:F9:26:44:70:6F:9B:A4:C7:E3:75:18 X509v3 Extended Key Usage: TLS Web Client Authentication Signature Algorithm: sha256WithRSAEncryption 82:8a:98:f8:47:00:85:be:21:15:64:b9:22:b0:13:cc:9e:9a: ed:f5:93:b9:4b:57:0f:79:85:9d:89:47:69:95:65:5e:b3:b1: ... cc:b2:20:9a:b7:f2:5e:6b:81:a1:04:93:e9:2b:92:62:e0:1c: ac:d2:49:b9:36:d2:b0:21
Der Beispielcode erfordert einen privaten Schlüssel, der nicht verschlüsselt ist. Führen Sie den folgenden Befehl aus, um einen unverschlüsselten privaten Schlüssel zu erstellen:
Wenn die Aufforderung Enter pass phrase for device-key.pem (Passphrase für device-key.pem eingeben) angezeigt wird, verwenden Sie dieselbe Passphrase wie zuvor,
1234.
Lassen Sie die Git Bash-Eingabeaufforderung geöffnet. Sie benötigen sie im weiteren Verlauf dieses Schnellstarts.
Der C#-Beispielcode ist für die Verwendung von X.509-Zertifikaten konzipiert, die in einer kennwortgeschützten Datei im PKCS12-Format (certificate.pfx) gespeichert sind. Sie benötigen noch die Datei für das öffentliche Schlüsselzertifikat im PEM-Format (device-cert.pem), die Sie gerade erstellt haben, um im weiteren Verlauf dieses Schnellstarts einen einzelnen Registrierungseintrag zu erstellen.
Geben Sie zum Generieren der von dem Beispiel erwarteten Datei im PKCS12-Format den folgenden Befehl ein:
Wenn die Aufforderung Enter pass phrase for device-key.pem (Passphrase für device-key.pem eingeben) angezeigt wird, verwenden Sie dieselbe Passphrase wie zuvor,
1234.Wenn die Aufforderung Enter Export Password: (Exportkennwort eingeben) angezeigt wird, verwenden Sie das Kennwort
1234.Wenn die Aufforderung Verifying – Enter Export Password: (Überprüfen – Kennwort eingeben) angezeigt wird, verwenden Sie erneut das Kennwort
1234.Jetzt sollte eine Zertifikatdatei im PKCS12-Format (certificate.pfx) in dem Verzeichnis generiert werden, in dem Sie den Befehl
opensslausgeführt haben.Kopieren Sie die Zertifikatdatei im PKCS12-Format in das Projektverzeichnis für das Beispiel zur X.509-Gerätebereitstellung. Der angegebene Pfad ist relativ zu dem Speicherort, in den Sie das Beispiel-Repository heruntergeladen haben.
cp certificate.pfx ./azure-iot-sdk-csharp/provisioning/device/samples/"Getting Started"/X509Sample
Sie benötigen die Git Bash-Eingabeaufforderung nicht für den Rest dieses Schnellstarts. Möglicherweise möchten Sie sie aber geöffnet lassen, damit Sie Ihr Zertifikat überprüfen können, wenn in späteren Schritten Probleme auftreten.
Der Beispielcode erfordert einen privaten Schlüssel, der nicht verschlüsselt ist. Führen Sie den folgenden Befehl aus, um einen unverschlüsselten privaten Schlüssel zu erstellen:
Wenn die Aufforderung Enter pass phrase for device-key.pem (Passphrase für device-key.pem eingeben) angezeigt wird, verwenden Sie dieselbe Passphrase wie zuvor,
1234.Kopieren Sie das Gerätezertifikat und den unverschlüsselten privaten Schlüssel in das Projektverzeichnis für das Beispiel zur X.509-Gerätebereitstellung. Der angegebene Pfad ist relativ zu dem Speicherort, in den Sie das SDK heruntergeladen haben.
cp device-cert.pem ./azure-iot-sdk-node/provisioning/device/samples cp unencrypted-device-key.pem ./azure-iot-sdk-node/provisioning/device/samples
Sie benötigen die Git Bash-Eingabeaufforderung nicht für den Rest dieses Schnellstarts. Möglicherweise möchten Sie sie aber geöffnet lassen, damit Sie Ihr Zertifikat überprüfen können, wenn in späteren Schritten Probleme auftreten.
Kopieren Sie das Gerätezertifikat und den privaten Schlüssel in das Projektverzeichnis für das Beispiel zur X.509-Gerätebereitstellung. Der angegebene Pfad ist relativ zu dem Speicherort, in den Sie das SDK heruntergeladen haben.
cp device-cert.pem ./azure-iot-sdk-python/samples/async-hub-scenarios cp device-key.pem ./azure-iot-sdk-python/samples/async-hub-scenarios
Sie benötigen die Git Bash-Eingabeaufforderung nicht für den Rest dieses Schnellstarts. Möglicherweise möchten Sie sie aber geöffnet lassen, damit Sie Ihr Zertifikat überprüfen können, wenn in späteren Schritten Probleme auftreten.
Der Java-Beispielcode erfordert einen privaten Schlüssel, der nicht verschlüsselt ist. Führen Sie den folgenden Befehl aus, um einen unverschlüsselten privaten Schlüssel zu erstellen:
Wenn die Aufforderung Enter pass phrase for device-key.pem (Passphrase für device-key.pem eingeben) angezeigt wird, verwenden Sie dieselbe Passphrase wie zuvor,
1234.
Lassen Sie die Git Bash-Eingabeaufforderung geöffnet. Sie benötigen sie im weiteren Verlauf dieses Schnellstarts.
Erstellen einer Geräteregistrierung
In Azure IoT Device Provisioning Service werden zwei Registrierungsarten unterstützt:
- Registrierungsgruppen: Für die Registrierung mehrerer verbundener Geräte
- Individuelle Registrierung: Für die Registrierung eines einzelnen Geräts
In diesem Artikel wird veranschaulicht, wie eine individuelle Registrierung für ein einzelnes Gerät, das mit einem IoT-Hub bereitgestellt werden soll, durchgeführt wird.
Melden Sie sich beim Azure-Portal an, und navigieren Sie zur Dienstinstanz für die Gerätebereitstellung.
Wählen Sie " Registrierungen verwalten" im Abschnitt "Einstellungen" des Ressourcenmenüs aus.
Wählen Sie die Registerkarte Individuelle Registrierungen und dann Individuelle Registrierung hinzufügen aus.
Geben Sie unter Registrierung und Bereitstellung der Seite Registrierung hinzufügen die folgenden Informationen an, um die Registrierungsdetails zu konfigurieren:
Field Description Attestation Wählen Sie X.509-Clientzertifikate als Nachweismechanismus aus. Einstellungen des X.509-Zertifikats Laden Sie ein oder zwei Zertifikate hoch, die zum Überprüfen des Geräts für diese Registrierung verwendet werden. Bereitstellungsstatus Aktivieren Sie das Kontrollkästchen Diese Registrierung aktivieren, wenn diese Registrierung für die Bereitstellung des Geräts verfügbar sein soll. Deaktivieren Sie dieses Kontrollkästchen, wenn die Registrierung deaktiviert werden soll. Sie können diese Einstellung später ändern. Richtlinie für die erneute Bereitstellung Wählen Sie eine Richtlinie für die erneute Bereitstellung aus, die angibt, wie DPS Geräte, die eine erneute Bereitstellung anfordern, handhaben soll. Weitere Informationen finden Sie unter Richtlinien für die erneute Bereitstellung. Wählen Sie Weiter: IoT-Hubs aus.
Geben Sie auf der Registerkarte IoT-Hubs der Seite Registrierung hinzufügen die folgenden Informationen an, um zu bestimmen, für welche IoT-Hubs die Registrierung Geräte bereitstellen kann:
Field Description Ziel-IoT-Hubs Wählen Sie einen oder mehrere Ihrer verknüpften IoT-Hubs aus, oder fügen Sie einem IoT-Hub einen neuen Link hinzu. Weitere Informationen zum Verknüpfen von IoT-Hubs mit Ihrer DPS-Instanz finden Sie unter Verknüpfen und Verwalten von IoT-Hubs. Zuordnungsrichtlinie Wenn Sie mehrere verknüpfte IoT-Hubs ausgewählt haben, wählen Sie aus, wie Sie den verschiedenen Hubs Geräte zuweisen möchten. Weitere Informationen zu Zuordnungsrichtlinien finden Sie unter Verwenden von Zuordnungsrichtlinien.
Wenn Sie nur einen verknüpften IoT-Hub ausgewählt haben, empfehlen wir die Verwendung der Richtlinie Gleichmäßig gewichtete Verteilung.Wählen Sie Weiter: Geräteeinstellungen aus
Geben Sie auf der Registerkarte Geräteeinstellungen der Seite Registrierung hinzufügen die folgenden Informationen an, um zu definieren, wie neu bereitgestellte Geräte konfiguriert werden sollen:
Field Description Geräte-ID Geben Sie eine Geräte-ID an, die dem bereitgestellten Gerät im IoT-Hub zugewiesen wird. Wenn Sie keine Geräte-ID angeben, wird die Registrierungs-ID verwendet. IoT Edge Aktivieren Sie das Kontrollkästchen IoT Edge auf bereitgestellten Geräten aktivieren, wenn auf dem bereitgestellten Gerät Azure IoT Edge ausgeführt wird. Deaktivieren Sie dieses Kontrollkästchen, wenn diese Registrierung für ein Gerät ohne IoT Edge aktiviert ist. Gerätetags Verwenden Sie dieses Textfeld, um alle Tags anzugeben, die Sie auf den Gerätezwilling des bereitgestellten Geräts anwenden möchten. Gewünschte Eigenschaften Verwenden Sie dieses Textfeld, um alle gewünschten Eigenschaften anzugeben, die Sie auf den Gerätezwilling des bereitgestellten Geräts anwenden möchten. Weitere Informationen finden Sie unter Verstehen und Verwenden von Gerätezwillingen in IoT Hub.
Wählen Sie Weiter: Überprüfen + erstellen aus.
Überprüfen Sie auf der Registerkarte Überprüfen und erstellen all Ihre Werte, und wählen Sie dann Erstellen aus.
Vorbereiten und Ausführen des Gerätebereitstellungscodes
In diesem Abschnitt aktualisieren Sie den Beispielcode, um die Startsequenz des Geräts an Ihre Device Provisioning-Dienstinstanz zu senden. Diese Startsequenz bewirkt, dass das Gerät erkannt und einem IoT-Hub zugewiesen wird, der mit der DPS-Instanz verknüpft ist.
In diesem Abschnitt verwenden Sie Ihre Git Bash-Eingabeaufforderung und die Visual Studio-IDE.
Konfigurieren des Codes für die Bereitstellung des Geräts
In diesem Abschnitt aktualisieren Sie den Beispielcode mit den Informationen zu Ihrer Device Provisioning Service-Instanz.
Wählen Sie im Azure-Portal im Ressourcenmenü für Ihre Gerätebereitstellungsdienstinstanz die Registerkarte "Übersicht " aus.
Kopieren Sie den Wert von ID-Bereich.
Starten Sie Visual Studio, und öffnen Sie die neue Projektmappendatei, die im Verzeichnis
cmakeerstellt wurde, das Sie im Stammverzeichnis des Git-Repositorys „azure-iot-sdk-c“ erstellt haben. Die Projektmappendatei hat den Namenazure_iot_sdks.sln.Navigieren Sie im Projektmappen-Explorer von Visual Studio zu Provision_Samples > prov_dev_client_sample > Source Files, und öffnen Sie prov_dev_client_sample.c.
Suchen Sie die Konstante
id_scope, und ersetzen Sie den Wert durch Ihren Wert ID-Bereich, den Sie in Schritt 2 kopiert haben.static const char* id_scope = "0ne00000A0A";Suchen Sie die Definition für die Funktion
main()in der gleichen Datei. Stellen Sie sicher, dass die Variablehsm_typeaufSECURE_DEVICE_TYPE_X509festgelegt ist.SECURE_DEVICE_TYPE hsm_type; //hsm_type = SECURE_DEVICE_TYPE_TPM; hsm_type = SECURE_DEVICE_TYPE_X509; //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;Speichern Sie die Änderungen.
Klicken Sie mit der rechten Maustaste auf das Projekt prov_dev_client_sample, und wählen Sie Als Startprojekt festlegen aus.
Konfigurieren des Stubcodes für das benutzerdefinierte HSM
Die Details der Interaktion mit sicherem hardwarebasiertem Speicher in der Praxis variieren je nach Hardware. Deshalb werden das Zertifikat und der private Schlüssel, die von dem simulierten Gerät in diesem Schnellstart verwendet werden, im Stubcode für das benutzerdefinierte Hardwaresicherheitsmodul (HSM) hart codiert.
So aktualisieren Sie den Stubcode für das benutzerdefinierte HSM zum Simulieren der Identität des Geräts mit der ID my-x509-device:
Navigieren Sie im Projektmappen-Explorer von Visual Studio zu Provision_Samples> custom_hsm_example > Source Files, und öffnen Sie custom_hsm_example.c.
Aktualisieren Sie den Zeichenfolgenwert der Zeichenfolgenkonstante
COMMON_NAMEmit dem allgemeinen Namen, den Sie beim Generieren des Gerätezertifikatsmy-x509-deviceverwendet haben.static const char* const COMMON_NAME = "my-x509-device";Aktualisieren Sie den Zeichenfolgenwert der konstanten Zeichenfolge
CERTIFICATEmithilfe des zuvor generierten Gerätezertifikats, device-cert.pem.Die Syntax des Zertifikattexts im Beispiel muss dem folgenden Muster (ohne zusätzliche Leerstellen oder eine Analyse durch Visual Studio) entsprechen.
static const char* const CERTIFICATE = "-----BEGIN CERTIFICATE-----\n" "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" "-----END CERTIFICATE-----";Das manuelle Aktualisieren dieses Zeichenfolgenwerts kann fehleranfällig sein. Zum Generieren der richtigen Syntax können Sie den folgenden Befehl kopieren und in Ihre Git Bash-Eingabeaufforderung einfügen. Drücken Sie dann die EINGABETASTE. Dieser Befehl generiert die Syntax für den Wert der Zeichenfolgenkonstante
CERTIFICATEund schreibt sie in die Ausgabe.sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' device-cert.pemKopieren Sie den ausgegebenen Zertifikattext für den konstanten Wert, und fügen Sie ihn ein.
Aktualisieren Sie den Zeichenfolgenwert der Konstante
PRIVATE_KEYmit dem unverschlüsselten privaten Schlüssel für Ihr Gerätezertifikat, unencrypted-device-key.pem.Die Syntax des Texts zum privaten Schlüssel muss dem folgenden Muster ohne zusätzliche Leerstellen oder eine Analyse durch Visual Studio entsprechen.
static const char* const PRIVATE_KEY = "-----BEGIN RSA PRIVATE KEY-----\n" "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" ... "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" "-----END RSA PRIVATE KEY-----";Das manuelle Aktualisieren dieses Zeichenfolgenwerts kann fehleranfällig sein. Zum Generieren der richtigen Syntax können Sie den folgenden Befehl kopieren und in Ihre Git Bash-Eingabeaufforderung einfügen. Drücken Sie dann die EINGABETASTE. Dieser Befehl generiert die Syntax für den Wert der Zeichenfolgenkonstante
PRIVATE_KEYund schreibt sie in die Ausgabe.sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' unencrypted-device-key.pemKopieren Sie den ausgegebenen Text zum privaten Schlüssel für den konstanten Wert, und fügen Sie ihn ein.
Speichern Sie die Änderungen.
Klicken Sie mit der rechten Maustaste auf das Projekt custom_hsm_-_example, und wählen Sie Erstellen aus.
Important
Sie müssen das Projekt custom_hsm_example erstellen, bevor Sie die restliche Projektmappe im nächsten Abschnitt erstellen.
Ausführen des Beispiels
Wählen Sie im Visual Studio-Menü die Option Debuggen>Starten ohne Debugging aus, um die Projektmappe auszuführen. Wenn Sie zum erneuten Erstellen des Projekts aufgefordert werden, wählen Sie Ja aus, um es vor der Ausführung neu zu erstellen.
Die folgende Ausgabe ist ein Beispiel dafür, wie das simulierte Gerät
my-x509-deviceerfolgreich gestartet wird und eine Verbindung mit dem Bereitstellungsdienst herstellt. Das Gerät wird einem IoT-Hub zugewiesen und registriert:Provisioning API Version: 1.8.0 Registering Device Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING Registration Information received from service: contoso-iot-hub-2.azure-devices.net, deviceId: my-x509-device Press enter key to exit:
In diesem Abschnitt verwenden Sie Ihre Windows-Eingabeaufforderung.
Wählen Sie im Azure-Portal im Ressourcenmenü für Ihre Gerätebereitstellungsdienstinstanz die Registerkarte "Übersicht " aus.
Kopieren Sie den Wert von ID-Bereich.
Wechseln Sie in Ihrer Windows-Eingabeaufforderung zum Verzeichnis „X509Sample“. Dieses Verzeichnis befindet sich im Verzeichnis .\azure-iot-sdk-csharp\provisioning\device\samples\Getting Started\X509Sample unter dem Verzeichnis, in dem Sie die Beispiele auf Ihrem Computer geklont haben.
Geben Sie den folgenden Befehl ein, um das Beispiel für die X.509-Gerätebereitstellung zu erstellen und auszuführen (ersetzen Sie den Wert
<IDScope>durch den ID-Bereich, den Sie im vorhergehenden Abschnitt kopiert haben). Die Zertifikatdatei wird standardmäßig unter ./certificate.pfx erstellt, und Sie werden zur Eingabe des PFX-Kennworts aufgefordert.dotnet run -- -s <IDScope>Wenn Sie das Zertifikat und Kennwort als Parameter übergeben möchten, können Sie das folgende Format verwenden.
Note
Zusätzliche Parameter können beim Ausführen der Anwendung übergeben werden, um den TransportType (-t) und den GlobalDeviceEndpoint (-g) zu ändern.
dotnet run -- -s 0ne00000A0A -c certificate.pfx -p 1234Das Gerät stellt eine Verbindung mit DPS her und wird einem IoT-Hub zugewiesen. Das Gerät sendet eine Nachricht an den IoT-Hub.
Loading the certificate... Enter the PFX password for certificate.pfx: **** Found certificate: A33DB11B8883DEE5B1690ACFEAAB69E8E928080B CN=my-x509-device; PrivateKey: True Using certificate A33DB11B8883DEE5B1690ACFEAAB69E8E928080B CN=my-x509-device Initializing the device provisioning client... Initialized for registration Id my-x509-device. Registering with the device provisioning service... Registration status: Assigned. Device my-x509-device registered to MyExampleHub.azure-devices.net. Creating X509 authentication for IoT Hub... Testing the provisioned device with IoT Hub... Sending a telemetry message... Finished.
In diesem Abschnitt verwenden Sie Ihre Windows-Eingabeaufforderung.
Wählen Sie im Azure-Portal im Ressourcenmenü für Ihre Gerätebereitstellungsdienstinstanz die Registerkarte "Übersicht " aus.
Kopieren Sie den Wert von ID-Bereich.
Wechseln Sie in Ihrer Windows-Eingabeaufforderung zum Beispielverzeichnis, und installieren Sie die für das Beispiel erforderlichen Pakete. Der angezeigte Pfad ist relativ zu dem Speicherort, in dem Sie das SDK geklont haben.
cd .\azure-iot-sdk-node\provisioning\device\samples npm installIn dem Beispiel werden fünf Umgebungsvariablen für die Authentifizierung und Bereitstellung eines IoT-Geräts per DPS genutzt. Dies sind die folgenden Umgebungsvariablen:
Variablenname Description PROVISIONING_HOSTDer Endpunkt, der zum Herstellen einer Verbindung mit Ihrer DPS-Instanz verwendet werden soll. Verwenden Sie für diese Schnellstartanleitung den globalen Endpunkt: global.azure-devices-provisioning.net.PROVISIONING_IDSCOPEDer ID-Bereich für Ihre DPS-Instanz. PROVISIONING_REGISTRATION_IDRegistrierungs-ID für Ihre Geräteregistrierung Er muss mit dem allgemeinen Namen des Antragstellers im Gerätezertifikat übereinstimmen. CERTIFICATE_FILEDer Pfad zu Ihrer Gerätezertifikatdatei. KEY_FILEDer Pfad zur privaten Geräteschlüsseldatei. Fügen Sie Umgebungsvariablen für den globalen Geräteendpunkt und den ID-Bereich hinzu. Ersetzen Sie
<id-scope>durch den Wert, den Sie in Schritt 2 kopiert haben.set PROVISIONING_HOST=global.azure-devices-provisioning.net set PROVISIONING_IDSCOPE=<id-scope>Legen Sie die Umgebungsvariable für die Registrierungs-ID für das Gerät fest. Die Registrierungs-ID für das IoT-Gerät muss mit dem allgemeinen Namen des Antragstellers im Gerätezertifikat übereinstimmen. Wenn Sie die Schritte in der Schnellstartanleitung zum Generieren eines selbstsignierten Testzertifikats befolgt haben, ist
my-x509-devicesowohl der Antragstellername als auch die Registrierungs-ID für das Gerät.set PROVISIONING_REGISTRATION_ID=my-x509-deviceLegen Sie die Umgebungsvariablen für das Gerätezertifikat und (unverschlüsselte) private Geräteschlüsseldateien fest.
set CERTIFICATE_FILE=.\device-cert.pem set KEY_FILE=.\unencrypted-device-key.pemFühren Sie das Beispiel aus, und überprüfen Sie, ob das Gerät erfolgreich bereitgestellt wurde.
node register_x509.jsDie Ausgabe sollte etwa folgendem Beispiel entsprechen:
registration succeeded assigned hub=contoso-hub-2.azure-devices.net deviceId=my-x509-device Client connected send status: MessageEnqueued
In diesem Abschnitt verwenden Sie Ihre Windows-Eingabeaufforderung.
Wählen Sie im Azure-Portal im Ressourcenmenü für Ihre Gerätebereitstellungsdienstinstanz die Registerkarte "Übersicht " aus.
Kopieren Sie die Werte für ID-Bereich und Globaler Geräteendpunkt.
Wechseln Sie in Ihrer Windows-Eingabeaufforderung zum Verzeichnis des Beispiels provision_x509.py. Der angezeigte Pfad ist relativ zu dem Speicherort, in dem Sie das SDK geklont haben.
cd ./azure-iot-sdk-python/samples/async-hub-scenariosIn diesem Beispiel werden sechs Umgebungsvariablen für die Authentifizierung und Bereitstellung eines IoT-Geräts per DPS genutzt. Dies sind die folgenden Umgebungsvariablen:
Variablenname Description PROVISIONING_HOSTDer globale Endpunkt, der für die Herstellung der Verbindung mit Ihrer DPS-Ressource verwendet wird. PROVISIONING_IDSCOPEDer ID-Bereich für Ihre DPS-Instanz. DPS_X509_REGISTRATION_IDRegistrierungs-ID für Ihre Geräteregistrierung Er muss auch mit dem Antragstellernamen auf dem Gerätezertifikat übereinstimmen. X509_CERT_FILEDer Pfad zu Ihrer Gerätezertifikatdatei. X509_KEY_FILEDer Pfad zur privaten Schlüsseldatei für das Gerätezertifikat. PASS_PHRASEDie Passphrase, die Sie zum Verschlüsseln des Zertifikats und der Datei für den privaten Schlüssel ( 1234) verwendet haben.Fügen Sie die Umgebungsvariablen für den globalen Geräteendpunkt und den ID-Bereich hinzu.
set PROVISIONING_HOST=global.azure-devices-provisioning.net set PROVISIONING_IDSCOPE=<ID scope for your DPS resource>Legen Sie die Umgebungsvariable für die Registrierungs-ID fest. Die Registrierungs-ID für das IoT-Gerät muss mit dem Antragstellernamen im Gerätezertifikat übereinstimmen. Wenn Sie die Schritte in der Schnellstartanleitung zum Generieren eines selbstsignierten Testzertifikats befolgt haben, ist
my-x509-devicesowohl der Antragstellername als auch die Registrierungs-ID für das Gerät.set DPS_X509_REGISTRATION_ID=my-x509-deviceLegen Sie die Umgebungsvariablen für die Zertifikatdatei, die Datei mit dem privaten Schlüssel und die Passphrase fest.
set X509_CERT_FILE=./device-cert.pem set X509_KEY_FILE=./device-key.pem set PASS_PHRASE=1234Sehen Sie sich den Code für provision_x509.py an. Wenn Sie nicht die Python-Version 3.7 oder höher verwenden, führen Sie die hier beschriebene Codeänderung durch, um
asyncio.run(main())zu ersetzen und speichern Sie Ihre Änderungen.Führen Sie das Beispiel aus. Das Beispiel stellt eine Verbindung mit DPS her, wodurch das Gerät für einen IoT-Hub bereitgestellt wird. Nachdem das Gerät bereitgestellt wurde, sendet das Beispiel einige Testnachrichten an den IoT-Hub.
$ python azure-iot-sdk-python/samples/async-hub-scenarios/provision_x509.py RegistrationStage(RequestAndResponseOperation): Op will transition into polling after interval 2. Setting timer. The complete registration result is my-x509-device TestHub12345.azure-devices.net initialAssignment null Will send telemetry from the provisioned device sending message #4 sending message #7 sending message #2 sending message #8 sending message #5 sending message #9 sending message #1 sending message #6 sending message #10 sending message #3 done sending message #4 done sending message #7 done sending message #2 done sending message #8 done sending message #5 done sending message #9 done sending message #1 done sending message #6 done sending message #10 done sending message #3
In diesem Abschnitt verwenden Sie sowohl Ihre Windows-Eingabeaufforderung als auch Ihre Git Bash-Eingabeaufforderung.
Wählen Sie im Azure-Portal im Ressourcenmenü für Ihre Gerätebereitstellungsdienstinstanz die Registerkarte "Übersicht " aus.
Kopieren Sie die Werte für ID-Bereich und Globaler Geräteendpunkt.
Navigieren Sie in Ihrer Windows-Eingabeaufforderung zum Ordner des Beispielprojekts. Der angezeigte Pfad ist relativ zu dem Speicherort, in dem Sie das SDK geklont haben.
cd .\azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-X509-sampleGeben Sie im Beispielcode den Bereitstellungsdienst und die X.509-Identitätsinformationen ein. Diese Informationen werden während der Bereitstellung zur Nachweis des simulierten Geräts vor der Geräteregistrierung verwendet.
Öffnen Sie die Datei
.\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.javain Ihrem bevorzugten Text-Editor.Aktualisieren Sie die folgenden Werte mit dem ID-Bereich und globalen Endpunkt für den Bereitstellungsdienst, die Sie zuvor kopiert haben.
private static final String idScope = "[Your ID scope here]"; private static final String globalEndpoint = "[Your Provisioning Service Global Endpoint here]"; private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS;Aktualisieren Sie den Wert der konstanten Zeichenfolge
leafPublicPemmit dem Wert Ihres Zertifikats, device-cert.pem.Die Syntax des Zertifikattexts muss dem unten folgenden Muster (ohne zusätzliche Leerstellen oder Zeichen) entsprechen.
private static final String leafPublicPem = "-----BEGIN CERTIFICATE-----\n" + "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" + ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" + "-----END CERTIFICATE-----";Das manuelle Aktualisieren dieses Zeichenfolgenwerts kann fehleranfällig sein. Zum Generieren der richtigen Syntax können Sie den folgenden Befehl kopieren und in Ihre Git Bash-Eingabeaufforderung einfügen. Drücken Sie dann die EINGABETASTE. Dieser Befehl generiert die Syntax für den Wert der Zeichenfolgenkonstante
leafPublicPemund schreibt sie in die Ausgabe.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' device-cert.pemKopieren Sie den ausgegebenen Zertifikattext für den konstanten Wert, und fügen Sie ihn ein.
Aktualisieren Sie den Zeichenfolgenwert der Konstante
leafPrivateKeymit dem unverschlüsselten privaten Schlüssel für Ihr Gerätezertifikat, unencrypted-device-key.pem.Die Syntax des Texts zum privaten Schlüssel muss dem folgenden Muster (ohne zusätzliche Leerstellen oder Zeichen) entsprechen.
private static final String leafPrivateKey = "-----BEGIN PRIVATE KEY-----\n" + "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" + ... "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" + "-----END PRIVATE KEY-----";Das manuelle Aktualisieren dieses Zeichenfolgenwerts kann fehleranfällig sein. Zum Generieren der richtigen Syntax können Sie den folgenden Befehl kopieren und in Ihre Git Bash-Eingabeaufforderung einfügen. Drücken Sie dann die EINGABETASTE. Dieser Befehl generiert die Syntax für den Wert der Zeichenfolgenkonstante
leafPrivateKeyund schreibt sie in die Ausgabe.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' unencrypted-device-key.pemKopieren Sie den ausgegebenen Text zum privaten Schlüssel für den konstanten Wert, und fügen Sie ihn ein.
Speichern Sie die Änderungen.
Erstellen Sie das Beispiel, und wechseln Sie zum Ordner
target.mvn clean install cd targetDer Build gibt die JAR-Datei im Ordner
targetmit folgendem Dateiformat aus:provisioning-x509-sample-{version}-with-deps.jar; Beispiel:provisioning-x509-sample-1.8.1-with-deps.jar. Führen Sie die JAR-Datei aus. Möglicherweise müssen Sie im folgenden Befehl die Version ersetzen.java -jar ./provisioning-x509-sample-1.8.1-with-deps.jarDas Beispiel stellt eine Verbindung mit DPS her, wodurch das Gerät für einen IoT-Hub bereitgestellt wird. Nachdem das Gerät bereitgestellt wurde, sendet das Beispiel einige Testnachrichten an den IoT-Hub.
Starting... Beginning setup. WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance. 2022-05-11 09:42:05,025 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Initialized a ProvisioningDeviceClient instance using SDK version 2.0.0 2022-05-11 09:42:05,027 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Starting provisioning thread... Waiting for Provisioning Service to register 2022-05-11 09:42:05,030 INFO (global.azure-devices-provisioning.net-6255a8ba-CxnPendingConnectionId-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Opening the connection to device provisioning service... 2022-05-11 09:42:05,252 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Connection to device provisioning service opened successfully, sending initial device registration message 2022-05-11 09:42:05,286 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-RegisterTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask] - Authenticating with device provisioning service using x509 certificates 2022-05-11 09:42:06,083 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Waiting for device provisioning service to provision this device... 2022-05-11 09:42:06,083 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Current provisioning status: ASSIGNING Waiting for Provisioning Service to register 2022-05-11 09:42:15,685 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Device provisioning service assigned the device successfully IotHUb Uri : MyExampleHub.azure-devices.net Device ID : java-device-01 2022-05-11 09:42:25,057 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true 2022-05-11 09:42:25,080 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true 2022-05-11 09:42:25,087 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Initialized a DeviceClient instance using SDK version 2.0.3 2022-05-11 09:42:25,129 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - Opening MQTT connection... 2022-05-11 09:42:25,150 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT CONNECT packet... 2022-05-11 09:42:25,982 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT CONNECT packet was acknowledged 2022-05-11 09:42:25,983 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT SUBSCRIBE packet for topic devices/java-device-01/messages/devicebound/# 2022-05-11 09:42:26,068 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT SUBSCRIBE packet for topic devices/java-device-01/messages/devicebound/# was acknowledged 2022-05-11 09:42:26,068 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - MQTT connection opened successfully 2022-05-11 09:42:26,070 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - The connection to the IoT Hub has been established 2022-05-11 09:42:26,071 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Updating transport status to new status CONNECTED with reason CONNECTION_OK 2022-05-11 09:42:26,071 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceIO] - Starting worker threads 2022-05-11 09:42:26,073 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking connection status callbacks with new status details 2022-05-11 09:42:26,074 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Client connection opened successfully 2022-05-11 09:42:26,075 INFO (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Device client opened successfully Sending message from device to IoT Hub... 2022-05-11 09:42:26,077 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Message was queued to be sent later ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) Press any key to exit... 2022-05-11 09:42:26,079 DEBUG (MyExampleHub.azure-devices.net-java-device-01-ee6c362d-Cxn7a1fb819-e46d-4658-9b03-ca50c88c0440-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Sending message ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 2022-05-11 09:42:26,422 DEBUG (MQTT Call: java-device-01) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - IotHub message was acknowledged. Checking if there is record of sending this message ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 2022-05-11 09:42:26,425 DEBUG (MyExampleHub.azure-devices.net-java-device-01-ee6c362d-Cxn7a1fb819-e46d-4658-9b03-ca50c88c0440-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking the callback function for sent message, IoT Hub responded to message ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) with status OK Message sent!
Bestätigen der Registrierung der Gerätebereitstellung
Wenn Sie sehen möchten, für welchen IoT-Hub Ihr Gerät bereitgestellt wurde, überprüfen Sie die Registrierungsdetails der einzelnen Registrierung, die Sie zuvor erstellt haben:
Navigieren Sie im Azure-Portal zu Ihrer Device Provisioning Service-Instanz.
Wählen Sie im Ressourcenmenü unter "Einstellungen" die Option " Registrierungen verwalten" aus.
Wählen Sie Individuelle Registrierungen aus. Der von Ihnen zuvor erstellte X.509-Registrierungseintrag, my-x509-device, sollte in der Liste angezeigt werden.
Wählen Sie den Registrierungseintrag aus. Der IoT-Hub, dem Ihr Gerät zugewiesen wurde, und dessen Geräte-ID werden unter Registrierungsstatus angezeigt.
So überprüfen Sie das Gerät auf Ihrem IoT-Hub:
Wechseln Sie im Azure-Portal zu dem IoT-Hub, dem Ihr Gerät zugewiesen wurde.
Wählen Sie im Ressourcenmenü unter "Geräteverwaltung" die Option "Geräte" aus.
Wenn Ihr Gerät erfolgreich bereitgestellt wurde, sollte dessen Geräte-ID, my-x509-device, in der Liste mit dem StatusAktiviert angezeigt werden. Wenn Ihr Gerät nicht angezeigt wird, wählen Sie Aktualisieren aus.
Important
Wenn Sie den anfänglichen Gerätezwillingsstatus im Registrierungseintrag für Ihr Gerät gegenüber dem Standardwert geändert haben, kann der gewünschte Zwillingsstatus vom Hub abgerufen werden, und es können entsprechende Aktionen durchgeführt werden. Weitere Informationen finden Sie unter Verstehen und Verwenden von Gerätezwillingen in IoT Hub.
Bereinigen von Ressourcen
Wenn Sie das Geräteclientbeispiel weiter verwenden und erkunden möchten, sollten Sie die in dieser Schnellstartanleitung erstellten Ressourcen nicht bereinigen. Falls Sie nicht fortfahren möchten, führen Sie die folgenden Schritte aus, um alle Ressourcen zu löschen, die im Rahmen dieser Schnellstartanleitung erstellt wurden.
Löschen der Geräteregistrierung
Schließen Sie auf Ihrem Computer das Ausgabefenster des Geräteclientbeispiels.
Wählen Sie im Portalmenü im Azure-Portal "Alle Ressourcen" aus.
Wählen Sie Ihre Device Provisioning Service-Instanz aus.
Wählen Sie im Dienstmenü unter "Einstellungen" die Option " Registrierungen verwalten" aus.
Wählen Sie im Arbeitsbereich die Registerkarte "Einzelne Registrierungen " aus.
Aktivieren Sie das Kontrollkästchen neben der Registrierungs-ID des Geräts, das Sie in dieser Schnellstartanleitung registriert haben.
Wählen Sie am oberen Rand des Bereichs die Option Löschen aus.
Löschen Ihrer Geräteregistrierung aus IoT Hub
Wählen Sie im Portalmenü im Azure-Portal "Alle Ressourcen" aus.
Wählen Sie Ihren IoT Hub aus.
Wählen Sie im Menü "Dienst" unter "Geräteverwaltung" die Option "Geräte" aus.
Aktivieren Sie im Arbeitsbereich das Kontrollkästchen neben der Geräte-ID des Geräts, das Sie in dieser Schnellstartanleitung registriert haben.
Wählen Sie am oberen Rand des Bereichs die Option Löschen aus.
Nächste Schritte
In dieser Schnellstartanleitung haben Sie ein einzelnes Gerät mit einer individuellen Registrierung für Ihren IoT-Hub bereitgestellt. Informieren Sie sich als Nächstes, wie IoT-Geräte auf mehreren IoT-Hubs bereitgestellt werden.