Schnellstart: Kommunizieren mit einer Geräteanwendung in C# über IoT Hub-Gerätestreams (Vorschauversion)Quickstart: Communicate to a device application in C# via IoT Hub device streams (preview)

Azure IoT Hub unterstützt derzeit Gerätestreams als Previewfunktion.Azure IoT Hub currently supports device streams as a preview feature.

Über IoT Hub-Gerätestreams können Dienst- und Geräteanwendungen sicher und firewallfreundlich kommunizieren.IoT Hub device streams allow service and device applications to communicate in a secure and firewall-friendly manner. In dieser Schnellstartanleitung werden zwei C#-Anwendungen verwendet, die Daten über Gerätestreams hin und her senden (Echo).This quickstart involves two C# applications that take advantage of device streams to send data back and forth (echo).

Verwenden von Azure Cloud ShellUse Azure Cloud Shell

Azure hostet Azure Cloud Shell, eine interaktive Shell-Umgebung, die Sie über Ihren Browser nutzen können.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Sie können entweder Bash oder PowerShell mit Cloud Shell verwenden, um mit Azure-Diensten zu arbeiten.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Sie können die vorinstallierten Befehle von Cloud Shell verwenden, um den Code in diesem Artikel auszuführen, ohne etwas in Ihrer lokalen Umgebung installieren zu müssen.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Starten von Azure Cloud Shell:To start Azure Cloud Shell:

OptionOption Beispiel/LinkExample/Link
Klicken Sie in der rechten oberen Ecke eines Codeblocks auf Ausprobieren.Select Try It in the upper-right corner of a code block. Durch die Auswahl von Ausprobieren wird der Code nicht automatisch in Cloud Shell kopiert.Selecting Try It doesn't automatically copy the code to Cloud Shell. Beispiel für „Testen Sie es.“ für Azure Cloud Shell
Rufen Sie https://shell.azure.com auf, oder wählen Sie die Schaltfläche Cloud Shell starten, um Cloud Shell im Browser zu öffnen.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Starten von Cloud Shell in einem neuen FensterLaunch Cloud Shell in a new window
Wählen Sie im Azure-Portal rechts oben im Menü die Schaltfläche Cloud Shell aus.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Cloud Shell-Schaltfläche im Azure-Portal

Ausführen des Codes in diesem Artikel in Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Starten Sie Cloud Shell.Start Cloud Shell.

  2. Wählen Sie die Schaltfläche Kopieren für einen Codeblock, um den Code zu kopieren.Select the Copy button on a code block to copy the code.

  3. Fügen Sie den Code mit STRG+UMSCHALT+V unter Windows und Linux oder Cmd+UMSCHALT+V unter macOS in die Cloud Shell-Sitzung ein.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Drücken Sie die EINGABETASTE, um den Code auszuführen.Select Enter to run the code.

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.If you don’t have an Azure subscription, create a free account before you begin.

VoraussetzungenPrerequisites

  • Die Vorschau der Gerätestreams wird derzeit nur für IoT-Hubs unterstützt, die in folgenden Regionen erstellt werden:The preview of device streams is currently supported only for IoT hubs that are created in the following regions:

    • USA (Mitte)Central US
    • USA, Mitte (EUAP)Central US EUAP
    • NordeuropaNorth Europe
    • Asien, SüdostenSoutheast Asia
  • Die beiden in dieser Schnellstartanleitung ausgeführten Beispielanwendungen sind in C# geschrieben.The two sample applications that you run in this quickstart are written in C#. Sie benötigen auf Ihrem Entwicklungscomputer das .NET Core SDK 2.1.0 oder höher.You need the .NET Core SDK 2.1.0 or later on your development machine.

    dotnet --version
    
  • Führen Sie den folgenden Befehl aus, um Ihrer Cloud Shell-Instanz die Azure IoT-Erweiterung für die Azure-Befehlszeilenschnittstelle hinzuzufügen.Add the Azure IoT Extension for Azure CLI to your Cloud Shell instance by running the following command. Die IoT-Erweiterung fügt der Azure-Befehlszeilenschnittstelle spezifische Befehle für IoT Hub, IoT Edge und IoT Device Provisioning Service (DPS) hinzu.The IOT Extension adds IoT Hub, IoT Edge, and IoT Device Provisioning Service (DPS)-specific commands to the Azure CLI.

    az extension add --name azure-iot
    

Hinweis

In diesem Artikel wird die neueste Version der Azure IoT-Erweiterung namens azure-iot verwendet.This article uses the newest version of the Azure IoT extension, called azure-iot. Die Legacy-Version heißt azure-cli-iot-ext. Es sollte jedoch jeweils nur eine Version installiert sein.The legacy version is called azure-cli-iot-ext.You should only have one version installed at a time. Sie können den Befehl az extension list verwenden, um die derzeit installierten Erweiterungen zu überprüfen.You can use the command az extension list to validate the currently installed extensions.

Verwenden Sie az extension remove --name azure-cli-iot-ext, um die Legacy-Version der Erweiterung zu entfernen.Use az extension remove --name azure-cli-iot-ext to remove the legacy version of the extension.

Verwenden Sie az extension add --name azure-iot, um die neue Version der Erweiterung hinzuzufügen.Use az extension add --name azure-iot to add the new version of the extension.

Verwenden Sie az extension list, um die installierten Erweiterungen anzuzeigen.To see what extensions you have installed, use az extension list.

Erstellen eines IoT-HubsCreate an IoT hub

In diesem Abschnitt wird beschrieben, wie Sie über das Azure-Portal einen IoT-Hub erstellen:This section describes how to create an IoT hub using the Azure portal.

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.

  2. Wählen Sie auf der Azure-Startseite die Schaltfläche + Ressource erstellen aus, und geben Sie dann ins Feld Marketplace durchsuchen den Begriff IoT Hub ein.From the Azure homepage, select the + Create a resource button, and then enter IoT Hub in the Search the Marketplace field.

  3. Wählen Sie in den Suchergebnissen IoT Hub und dann Erstellen aus.Select IoT Hub from the search results, and then select Create.

  4. Füllen Sie auf der Registerkarte Grundlegende Einstellungen die Felder wie folgt aus:On the Basics tab, complete the fields as follows:

    • Abonnement: Wählen Sie das Abonnement aus, das Sie für Ihren Hub verwenden möchten.Subscription: Select the subscription to use for your hub.

    • Ressourcengruppe: Wählen Sie eine vorhandene Ressourcengruppe aus, oder erstellen Sie eine neue.Resource Group: Select a resource group or create a new one. Wählen Sie zum Erstellen einer neuen Ressourcengruppe die Option Neu erstellen aus, und geben Sie den Namen ein, den Sie verwenden möchten.To create a new one, select Create new and fill in the name you want to use. Wenn Sie eine vorhandene Ressourcengruppe verwenden möchten, wählen Sie die entsprechende Ressourcengruppe aus.To use an existing resource group, select that resource group. Weitere Informationen finden Sie unter Verwalten von Azure Resource Manager-Ressourcengruppen.For more information, see Manage Azure Resource Manager resource groups.

    • Region: Wählen Sie die Region aus, in der sich Ihr Hub befinden soll.Region: Select the region in which you want your hub to be located. Wählen Sie den Standort aus, der Ihnen am nächsten ist.Select the location closest to you. Einige Features, etwa IoT Hub-Gerätestreams, sind nur in bestimmten Regionen verfügbar.Some features, such as IoT Hub device streams, are only available in specific regions. Für diese eingeschränkten Features müssen Sie eine der unterstützten Regionen auswählen.For these limited features, you must select one of the supported regions.

    • IoT Hub-Name: Geben Sie einen Namen für den Hub ein.IoT Hub Name: Enter a name for your hub. Dieser Name muss global eindeutig sein.This name must be globally unique. Wenn der eingegebene Name verfügbar ist, wird ein grünes Häkchen angezeigt.If the name you enter is available, a green check mark appears.

    Wichtig

    Der IoT-Hub ist öffentlich als DNS-Endpunkt ermittelbar. Stellen Sie daher sicher, dass Sie beim Vergeben des Namens keine sensiblen oder personenbezogenen Informationen verwenden.Because the IoT hub will be publicly discoverable as a DNS endpoint, be sure to avoid entering any sensitive or personally identifiable information when you name it.

    Erstellen eines Hubs im Azure-Portal

  5. Klicken Sie auf Weiter: Größe und Skalierung, um die Erstellung Ihres Hubs fortzusetzen.Select Next: Size and scale to continue creating your hub.

    Festlegen der Größe und Skalierung für einen neuen Hub über das Azure-Portal

    Sie können hier die Standardeinstellungen übernehmen.You can accept the default settings here. Sie können bei Bedarf die folgenden Felder anpassen:If desired, you can modify any of the following fields:

    • Tarif und Skalierung: Ihre ausgewählte Ebene.Pricing and scale tier: Your selected tier. Ihnen stehen abhängig davon, wie viele Features Sie verwenden und wie viele Nachrichten Sie über Ihre Lösung pro Tag senden möchten, mehrere Tarife zur Auswahl.You can choose from several tiers, depending on how many features you want and how many messages you send through your solution per day. Der kostenlose Tarif ist für Test und Bewertung vorgesehen.The free tier is intended for testing and evaluation. Damit kann für 500 Geräte eine Verbindung mit dem Hub hergestellt werden, und bis zu 8.000 Nachrichten pro Tag sind möglich.It allows 500 devices to be connected to the hub and up to 8,000 messages per day. Jedes Azure-Abonnement kann einen IoT-Hub im kostenlosen Tarif erstellen.Each Azure subscription can create one IoT hub in the free tier.

      Wenn Sie eine Schnellstartanleitung für IoT Hub-Gerätestreams durcharbeiten, wählen Sie den Free-Tarif aus.If you are working through a Quickstart for IoT Hub device streams, select the free tier.

    • IoT Hub-Einheiten: Die Anzahl der pro Einheit und Tag zulässigen Nachrichten hängt von Ihrem Hubtarif ab.IoT Hub units: The number of messages allowed per unit per day depends on your hub's pricing tier. Beispiel: Wenn der Hub 700.000 eingehende Nachrichten unterstützen soll, wählen Sie zwei Einheiten des Tarifs S1.For example, if you want the hub to support ingress of 700,000 messages, you choose two S1 tier units. Einzelheiten zu den anderen Tarifoptionen finden Sie unter Skalieren einer IoT Hub-Lösung.For details about the other tier options, see Choosing the right IoT Hub tier.

    • Azure Security Center: Aktivieren Sie diese Option, um IoT und Ihren Geräten eine zusätzliche Ebene für den Bedrohungsschutz hinzuzufügen.Azure Security Center: Turn this on to add an extra layer of threat protection to IoT and your devices. Diese Option steht nicht für Hubs im Free-Tarif zur Verfügung.This option is not available for hubs in the free tier. Weitere Informationen zu diesem Feature finden Sie in der Dokumentation zu Azure Security Center für IoT.For more information about this feature, see Azure Security Center for IoT.

    • Erweiterte Einstellungen > Gerät-zu-Cloud-Partitionen: Diese Eigenschaft setzt die Gerät-zu-Cloud-Nachrichten in Relation zur Anzahl von gleichzeitigen Lesern der Nachrichten.Advanced Settings > Device-to-cloud partitions: This property relates the device-to-cloud messages to the number of simultaneous readers of the messages. Die meisten Hubs benötigen nur vier Partitionen.Most hubs need only four partitions.

  6. Klicken Sie auf Weiter: Tags, um mit dem nächsten Bildschirm fortzufahren.Select Next: Tags to continue to the next screen.

    Tags sind Name-Wert-Paare.Tags are name/value pairs. Sie können das gleiche Tag mehreren Ressourcen und Ressourcengruppen zuweisen, um Ressourcen zu kategorisieren und die Abrechnung zu konsolidieren.You can assign the same tag to multiple resources and resource groups to categorize resources and consolidate billing. Weitere Informationen finden Sie unter Verwenden von Tags zum Organisieren von Azure-Ressourcen.For more information, see Use tags to organize your Azure resources.

    Zuweisen von Tags für den Hub über das Azure-Portal

  7. Klicken Sie auf Weiter: Überprüfen + erstellen, um Ihre Auswahl zu überprüfen.Select Next: Review + create to review your choices. Die Anzeige entspricht in etwa dem folgenden Bildschirm, allerdings werden die Werte verwendet, die Sie beim Erstellen des Hubs ausgewählt haben.You see something similar to this screen, but with the values you selected when creating the hub.

    Überprüfen von Informationen bei der Erstellung des neuen Hubs

  8. Wählen Sie Erstellen aus, um Ihren neuen Hub zu erstellen.Select Create to create your new hub. Das Erstellen des Hubs dauert einige Minuten.Creating the hub takes a few minutes.

Registrieren eines GerätsRegister a device

Ein Gerät muss bei Ihrer IoT Hub-Instanz registriert sein, um eine Verbindung herstellen zu können.A device must be registered with your IoT hub before it can connect. In diesem Abschnitt verwenden Sie Azure Cloud Shell, um ein simuliertes Gerät zu registrieren.In this section, you use Azure Cloud Shell to register a simulated device.

  1. Führen Sie in Cloud Shell den folgenden Befehl aus, um die Geräteidentität zu erstellen:To create the device identity, run the following command in Cloud Shell:

    Hinweis

    • Ersetzen Sie den Platzhalter YourIoTHubName durch den Namen, den Sie für Ihren IoT-Hub ausgewählt haben.Replace the YourIoTHubName placeholder with the name you chose for your IoT hub.
    • Verwenden Sie für den Namen des Geräts, das Sie registrieren, am besten MyDevice, wie bereits gezeigt.For the name of the device you're registering, it's recommended to use MyDevice as shown. Wenn Sie für Ihr Gerät einen anderen Namen auswählen, verwenden Sie diesen im gesamten Artikel, und aktualisieren Sie den Gerätenamen in den Beispielanwendungen, bevor Sie sie ausführen.If you choose a different name for your device, use that name throughout this article, and update the device name in the sample applications before you run them.
    az iot hub device-identity create --hub-name {YourIoTHubName} --device-id MyDevice
    
  2. Führen Sie den folgenden Befehl in Cloud Shell aus, um die Geräteverbindungszeichenfolge für das soeben registrierte Gerät abzurufen:To get the device connection string for the device that you just registered, run the following command in Cloud Shell:

    Hinweis

    Ersetzen Sie den Platzhalter YourIoTHubName durch den Namen, den Sie für Ihren IoT-Hub ausgewählt haben.Replace the YourIoTHubName placeholder with the name you chose for your IoT hub.

    az iot hub device-identity show-connection-string --hub-name {YourIoTHubName} --device-id MyDevice --output table
    

    Notieren Sie sich die zurückgegebene Verbindungszeichenfolge des Geräts zur späteren Verwendung in dieser Schnellstartanleitung.Note the returned device connection string for later use in this quickstart. Dies sieht in etwa wie im folgenden Beispiel aus:It looks like the following example:

    HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyDevice;SharedAccessKey={YourSharedAccessKey}

  3. Darüber hinaus benötigen Sie die Dienstverbindungszeichenfolge aus Ihrem IoT-Hub, damit die dienstseitige Anwendung eine Verbindung mit Ihrem IoT-Hub herstellen und einen Gerätestream einrichten kann.You also need the service connection string from your IoT hub to enable the service-side application to connect to your IoT hub and establish a device stream. Der folgende Befehl ruft diesen Wert für Ihren IoT-Hub ab:The following command retrieves this value for your IoT hub:

    Hinweis

    Ersetzen Sie den Platzhalter YourIoTHubName durch den Namen, den Sie für Ihren IoT-Hub ausgewählt haben.Replace the YourIoTHubName placeholder with the name you chose for your IoT hub.

    az iot hub show-connection-string --policy-name service --name {YourIoTHubName} --output table
    

    Notieren Sie sich die zurückgegebene Verbindungszeichenfolge des Diensts zur späteren Verwendung in dieser Schnellstartanleitung.Note the returned service connection string for later use in this quickstart. Dies sieht in etwa wie im folgenden Beispiel aus:It looks like the following example:

    "HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}"

Kommunizieren zwischen Gerät und Dienst über GerätestreamsCommunicate between the device and the service via device streams

In diesem Abschnitt führen Sie die geräteseitige Anwendung und die dienstseitige Anwendung aus und stellen eine Kommunikation zwischen beiden her.In this section, you run both the device-side application and the service-side application and communicate between the two.

Ausführen der dienstseitigen AnwendungRun the service-side application

Navigieren Sie in einem lokalen Terminalfenster zum Verzeichnis iot-hub/Quickstarts/device-streams-echo/service in Ihrem entpackten Projektordner.In a local terminal window, navigate to the iot-hub/Quickstarts/device-streams-echo/service directory in your unzipped project folder. Halten Sie die folgenden Informationen bereit:Keep the following information handy:

ParameternameParameter name ParameterwertParameter value
ServiceConnectionString Die Dienstverbindungszeichenfolge Ihres IoT-HubsThe service connection string of your IoT hub.
MyDevice Die zuvor erstellte Geräte-ID.The identifier of the device you created earlier.

Kompilieren Sie den Code, und führen Sie ihn mit den folgenden Befehlen aus:Compile and run the code with the following commands:

cd ./iot-hub/Quickstarts/device-streams-echo/service/

# Build the application
dotnet build

# Run the application
# In Linux or macOS
dotnet run "{ServiceConnectionString}" "MyDevice"

# In Windows
dotnet run {ServiceConnectionString} MyDevice

Die Anwendung wartet, bis die Geräteanwendung verfügbar wird.The application will wait for the device application to become available.

Hinweis

Ein Timeout tritt auf, wenn die geräteseitige Anwendung nicht rechtzeitig reagiert.A timeout occurs if the device-side application doesn't respond in time.

Ausführen der geräteseitigen AnwendungRun the device-side application

Navigieren Sie in einem anderen lokalen Terminalfenster zum Verzeichnis iot-hub/Quickstarts/device-streams-echo/device in Ihrem entpackten Projektordner.In another local terminal window, navigate to the iot-hub/Quickstarts/device-streams-echo/device directory in your unzipped project folder. Halten Sie die folgenden Informationen bereit:Keep the following information handy:

ParameternameParameter name ParameterwertParameter value
DeviceConnectionString Die Geräteverbindungszeichenfolge Ihrer IoT Hub-InstanzThe device connection string of your IoT Hub.

Kompilieren Sie den Code, und führen Sie ihn mit den folgenden Befehlen aus:Compile and run the code with the following commands:

cd ./iot-hub/Quickstarts/device-streams-echo/device/

# Build the application
dotnet build

# Run the application
# In Linux or macOS
dotnet run "{DeviceConnectionString}"

# In Windows
dotnet run {DeviceConnectionString}

Am Ende des letzten Schritts initiiert die dienstseitige Anwendung einen Stream an Ihr Gerät.At the end of the last step, the service-side application initiates a stream to your device. Nach der Einrichtung des Streams sendet die Anwendung über den Stream einen Zeichenfolgenpuffer an den Dienst.After the stream is established, the application sends a string buffer to the service over the stream. In diesem Beispiel gibt die dienstseitige Anwendung einfach die gleichen Daten an das Gerät zurück, um eine erfolgreiche bidirektionale Kommunikation zwischen den beiden Anwendungen zu veranschaulichen.In this sample, the service-side application simply echoes back the same data to the device, which demonstrates a successful bidirectional communication between the two applications.

Konsolenausgabe auf Geräteseite:Console output on the device side:

Konsolenausgabe auf Geräteseite

Konsolenausgabe auf Dienstseite:Console output on the service side:

Konsolenausgabe auf Dienstseite

Der über den Stream gesendete Datenverkehr wird nicht direkt gesendet, sondern über den IoT-Hub getunnelt.The traffic being sent over the stream is tunneled through the IoT hub rather than sent directly. Die gebotenen Vorteile werden unter Vorteile von Gerätestreams beschrieben.The benefits provided are detailed in Device streams benefits.

Bereinigen von RessourcenClean up resources

Falls Sie mit dem nächsten empfohlenen Artikel fortfahren möchten, können Sie die bereits erstellten Ressourcen behalten und wiederverwenden.If you plan to continue to the next recommended article, you can keep and reuse the resources you've already created.

Andernfalls können Sie die in diesem Artikel erstellten Azure-Ressourcen löschen, um Gebühren zu vermeiden.Otherwise, to avoid charges, you can delete the Azure resources that you created in this article.

Wichtig

Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden.Deleting a resource group is irreversible. Die Ressourcengruppe und alle darin enthaltenen Ressourcen werden unwiderruflich gelöscht.The resource group and all the resources contained in it are permanently deleted. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen.Make sure that you don't accidentally delete the wrong resource group or resources. Wenn Sie den IoT-Hub in einer bereits vorhandenen Ressourcengruppe erstellt haben, die Ressourcen enthält, die Sie behalten möchten, löschen Sie nicht die Ressourcengruppe, sondern nur die IoT-Hub-Ressource.If you created the IoT hub inside an existing resource group that contains resources that you want to keep, delete only the IoT hub resource itself, not the resource group.

So löschen Sie eine Ressourcengruppe anhand des Namens:To delete a resource group by name:

  1. Melden Sie sich beim Azure-Portal an, und wählen Sie anschließend Ressourcengruppen aus.Sign in to the Azure portal, and then select Resource groups.

  2. Geben Sie im Textfeld Nach Name filtern den Namen der Ressourcengruppe ein, die Ihren IoT-Hub enthält.In the Filter by name box, enter the name of the resource group that contains your IoT hub.

  3. Wählen Sie in der Ergebnisliste rechts neben Ihrer Ressourcengruppe die Auslassungspunkte ( ... ) und anschließend Ressourcengruppe löschen aus.In the result list, to the right of your resource group, select the ellipsis (...), and then select Delete resource group.

    Schaltfläche „Ressourcengruppe löschen“

  4. Um die Löschung der Ressourcengruppe zu bestätigen, geben Sie erneut den Namen der Ressourcengruppe ein, und wählen Sie dann Löschen aus.To confirm the deletion of the resource group, reenter the resource group name, and then select Delete. Nach kurzer Zeit werden die Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht.After a few moments, the resource group and all its contained resources are deleted.

Nächste SchritteNext steps

In dieser Schnellstartanleitung haben Sie einen IoT-Hub eingerichtet, ein Gerät registriert, einen Gerätestream zwischen geräte- und dienstseitigen C#-Anwendungen eingerichtet und mithilfe des Streams Daten zwischen den Anwendungen hin und her gesendet.In this quickstart, you set up an IoT hub, registered a device, established a device stream between C# applications on the device and service sides, and used the stream to send data back and forth between the applications.

Weitere Informationen zu Gerätestreams finden Sie hier:To learn more about device streams, see: