Tutorial: Verwenden eines simulierten Geräts zum Testen der Konnektivität mit Ihrem IoT Hub
In diesem Tutorial verwenden Sie die Tools des Azure IoT Hub-Portals und die Azure CLI-Befehle, um die Gerätekonnektivität zu testen. In diesem Tutorial wird auch ein einfacher Gerätesimulator verwendet, den Sie auf Ihrem Desktopcomputer ausführen.
Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
In diesem Tutorial lernen Sie Folgendes:
- Überprüfen Ihrer Geräteauthentifizierung
- Überprüfen der Gerät-zu-Cloud-Konnektivität
- Überprüfen der Cloud-zu-Gerät-Konnektivität
- Überprüfen der Synchronisierung von Gerätezwillingen
Voraussetzungen
In diesem Tutorial wird die Azure CLI zum Erstellen von Cloudressourcen verwendet. Es gibt zwei Möglichkeiten zum Ausführen von CLI-Befehlen:
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Azure Cloud Shell-Schnellstart: Bash.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
- Melden Sie sich mit dem Befehl az login bei der Azure CLI an.
- Installieren Sie die Azure CLI-Erweiterungen bei der ersten Verwendung, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.
- Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
Hinweis
In diesem Artikel wird die neueste Version der Azure IoT-Erweiterung namens
azure-iot
verwendet. Die Legacy-Version heißtazure-cli-iot-ext
. Es sollte jedoch jeweils nur eine Version installiert sein. Sie können den Befehlaz extension list
verwenden, um die derzeit installierten Erweiterungen zu überprüfen.Verwenden Sie
az extension remove --name azure-cli-iot-ext
, um die Legacy-Version der Erweiterung zu entfernen.Verwenden Sie
az extension add --name azure-iot
, um die neue Version der Erweiterung hinzuzufügen.Verwenden Sie
az extension list
, um die installierten Erweiterungen anzuzeigen.In der Beispielanwendung, die Sie in diesem Tutorial ausführen, wird Node.js verwendet. Sie benötigen mindestens Node.js v10.x.x auf Ihrem Entwicklungscomputer.
Sie können Node.js für mehrere Plattformen von nodejs.org herunterladen.
Mit dem folgenden Befehl können Sie die aktuelle Node.js-Version auf Ihrem Entwicklungscomputer überprüfen:
node --version
Klonen Sie das Node.js-Beispielprojekt aus den Azure IoT-Beispielen für Node.js, oder laden Sie es herunter.
Stellen Sie sicher, dass der Port 8883 in Ihrer Firewall geöffnet ist. Für das Beispielgerät in diesem Tutorial wird das MQTT-Protokoll verwendet, das über Port 8883 kommuniziert. In einigen Netzwerkumgebungen von Unternehmen oder Bildungseinrichtungen ist dieser Port unter Umständen blockiert. Weitere Informationen und Problemumgehungen finden Sie unter Herstellen einer Verbindung mit IoT Hub (MQTT).
Erstellen eines IoT-Hubs
In diesem Abschnitt verwenden Sie die Azure CLI zum Erstellen eines IoT-Hubs und einer Ressourcengruppe. Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden. Ein IoT-Hub fungiert als zentraler Nachrichtenhub für die bidirektionale Kommunikation zwischen Ihrer IoT-Anwendung und den Geräten.
Wenn Sie bereits über einen IoT-Hub in Ihrem Azure-Abonnement verfügen, können Sie diesen Abschnitt überspringen.
So erstellen Sie einen IoT-Hub und eine Ressourcengruppe:
Starten der CLI-App. Kopieren Sie zum Ausführen der CLI-Befehle im restlichen Teil dieses Artikels die Befehlssyntax, fügen Sie diese in Ihre CLI-App ein, bearbeiten Sie die Variablenwerte und drücken Sie
Enter
.- Wählen Sie bei Verwendung von Cloud Shell die Schaltfläche Ausprobieren in den CLI-Befehlen aus, um Cloud Shell in einem geteilten Browserfenster zu starten. Alternativ können Sie Cloud Shell auch in einem separaten Browsertab öffnen.
- Gehen Sie wie folgt vor, wenn Sie die Azure CLI lokal verwenden: Starten Sie Ihre CLI-Konsolen-App, und melden Sie sich bei der Azure CLI an.
Führen Sie az extension add aus, um die Erweiterung azure-iot zu installieren bzw. auf die aktuelle Version zu aktualisieren.
az extension add --upgrade --name azure-iot
Führen Sie in Ihrer CLI-App den Befehl az group create aus, um eine Ressourcengruppe zu erstellen. Mit dem folgenden Befehl wird eine Ressourcengruppe mit dem Namen MyResourceGroup am Standort eastus erstellt.
Hinweis
Optional können Sie einen anderen Standort festlegen. Führen Sie zum Anzeigen der verfügbaren Standorte
az account list-locations
aus. In dieser Schnellstartanleitung wird eastus verwendet, wie im Beispielbefehl gezeigt.az group create --name MyResourceGroup --location eastus
Führen Sie den Befehl az iot hub create aus, um einen IoT-Hub zu erstellen. Es kann einige Minuten dauern, bis ein IoT-Hub erstellt wurde.
YourIotHubName: Ersetzen Sie diesen Platzhalter und die umgebenden geschweiften Klammern im folgenden Befehl durch den Namen, den Sie für Ihren IoT-Hub ausgewählt haben. Der Name eines IoT-Hubs muss in Azure global eindeutig sein. Verwenden Sie im weiteren Verlauf dieser Schnellstartanleitung den Namen des IoT-Hubs für alle Vorkommen dieses Platzhalters.
az iot hub create --resource-group MyResourceGroup --name {your_iot_hub_name}
Überprüfen der Geräteauthentifizierung
Ein Gerät muss für Ihren Hub authentifiziert werden, bevor es Daten mit dem Hub austauschen kann. Sie können das Tool IoT-Geräte im Abschnitt Geräteverwaltung des Portals verwenden, um Ihre Geräte zu verwalten und die genutzten Authentifizierungsschlüssel zu überprüfen. In diesem Abschnitt des Tutorials fügen Sie ein neues Testgerät hinzu, rufen den dazugehörigen Schlüssel ab und stellen sicher, dass das Testgerät eine Verbindung mit dem Hub herstellen kann. Später setzen Sie den Authentifizierungsschlüssel zurück, um zu verfolgen, was passiert, wenn für ein Gerät ein veralteter Schlüssel verwendet wird.
Registrieren eines Geräts
Ein Gerät muss bei Ihrer IoT Hub-Instanz registriert sein, um eine Verbindung herstellen zu können. In diesem Abschnitt wird die Azure-Befehlszeilenschnittstelle (CLI) verwendet, um eine Geräteidentität zu erstellen.
Wenn Sie bereits ein Gerät in Ihrem IoT-Hub registriert haben, können Sie diesen Abschnitt überspringen.
So erstellen Sie eine Geräteidentität:
Führen Sie in der CLI-Shell den Befehl az iot hub device-identity create aus. Dieser Befehl erstellt die Geräteidentität.
your_iot_hub_name. Ersetzen Sie diesen Platzhalter unten durch den Namen, den Sie für Ihren IoT-Hub ausgewählt haben.
myDevice. Sie können diesen Namen für die Geräte-ID in diesem Artikel verwenden oder einen anderen Gerätenamen angeben.
az iot hub device-identity create --device-id myDevice --hub-name {your_iot_hub_name}
Führen Sie den Befehl az iot hub device-identity connection-string show aus.
az iot hub device-identity connection-string show --device-id myDevice --hub-name {your_iot_hub_name}
Die Ausgabe der Verbindungszeichenfolge hat folgendes Format:
HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
Speichern Sie die Verbindungszeichenfolge an einem sicheren Ort.
Hinweis
Lassen Sie Ihre CLI-App geöffnet. Sie werden ihn später benötigen.
Simulieren eines Testgeräts
Führen Sie zum Simulieren des Sendens von Telemetriedaten an Ihren IoT-Hub die Node.js-Anwendung für die Gerätesimulation aus, die Sie zuvor heruntergeladen haben.
Navigieren Sie in einem Terminalfenster auf Ihrem Entwicklungscomputer zum Stammordner des heruntergeladenen Node.js-Beispielprojekts. Navigieren Sie anschließend zum Ordner iot-hub\Tutorials\ConnectivityTests.
Führen Sie im Terminalfenster die folgenden Befehle aus, um die erforderlichen Bibliotheken zu installieren und die Anwendung zur Simulation eines Geräts auszuführen. Verwenden Sie die Geräteverbindungszeichenfolge, die Sie beim Registrieren des Geräts notiert haben.
npm install node SimulatedDevice-1.js "{your_device_connection_string}"
Sobald das Terminalfenster die Verbindung mit Ihrem Hub herstellt, zeigt es eine Erfolgsmeldung an:
Sie haben sich jetzt erfolgreich über ein Gerät authentifiziert, indem Sie einen von Ihrem IoT Hub generierten Geräteschlüssel genutzt haben.
Zurücksetzen von Schlüsseln
In diesem Abschnitt setzen Sie den Geräteschlüssel zurück und sehen dann den Fehler, wenn für das simulierte Gerät versucht wird, eine Verbindung herzustellen.
Führen Sie den Befehl az iot hub device-identity update zum Zurücksetzen des primären Geräteschlüssels für Ihr Gerät aus:
# Generate a new Base64 encoded key using the current date read key < <(date +%s | sha256sum | base64 | head -c 32) # Reset the primary device key for test device az iot hub device-identity update --device-id {your_device_id} --set authentication.symmetricKey.primaryKey=$key --hub-name {your_iot_hub_name}
Führen Sie im Terminalfenster auf Ihrem Entwicklungscomputer erneut die Anwendung für die Gerätesimulation aus:
npm install node SimulatedDevice-1.js "{your_device_connection_string}"
Hierbei sehen Sie jetzt einen Authentifizierungsfehler, wenn die Anwendung versucht, eine Verbindung herzustellen:
Generieren eines SAS (Shared Access Signature)-Tokens
Wenn Ihr Gerät eines der IoT Hub-Geräte-SDKs nutzt, generiert der SDK-Bibliothekscode das SAS-Token, das zum Authentifizieren mit dem Hub verwendet wird. Ein SAS-Token wird aus dem Namen Ihres Hub, dem Namen Ihres Geräts und dem Geräteschlüssel generiert.
Bei einigen Szenarien, z.B. in einem Cloudprotokollgateway oder als Teil eines benutzerdefinierten Authentifizierungsschemas, müssen Sie das SAS-Token ggf. selbst generieren. Zum Behandeln von Problemen mit Ihrem SAS-Generierungscode ist es nützlich, ein als funktionierend bekanntes SAS-Token zur Verwendung beim Testen zu generieren.
Hinweis
Das Beispiel „SimulatedDevice-2.js“ enthält Beispiele zum Generieren eines SAS-Tokens jeweils mit und ohne SDK.
Führen Sie den Befehl az iot hub generate-sas-token aus, um mithilfe der CLI ein als fehlerfrei bekanntes SAS-Token zu generieren:
az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}
Kopieren Sie den gesamten Text des generierten SAS-Tokens. Ein SAS-Token sieht wie das folgende Beispiel aus:
SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111
Navigieren Sie in einem Terminalfenster auf Ihrem Entwicklungscomputer zum Stammordner des Node.js-Beispielprojekts, das Sie heruntergeladen haben. Navigieren Sie anschließend zum Ordner iot-hub\Tutorials\ConnectivityTests.
Führen Sie im Terminalfenster die folgenden Befehle aus, um die erforderlichen Bibliotheken zu installieren und die Anwendung zur Simulation eines Geräts auszuführen:
npm install node SimulatedDevice-2.js "{Your SAS token}"
Sobald das Terminalfenster die Verbindung mit Ihrem Hub mithilfe des SAS-Tokens herstellt, zeigt es eine Erfolgsmeldung an:
Sie haben sich jetzt von einem Gerät aus erfolgreich authentifiziert, indem Sie ein mit einem CLI-Befehl generiertes SAS-Testtoken verwendet haben. Die Datei SimulatedDevice-2.js enthält Beispielcode, mit dem veranschaulicht wird, wie Sie im Code ein SAS-Token generieren.
Protokolle
Für ein Gerät kann eines der folgenden Protokolle verwendet werden, um eine Verbindung mit Ihrem IoT Hub herzustellen:
Protocol | Ausgehender Port |
---|---|
MQTT | 8883 |
MQTT über WebSockets | 443 |
AMQP | 5671 |
AMQP über WebSockets | 443 |
HTTPS | 443 |
Wenn der ausgehende Port durch eine Firewall blockiert ist, kann das Gerät keine Verbindung herstellen:
Überprüfen der Gerät-zu-Cloud-Konnektivität
Nachdem ein Gerät eine Verbindung hergestellt hat, kann es mit dem Senden von Telemetriedaten an Ihren IoT-Hub beginnen. In diesem Abschnitt wird veranschaulicht, wie Sie überprüfen können, ob die vom Gerät gesendeten Telemetriedaten Ihren Hub erreichen.
Senden von Gerät-zu-Cloud (D2C)-Nachrichten
Da Sie die Verbindungszeichenfolge für Ihr Gerät im vorhergehenden Abschnitt zurückgesetzt haben, verwenden Sie den Befehl az iot hub device-identity connection-string show zum Abrufen der aktualisierten Verbindungszeichenfolge:
az iot hub device-identity connection-string show --device-id {your_device_id} --output table --hub-name {your_iot_hub_name}
Navigieren Sie zum Ausführen eines simulierten Geräts, mit dem Nachrichten gesendet werden, im heruntergeladenen Code zum Ordner iot-hub\Tutorials\ConnectivityTests.
Führen Sie im Terminalfenster die folgenden Befehle aus, um die erforderlichen Bibliotheken zu installieren und die Anwendung zur Simulation eines Geräts auszuführen:
npm install node SimulatedDevice-3.js "{your_device_connection_string}"
Im Terminalfenster werden Informationen angezeigt, während Telemetriedaten an Ihren Hub gesendet werden:
Überwachen von eingehenden Nachrichten
Sie können die Option Metriken im Portal nutzen, um sicherzustellen, dass die Telemetrienachrichten Ihren IoT Hub erreichen.
Wählen Sie im Azure-Portal in der Dropdownliste Ressource Ihren IoT-Hub aus.
Wählen Sie im Abschnitt Überwachung des Navigationsmenüs die Option Metriken aus.
Wählen Sie Gesendete Telemetrienachrichten als Metrik aus, und legen Sie den Zeitraum auf Letzte Stunde fest. Im Diagramm wird die Aggregatanzahl von Nachrichten angezeigt, die vom simulierten Gerät gesendet werden:
Es dauert einige Minuten, bis die Metriken nach dem Starten des simulierten Geräts zur Verfügung stehen.
Überprüfen der Cloud-zu-Gerät-Konnektivität
In diesem Abschnitt wird gezeigt, wie Sie einen direkten Test-Methodenaufruf für ein Gerät durchführen können, um die Cloud-zu-Gerät-Konnektivität zu testen. Sie führen ein simuliertes Gerät auf Ihrem Entwicklungscomputer aus, um auf direkte Methodenaufrufe von Ihrem Hub zu lauschen.
Verwenden Sie in einem Terminalfenster den folgenden Befehl, um die simulierte Geräteanwendung auszuführen:
node SimulatedDevice-3.js "{your_device_connection_string}"
Verwenden Sie in einem separaten Fenster den Befehl az iot hub invoke-device-method zum Aufrufen einer direkten Methode auf dem Gerät:
az iot hub invoke-device-method --device-id {your_device_id} --method-name TestMethod --timeout 10 --method-payload '{"key":"value"}' --hub-name {your_iot_hub_name}
Das simulierte Gerät gibt eine Meldung auf der Konsole aus, wenn es einen direkten Methodenaufruf empfängt:
Wenn das simulierte Gerät den direkten Methodenaufruf ohne Fehler empfangen hat, sendet es eine Bestätigung zurück an den Hub:
Überprüfen der Zwillingssynchronisierung
Für Geräte werden Zwillinge verwendet, um den Zustand zwischen dem Gerät und dem Hub zu synchronisieren. In diesem Abschnitt verwenden Sie CLI-Befehle zum Senden von gewünschten Eigenschaften an ein Gerät und zum Lesen der vom Gerät gesendeten gemeldeten Eigenschaften.
Das in diesem Abschnitt verwendete simulierte Gerät sendet bei jedem Start gemeldete Eigenschaften an den Hub und gibt die gewünschten Eigenschaften jeweils in der Konsole aus, wenn diese empfangen werden.
Verwenden Sie in einem Terminalfenster den folgenden Befehl, um die simulierte Geräteanwendung auszuführen:
node SimulatedDevice-3.js "{your_device_connection_string}"
Führen Sie in einem separaten Fenster den Befehl az iot hub device-twin show zur Überprüfung aus, ob der Hub die gemeldeten Eigenschaften vom Gerät empfangen hat:
az iot hub device-twin show --device-id {your_device_id} --hub-name {your_iot_hub_name}
In der Ausgabe des Befehls wird die devicelaststarted-Eigenschaft im Abschnitt mit den gemeldeten Eigenschaften angezeigt. Mit dieser Eigenschaft werden das Datum und die Uhrzeit des Zeitpunkts angezeigt, zu dem Sie das simulierte Gerät zum letzten Mal gestartet haben.
Wenn Sie überprüfen möchten, ob der Hub Werte für gewünschte Eigenschaften an das Gerät senden kann, verwenden Sie den Befehl az iot hub device-twin update:
az iot hub device-twin update --set properties.desired='{"mydesiredproperty":"propertyvalue"}' --device-id {your_device_id} --hub-name {your_iot_hub_name}
Das simulierte Gerät gibt eine Meldung aus, wenn es ein Update mit gewünschten Eigenschaften vom Hub empfängt:
Zusätzlich zum Empfangen der vorgenommenen Änderungen von gewünschten Eigenschaften führt das simulierte Gerät beim Starten eine automatische Überprüfung auf gewünschte Eigenschaften durch.
Bereinigen von Ressourcen
Falls Sie die IoT Hub-Instanz nicht mehr benötigen, löschen Sie die Ressourcengruppe über das Portal. Wählen Sie hierzu die Ressourcengruppe mit Ihrer IoT Hub-Instanz aus, und wählen Sie Löschen aus.
Nächste Schritte
In diesem Tutorial wurde beschrieben, wie Sie Folgendes überprüfen: Ihre Geräteschlüssel, die Gerät-zu-Cloud-Konnektivität, die Cloud-zu-Gerät-Konnektivität und die Synchronisierung der Gerätezwillinge. Weitere Informationen zur Überwachung Ihres IoT Hub finden Sie im Artikel mit der Anleitung für die IoT Hub-Überwachung.