Tutorial: Interagieren mit einem IoT Plug & Play-Gerät, das mit Ihrer Lösung verbunden ist

IoT Plug & Play vereinfacht IoT, indem es Ihnen die Interaktion mit den Funktionen eines Geräts – ohne Kenntnisse der zugrunde liegenden Geräteimplementierung – ermöglicht. In diesem Tutorial erfahren Sie, wie Sie mithilfe von C# eine Verbindung mit einem IoT Plug & Play-Gerät, das mit Ihrer Lösung verbunden ist, herstellen und es steuern können.

Voraussetzungen

Vergewissern Sie sich, dass Sie Ihre Umgebung eingerichtet haben (einschließlich Ihres IoT-Hubs), bevor Sie den Vorgang fortsetzen.

Sie können dieses Tutorial unter Linux oder Windows durcharbeiten. Die Shellbefehle in diesem Tutorial entsprechen der Linux-Konvention für die Pfadtrennzeichen /. Wenn Sie den Anleitungen unter Windows folgen, sollten Sie diese Trennzeichen durch \ ersetzen.

Klonen des SDK-Repositorys mit dem Beispielcode

Wenn Sie das Tutorial Verbinden einer unter Windows ausgeführten IoT Plug & Play-Beispielgeräteanwendung mit IoT Hub (C#) abgeschlossen haben, wurde das Repository bereits geklont.

Klonen Sie die Beispiele aus dem GitHub-Repository mit dem Azure IoT SDK für C#. Öffnen Sie eine Eingabeaufforderung in einem Ordner Ihrer Wahl. Führen Sie den folgenden Befehl zum Klonen des GitHub-Repositorys mit Microsoft Azure IoT SDK für .NET aus:

git clone https://github.com/Azure/azure-iot-sdk-csharp.git

Erstellen des Gerätecodes

Jetzt können Sie das Gerätebeispiel erstellen und ausführen. Führen Sie die folgenden Befehle zum Erstellen des Beispiels aus:

cd azure-iot-sdk-csharp/iothub/device/samples/solutions/PnpDeviceSamples/Thermostat
dotnet build

Ausführen des Gerätebeispiels

Führen Sie den folgenden Befehl zum Ausführen des Beispiels aus:

dotnet run

Das Gerät ist jetzt zum Empfangen von Befehlen und Eigenschaftsaktualisierungen bereit und hat damit begonnen, Telemetriedaten an den Hub zu senden. Behalten Sie die Ausführung des Beispiels während der nächsten Schritte bei.

Ausführen der Beispiellösung

In Einrichten Ihrer Umgebung für die IoT Plug & Play-Schnellstarts und -Tutorials haben Sie zwei Umgebungsvariablen erstellt, um das Beispiel so zu konfigurieren, dass es eine Verbindung mit Ihrem IoT-Hub herstellt:

  • IOTHUB_CONNECTION_STRING: die IoT-Hub-Verbindungszeichenfolge, die Sie sich zuvor notiert haben.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

In diesem Tutorial verwenden Sie eine in C# geschriebene IoT-Beispiellösung für die Interaktion mit dem Beispielgerät, das Sie gerade eingerichtet und ausgeführt haben.

  1. Navigieren Sie in einem anderen Terminalfenster zum Ordner azure-iot-sdk-csharp\iothub\service\samples\solutions\PnpServiceSamples\Thermostat.

  2. Führen Sie den folgenden Befehl zum Erstellen des Dienstbeispiels aus:

    dotnet build
    
  3. Führen Sie den folgenden Befehl zum Ausführen des Dienstbeispiels aus:

    dotnet run
    

Gerätezwilling abrufen

Der folgende Codeausschnitt zeigt, wie die Dienstanwendung den Gerätezwilling abruft:

// Get a Twin and retrieves model Id set by Device client
Twin twin = await s_registryManager.GetTwinAsync(s_deviceId);
s_logger.LogDebug($"Model Id of this Twin is: {twin.ModelId}");

Hinweis

In diesem Beispiel wird der Namespace Microsoft.Azure.Devices.Client aus dem IoT Hub-Dienstclient verwendet. Weitere Informationen zu den APIs, einschließlich der Digital Twins-API, finden Sie im Leitfaden für Dienstentwickler.

Dieser Code generiert die folgende Ausgabe:

[09/21/2020 11:26:04]dbug: Thermostat.Program[0]
      Model Id of this Twin is: dtmi:com:example:Thermostat;1

Der folgende Codeausschnitt zeigt, wie Sie Eigenschaften über den Gerätezwilling mit einem Patch aktualisieren:

// Update the twin
var twinPatch = new Twin();
twinPatch.Properties.Desired[PropertyName] = PropertyValue;
await s_registryManager.UpdateTwinAsync(s_deviceId, twinPatch, twin.ETag);

Mit diesem Code wird die folgende Ausgabe des Geräts generiert, wenn der Dienst die Eigenschaft targetTemperature aktualisiert:

[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
      Property: Received - { "targetTemperature": 60°C }.
[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
      Property: Update - {"targetTemperature": 60°C } is InProgress.

...

[09/21/2020 11:26:17]dbug: Thermostat.ThermostatSample[0]
      Property: Update - {"targetTemperature": 60°C } is Completed.

Aufrufen eines Befehls

Der folgende Codeausschnitt zeigt das Aufrufen eines Befehls:

private static async Task InvokeCommandAsync()
{
    var commandInvocation = new CloudToDeviceMethod(CommandName) { ResponseTimeout = TimeSpan.FromSeconds(30) };

    // Set command payload
    string componentCommandPayload = JsonConvert.SerializeObject(s_dateTime);
    commandInvocation.SetPayloadJson(componentCommandPayload);

    CloudToDeviceMethodResult result = await s_serviceClient.InvokeDeviceMethodAsync(s_deviceId, commandInvocation);

    if (result == null)
    {
        throw new Exception($"Command {CommandName} invocation returned null");
    }

    s_logger.LogDebug($"Command {CommandName} invocation result status is: {result.Status}");
}

Mit diesem Code wird die folgende Ausgabe des Geräts generiert, wenn der Dienst den getMaxMinReport Befehl aufruft:

[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
      Command: Received - Generating max, min and avg temperature report since 21/09/2020 11:25:58.
[09/21/2020 11:26:05]dbug: Thermostat.ThermostatSample[0]
      Command: MaxMinReport since 21/09/2020 11:25:58: maxTemp=32, minTemp=32, avgTemp=32, startTime=21/09/2020 11:25:59, endTime=21/09/2020 11:26:04

IoT Plug & Play vereinfacht IoT, indem es Ihnen die Interaktion mit den Funktionen eines Geräts – ohne Kenntnisse der zugrunde liegenden Geräteimplementierung – ermöglicht. In diesem Tutorial erfahren Sie, wie Sie mithilfe von Java eine Verbindung mit einem IoT Plug & Play-Gerät, das mit Ihrer Lösung verbunden ist, herstellen und es steuern können.

Voraussetzungen

Vergewissern Sie sich, dass Sie Ihre Umgebung eingerichtet haben (einschließlich Ihres IoT-Hubs), bevor Sie den Vorgang fortsetzen.

Sie können dieses Tutorial unter Linux oder Windows durcharbeiten. Die Shellbefehle in diesem Tutorial entsprechen der Linux-Konvention für die Pfadtrennzeichen /. Wenn Sie den Anleitungen unter Windows folgen, sollten Sie diese Trennzeichen durch \ ersetzen.

Installieren Sie die folgende Software in Ihrer lokalen Entwicklungsumgebung, um dieses Tutorial durcharbeiten zu können:

Klonen des SDK-Repositorys mit dem Beispielcode

Wenn Sie das Tutorial Verbinden einer unter Windows ausgeführten IoT Plug & Play-Beispielgeräteanwendung mit IoT Hub (Java) abgeschlossen haben, wurde das Repository bereits geklont.

Öffnen Sie eine Eingabeaufforderung in einem Verzeichnis Ihrer Wahl. Führen Sie den folgenden Befehl aus, um das GitHub-Repository Microsoft Azure IoT SDKs für Java an diesem Speicherort zu klonen:

git clone https://github.com/Azure/azure-iot-sdk-java.git

Erstellen und Ausführen des Beispielgeräts

Navigieren Sie im geklonten Java SDK-Repository zum Stammordner des Thermostatbeispiels, und erstellen Sie es:

cd azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/thermostat-device-sample
mvn clean package

In Einrichten Ihrer Umgebung haben Sie vier Umgebungsvariablen erstellt, um das Beispiel so zu konfigurieren, dass der Device Provisioning-Dienst (Device Provisioning Service, DPS) zum Herstellen einer Verbindung mit Ihrem IoT-Hub verwendet wird:

  • IOTHUB_DEVICE_SECURITY_TYPE mit dem Wert DPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE mit dem Bereich „DPS-ID“.
  • IOTHUB_DEVICE_DPS_DEVICE_ID mit dem Wert my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY mit dem Primärschlüssel für die Registrierung.
  • IOTHUB_DEVICE_DPS_ENDPOINT mit dem Wert global.azure-devices-provisioning.net.

Weitere Informationen zur Beispielkonfiguration finden Sie in der Beispiel-Infodatei.

Führen Sie die Anwendung aus dem Ordner \device\iot-device-samples\pnp-device-sample\thermostat-device-sample aus:

mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.Thermostat"

Das Gerät ist jetzt zum Empfangen von Befehlen und Eigenschaftsaktualisierungen bereit und hat damit begonnen, Telemetriedaten an den Hub zu senden. Behalten Sie die Ausführung des Beispiels während der nächsten Schritte bei.

Ausführen der Beispiellösung

In Einrichten Ihrer Umgebung für die IoT Plug & Play-Schnellstarts und -Tutorials haben Sie zwei Umgebungsvariablen erstellt, um das Beispiel so zu konfigurieren, dass es eine Verbindung mit Ihrem IoT-Hub herstellt:

  • IOTHUB_CONNECTION_STRING: die IoT-Hub-Verbindungszeichenfolge, die Sie sich zuvor notiert haben.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

In diesem Tutorial verwenden Sie eine in Java geschriebene IoT-Beispiellösung für die Interaktion mit dem Beispielgerät, das Sie gerade eingerichtet haben.

Hinweis

In diesem Beispiel wird der Namespace com.microsoft.azure.sdk.iot.service des IoT Hub-Dienstclients verwendet. Weitere Informationen zu den APIs, einschließlich der Digital Twins-API, finden Sie im Leitfaden für Dienstentwickler.

  1. Öffnen Sie ein weiteres Terminalfenster zur Verwendung als Ihr Dienstterminal.

  2. Navigieren Sie im geklonten Java SDK-Repository zum Ordner service\iot-service-samples\pnp-service-sample\thermostat-service-sample.

  3. Führen Sie die folgenden Befehle zum Erstellen und Ausführen der Beispieldienstanwendung aus:

    mvn clean package
    mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.service.Thermostat"
    

Gerätezwilling abrufen

Im folgenden Codeausschnitt ist dargestellt, wie Sie den Gerätezwilling im Dienst abrufen:

 // Get the twin and retrieve model Id set by Device client.
DeviceTwinDevice twin = new DeviceTwinDevice(deviceId);
twinClient.getTwin(twin);
System.out.println("Model Id of this Twin is: " + twin.getModelId());

Aktualisieren eines Gerätezwillings

Der folgende Codeausschnitt zeigt, wie Sie Eigenschaften über den Gerätezwilling mit einem Patch aktualisieren:

String propertyName = "targetTemperature";
double propertyValue = 60.2;
twin.setDesiredProperties(Collections.singleton(new Pair(propertyName, propertyValue)));
twinClient.updateTwin(twin);

In der Geräteausgabe können Sie sehen, wie das Gerät auf diese Aktualisierung der Eigenschaft reagiert.

Aufrufen eines Befehls

Der folgende Codeausschnitt veranschaulicht, wie Sie auf dem Gerät einen Befehl aufrufen:

// The method to invoke for a device without components should be "methodName" as defined in the DTDL.
String methodToInvoke = "getMaxMinReport";
System.out.println("Invoking method: " + methodToInvoke);

Long responseTimeout = TimeUnit.SECONDS.toSeconds(200);
Long connectTimeout = TimeUnit.SECONDS.toSeconds(5);

// Invoke the command.
String commandInput = ZonedDateTime.now(ZoneOffset.UTC).minusMinutes(5).format(DateTimeFormatter.ISO_DATE_TIME);
MethodResult result = methodClient.invoke(deviceId, methodToInvoke, responseTimeout, connectTimeout, commandInput);
if(result == null)
{
    throw new IOException("Method result is null");
}

System.out.println("Method result status is: " + result.getStatus());

In der Geräteausgabe können Sie sehen, wie das Gerät auf diesen Befehl reagiert.

IoT Plug & Play vereinfacht IoT, indem es Ihnen die Interaktion mit den Funktionen eines Geräts – ohne Kenntnisse der zugrunde liegenden Geräteimplementierung – ermöglicht. In diesem Tutorial erfahren Sie, wie Sie mithilfe von Node.js eine Verbindung mit einem IoT Plug & Play-Gerät, das mit Ihrer Lösung verbunden ist, herstellen und es steuern können.

Voraussetzungen

Vergewissern Sie sich, dass Sie Ihre Umgebung eingerichtet haben (einschließlich Ihres IoT-Hubs), bevor Sie den Vorgang fortsetzen.

Für dieses Tutorial muss sich Node.js auf Ihrem Entwicklungscomputer befinden. Sie können die neueste empfohlene Version 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 des SDK-Repositorys mit dem Beispielcode

Klonen Sie die Beispiele aus einem Node SDK-Repository. Öffnen Sie ein Terminalfenster in einem Ordner Ihrer Wahl. Führen Sie den folgenden Befehl aus, um das GitHub-Repository Microsoft Azure IoT SDK for Node.js zu klonen:

git clone https://github.com/Azure/azure-iot-sdk-node

Ausführen des Beispielgeräts

In Einrichten Ihrer Umgebung haben Sie vier Umgebungsvariablen erstellt, um das Beispiel so zu konfigurieren, dass der Device Provisioning-Dienst (Device Provisioning Service, DPS) zum Herstellen einer Verbindung mit Ihrem IoT-Hub verwendet wird:

  • IOTHUB_DEVICE_SECURITY_TYPE mit dem Wert DPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE mit dem Bereich „DPS-ID“.
  • IOTHUB_DEVICE_DPS_DEVICE_ID mit dem Wert my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY mit dem Primärschlüssel für die Registrierung.
  • IOTHUB_DEVICE_DPS_ENDPOINT mit dem Wert global.azure-devices-provisioning.net.

Weitere Informationen zur Beispielkonfiguration finden Sie in der Beispiel-Infodatei.

In diesem Tutorial verwenden Sie ein in Node.js geschriebenes Beispiel-Thermostatgerät als IoT Plug & Play-Gerät. So führen Sie das Beispielgerät aus:

  1. Öffnen Sie ein Terminalfenster, und navigieren Sie zu dem lokalen Ordner mit dem Microsoft Azure IoT SDK for Node.js, das Sie auf GitHub geklont haben.

  2. Dieses Terminalfenster wird als Ihr Geräteterminal verwendet. Wechseln Sie zum Ordner Ihres geklonten Repositorys, und navigieren Sie darin zum Ordner /azure-iot-sdk-node/device/samples/javascript. Installieren Sie alle Abhängigkeiten, indem Sie den folgenden Befehl ausführen:

    npm install
    
  3. Führen Sie den Beispielthermostat mit dem folgenden Befehl aus:

    node pnp_simple_thermostat.js
    
  4. Es werden Nachrichten darüber angezeigt, dass das Gerät Informationen gesendet und sich selbst als „online“ gemeldet hat. Diese Nachrichten weisen darauf hin, dass das Gerät damit begonnen hat, Telemetriedaten an den Hub zu senden und jetzt bereit zum Empfangen von Befehlen und Eigenschaftsaktualisierungen ist. Schließen Sie dieses Terminal nicht. Sie benötigen es zur Prüfung, ob das Dienstbeispiel funktioniert.

Ausführen der Beispiellösung

In Einrichten Ihrer Umgebung für die IoT Plug & Play-Schnellstarts und -Tutorials haben Sie zwei Umgebungsvariablen erstellt, um das Beispiel so zu konfigurieren, dass es eine Verbindung mit Ihrem IoT-Hub herstellt:

  • IOTHUB_CONNECTION_STRING: die IoT-Hub-Verbindungszeichenfolge, die Sie sich zuvor notiert haben.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

In diesem Tutorial verwenden Sie eine in Node.js geschriebene IoT-Beispiellösung für die Interaktion mit dem Beispielgerät, das Sie gerade eingerichtet und ausgeführt haben.

  1. Öffnen Sie ein weiteres Terminalfenster zur Verwendung als Ihr Dienstterminal.

  2. Navigieren Sie im geklonten Node SDK-Repository zum Ordner /azure-iot-sdk-node/service/samples/javascript. Installieren Sie alle Abhängigkeiten, indem Sie den folgenden Befehl ausführen:

    npm install
    

Lesen einer Eigenschaft

  1. Bei Ihrer Ausführung des Beispielthermostats im Geräteterminal wurden folgende Nachrichten zur Mitteilung von dessen Onlinestatus angezeigt:

    properties have been reported for component
    sending telemetry message 0...
    
  2. Wechseln Sie zum Dienstterminal, und führen Sie den folgenden Befehl aus, um das Beispiel für das Lesen von Geräteinformationen auszuführen:

    node twin.js
    
  3. Beachten Sie in der Ausgabe des Dienstterminals die Antwort des Gerätezwillings. Die Modell-ID des Geräts und die zugehörigen Eigenschaften werden angezeigt:

    Model Id: dtmi:com:example:Thermostat;1
    {
      "deviceId": "my-pnp-device",
      "etag": "AAAAAAAAAAE=",
      "deviceEtag": "Njc3MDMxNDcy",
      "status": "enabled",
      "statusUpdateTime": "0001-01-01T00:00:00Z",
      "connectionState": "Connected",
      "lastActivityTime": "0001-01-01T00:00:00Z",
      "cloudToDeviceMessageCount": 0,
      "authenticationType": "sas",
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      },
      "modelId": "dtmi:com:example:Thermostat;1",
      "version": 4,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2020-10-05T11:35:19.4574755Z"
          },
          "$version": 1
        },
        "reported": {
          "maxTempSinceLastReboot": 31.343640523762232,
          "serialNumber": "123abc",
          "$metadata": {
            "$lastUpdated": "2020-10-05T11:35:23.7339042Z",
            "maxTempSinceLastReboot": {
              "$lastUpdated": "2020-10-05T11:35:23.7339042Z"
            },
            "serialNumber": {
              "$lastUpdated": "2020-10-05T11:35:23.7339042Z"
            }
          },
          "$version": 3
        }
      },
      "capabilities": {
        "iotEdge": false
      },
      "tags": {}
    }
    
  4. Der folgende Codeausschnitt zeigt den Code in twin.js, mit dem die Modell-ID des Gerätezwillings abgerufen wird:

    var registry = Registry.fromConnectionString(connectionString);
    registry.getTwin(deviceId, function(err, twin) {
      if (err) {
        console.error(err.message);
      } else {
        console.log('Model Id: ' + twin.modelId);
        //...
      }
      //...
    }
    

In diesem Szenario wird Model Id: dtmi:com:example:Thermostat;1 ausgegeben.

Hinweis

In diesen Dienstbeispielen wird die Registry-Klasse aus dem IoT Hub-Dienstclient verwendet. Weitere Informationen zu den APIs, einschließlich der Digital Twins-API, finden Sie im Leitfaden für Dienstentwickler.

Aktualisieren einer schreibbaren Eigenschaft

  1. Öffnen Sie die Datei twin.js in einem Code-Editor.

  2. Sehen Sie sich den Beispielcode an. Darin werden zwei Vorgehensweisen zum Aktualisieren des Gerätezwillings veranschaulicht. Ändern Sie bei der ersten Vorgehensweise die Variable twinPatch wie folgt:

    var twinPatch = {
      tags: {
        city: "Redmond"
      },
      properties: {
        desired: {
          targetTemperature: 42
        }
      }
    };
    

    Die Eigenschaft targetTemperature ist im Thermostat-Gerätemodell als schreibbare Eigenschaft definiert.

  3. Verwenden Sie im Dienstterminal den folgenden Befehl zur Ausführung des Beispiels zum Aktualisieren der Eigenschaft:

    node twin.js
    
  4. In Ihrem Geräteterminal sehen Sie, dass das Gerät die Aktualisierung erhalten hat:

    The following properties will be updated for the default component:
    {
      targetTemperature: {
        value: 42,
        ac: 200,
        ad: 'Successfully executed patch for targetTemperature',
        av: 2
      }
    }
    updated the property
    
  5. Führen Sie in Ihrem Dienstterminal den folgenden Befehl zur Bestätigung aus, dass die-Eigenschaft aktualisiert wurde:

    node twin.js
    
  6. In der Ausgabe des Dienstterminals wird im Abschnitt mit den reported Eigenschaften die gemeldete aktualisierte Zieltemperatur angezeigt. Es kann eine Weile dauern, bis das Gerät die Aktualisierung abgeschlossen hat. Wiederholen Sie diesen Schritt so oft, bis das Gerät die Eigenschaftsaktualisierung verarbeitet hat:

    "reported": {
      //...
      "targetTemperature": {
        "value": 42,
        "ac": 200,
        "ad": "Successfully executed patch for targetTemperature",
        "av": 4
      },
      //...
    }
    

Aufrufen eines Befehls

  1. Öffnen Sie die Datei device_method.js, und sehen Sie sich den Code an.

  2. Wechseln Sie zum Dienstterminal. Verwenden Sie den folgenden Befehl, um das Beispiel für das Aufrufen des Befehls auszuführen:

    set IOTHUB_METHOD_NAME=getMaxMinReport
    set IOTHUB_METHOD_PAYLOAD=commandpayload
    node device_method.js
    
  3. Die Ausgabe im Dienstterminal zeigt die folgende Bestätigung:

    getMaxMinReport on my-pnp-device:
    {
      "status": 200,
      "payload": {
        "maxTemp": 23.460596940801928,
        "minTemp": 23.460596940801928,
        "avgTemp": 23.460596940801928,
        "endTime": "2020-10-05T12:48:08.562Z",
        "startTime": "2020-10-05T12:47:54.450Z"
      }
    }
    
  4. Im Geräteterminal sehen Sie, dass der Befehl bestätigt wird:

    MaxMinReport commandpayload
    Response to method 'getMaxMinReport' sent successfully.
    

IoT Plug & Play vereinfacht IoT, indem es Ihnen die Interaktion mit dem Modell eines Geräts – ohne Kenntnisse der zugrunde liegenden Geräteimplementierung – ermöglicht. In diesem Tutorial erfahren Sie, wie Sie mithilfe von Python eine Verbindung mit einem IoT Plug & Play-Gerät, das mit Ihrer Lösung verbunden ist, herstellen und es steuern können.

Voraussetzungen

Vergewissern Sie sich, dass Sie Ihre Umgebung eingerichtet haben (einschließlich Ihres IoT-Hubs), bevor Sie den Vorgang fortsetzen.

Für dieses Tutorial benötigen Sie auf Ihrem Entwicklungscomputer Python. Prüfen Sie das Azure IoT Python SDK auf die aktuellen Python-Versionsanforderungen. Sie können Ihre Python-Version mit dem folgenden Befehl überprüfen:

python --version

Die neueste empfohlene Version kann für mehrere Plattformen von python.org heruntergeladen werden.

Installieren Sie das Paket azure-iot-device in Ihrer lokalen Python-Umgebung wie folgt:

pip install azure-iot-device

Installieren Sie das azure-iot-hub-Paket durch Ausführen des folgenden Befehls:

pip install azure-iot-hub

Ausführen des Beispielgeräts

In Einrichten Ihrer Umgebung haben Sie vier Umgebungsvariablen erstellt, um das Beispiel so zu konfigurieren, dass der Device Provisioning-Dienst (Device Provisioning Service, DPS) zum Herstellen einer Verbindung mit Ihrem IoT-Hub verwendet wird:

  • IOTHUB_DEVICE_SECURITY_TYPE mit dem Wert DPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE mit dem Bereich „DPS-ID“.
  • IOTHUB_DEVICE_DPS_DEVICE_ID mit dem Wert my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY mit dem Primärschlüssel für die Registrierung.
  • IOTHUB_DEVICE_DPS_ENDPOINT mit dem Wert global.azure-devices-provisioning.net.

Weitere Informationen zur Beispielkonfiguration finden Sie in der Beispiel-Infodatei.

In diesem Tutorial verwenden Sie ein in Python geschriebenes Beispiel-Thermostatgerät als IoT Plug & Play-Gerät. So führen Sie das Beispielgerät aus:

  1. Öffnen Sie ein Terminalfenster in einem Ordner Ihrer Wahl. Führen Sie den folgenden Befehl aus, um das GitHub-Repository Azure IoT Device Python SDK an diesem Speicherort zu klonen:

    git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
    
  2. Dieses Terminalfenster wird als Ihr Geräteterminal verwendet. Wechseln Sie zum Ordner Ihres geklonten Repositorys, und navigieren Sie zum Ordner /azure-iot-sdk-python/samples/pnp.

  3. Führen Sie den Beispielthermostat mit dem folgenden Befehl aus:

    python simple_thermostat.py
    
  4. Es werden Nachrichten darüber angezeigt, dass das Gerät Informationen gesendet und sich selbst als „online“ gemeldet hat. Diese Nachrichten weisen darauf hin, dass das Gerät damit begonnen hat, Telemetriedaten an den Hub zu senden und jetzt bereit zum Empfangen von Befehlen und Eigenschaftsaktualisierungen ist. Schließen Sie dieses Terminal nicht. Sie benötigen es zur Prüfung, ob das Dienstbeispiel funktioniert.

Ausführen der Beispiellösung

In diesem Tutorial verwenden Sie eine in Python geschriebene IoT-Beispiellösung für die Interaktion mit dem Beispielgerät, das Sie gerade eingerichtet haben.

  1. Öffnen Sie ein weiteres Terminalfenster zur Verwendung als Ihr Dienstterminal. Führen Sie den folgenden Befehl aus, um das GitHub-Repository Azure IoT Hub Python SDK an diesem Speicherort zu klonen:

    git clone https://github.com/Azure/azure-iot-hub-python
    
  2. Installieren von

  3. Navigieren Sie zum Ordner /azure-iot-hub-python/samples des geklonten Python SDK-Repositorys.

  4. Öffnen Sie die Datei registry_manager_pnp_sample.py, und sehen Sie sich den Code an. In diesem Beispiel wird veranschaulicht, wie Sie die IoTHubRegistryManager-Klasse zum Interagieren mit Ihrem IoT Plug & Play-Gerät verwenden.

Hinweis

In diesen Dienstbeispielen wird die IoTHubRegistryManager-Klasse aus dem IoT Hub-Dienstclient verwendet. Weitere Informationen zu den APIs, einschließlich der Digital Twins-API, finden Sie im Leitfaden für Dienstentwickler.

Abrufen des Gerätezwillings

In Einrichten Ihrer Umgebung für die IoT Plug & Play-Schnellstarts und -Tutorials haben Sie zwei Umgebungsvariablen erstellt, um das Beispiel so zu konfigurieren, dass es eine Verbindung mit Ihrem IoT-Hub herstellt:

  • IOTHUB_CONNECTION_STRING: die IoT-Hub-Verbindungszeichenfolge, die Sie sich zuvor notiert haben.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

Verwenden Sie den folgenden Befehl im Dienstterminal, um dieses Beispiel auszuführen:

set IOTHUB_METHOD_NAME="getMaxMinReport"
set IOTHUB_METHOD_PAYLOAD="hello world"
python registry_manager_pnp_sample.py

Hinweis

Verwenden Sie export anstelle von set, wenn Sie dieses Beispiel unter Linux ausführen.

In der Ausgabe sind der Gerätezwilling und die zugehörige Modell-ID enthalten:

The Model ID for this device is:
dtmi:com:example:Thermostat;1

Im folgenden Codeausschnitt ist der Beispielcode aus registry_manager_pnp_sample.py enthalten:

    # Create IoTHubRegistryManager
    iothub_registry_manager = IoTHubRegistryManager(iothub_connection_str)

    # Get device twin
    twin = iothub_registry_manager.get_twin(device_id)
    print("The device twin is: ")
    print("")
    print(twin)
    print("")

    # Print the device's model ID
    additional_props = twin.additional_properties
    if "modelId" in additional_props:
        print("The Model ID for this device is:")
        print(additional_props["modelId"])
        print("")

Aktualisieren eines Gerätezwillings

In diesem Beispiel wird veranschaulicht, wie Sie die schreibbare Eigenschaft targetTemperature auf dem Gerät aktualisieren:

    # Update twin
    twin_patch = Twin()
    twin_patch.properties = TwinProperties(
        desired={"targetTemperature": 42}
    )  # this is relevant for the thermostat device sample
    updated_twin = iothub_registry_manager.update_twin(device_id, twin_patch, twin.etag)
    print("The twin patch has been successfully applied")
    print("")

Sie können die Aktualisierung im Geräteterminal überprüfen, das die folgende Ausgabe anzeigt:

the data in the desired properties patch was: {'targetTemperature': 42, '$version': 2}

Das Dienstterminal bestätigt, dass der Patch erfolgreich war:

The twin patch has been successfully applied

Aufrufen eines Befehls

Im Beispiel wird dann ein Befehl aufgerufen:

Das Dienstterminal zeigt eine Bestätigungsmeldung vom Gerät an:

The device method has been successfully invoked

Im Geräteterminal sehen Sie, dass das Gerät den Befehl empfängt:

Command request received with payload
hello world
Will return the max, min and average temperature from the specified time hello to the current time
Done generating
{"tempReport": {"avgTemp": 34.2, "endTime": "09/07/2020 09:58:11", "maxTemp": 49, "minTemp": 10, "startTime": "09/07/2020 09:56:51"}}

Bereinigen von Ressourcen

Wenn Sie mit den Schnellstartanleitungen und Tutorials fertig sind, lesen Sie Bereinigen von Ressourcen.

Nächste Schritte

In diesem Tutorial haben Sie erfahren, wie Sie ein IoT Plug & Play-Gerät mit einer IoT-Lösung verbinden. Weitere Informationen zu IoT Plug & Play-Gerätemodellen finden Sie unter: