Zelfstudie: Interactie met een IoT-Plug en Play-apparaat dat is verbonden met uw oplossing

IoT Plug en Play vereenvoudigt IoT en stelt u in staat om gebruik te maken van de mogelijkheden van een apparaat zonder kennis van de onderliggende implementatie van het apparaat. In deze zelfstudie leert u hoe u C# gebruikt om verbinding te maken met een IoT-Plug en Play-apparaat dat is verbonden met uw oplossing.

Vereisten

Zorg er, voordat u doorgaat, voor dat u uw omgeving hebt ingesteld, inclusief de IoT-hub.

U kunt deze zelfstudie uitvoeren in Linux of Windows. De shell-opdrachten in deze zelfstudie volgen de Linux-conventie voor padscheidingstekens /. Als u de stappen uitvoert in Windows, moet u deze scheidingstekens vervangen door \.

Kloon de SDK-opslagplaats met de voorbeeldcode

Als u de zelfstudie hebt voltooid: Verbinding maken een Voorbeeld-IoT-Plug en Play-apparaattoepassing die wordt uitgevoerd in Windows naar IoT Hub (C#), hebt u de opslagplaats al gekloond.

Kloon de voorbeelden uit de Azure IoT SDK voor C# GitHub-opslagplaats. Open een opdrachtprompt in de map van uw keuze. Voer de volgende opdracht uit om de Microsoft Azure IoT SDK voor .NET GitHub-opslagplaats te klonen:

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

De apparaatcode bouwen

U kunt nu het voorbeeld van het apparaat bouwen en uitvoeren. Voer de volgende opdrachten uit om het voorbeeld te bouwen:

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

Het apparaatvoorbeeld uitvoeren

Voer de volgende opdracht uit om het voorbeeld uit te voeren:

dotnet run

Het apparaat is nu klaar om opdrachten en updates van eigenschappen te ontvangen, en is begonnen met het verzenden van telemetriegegevens naar de hub. Laat het voorbeeld actief tijdens het uitvoeren van de volgende stappen.

De voorbeeldoplossing uitvoeren

In Uw omgeving instellen voor de IoT-Plug en Play quickstarts en zelfstudies hebt u twee omgevingsvariabelen gemaakt om het voorbeeld te configureren om verbinding te maken met uw IoT-hub:

  • IOTHUB_CONNECTION_STRING: de verbindingsreeks voor de IoT-hub die u eerder hebt genoteerd.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

In deze zelfstudie gebruikt u een ioT-voorbeeldoplossing die is geschreven in C# om te communiceren met het voorbeeldapparaat dat u zojuist hebt ingesteld en uitgevoerd.

  1. Navigeer in een ander terminalvenster naar de map azure-iot-sdk-csharp/iothub/service/samples/solutions/PnpServiceSamples/Thermostat .

  2. Voer de volgende opdracht uit om het servicevoorbeeld te bouwen:

    dotnet build
    
  3. Voer de volgende opdracht uit om het servicevoorbeeld uit te voeren:

    dotnet run
    

Apparaatdubbel ophalen

Het volgende codefragment laat zien hoe de service-app de apparaatdubbel ophaalt:

// 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}");

Notitie

In dit voorbeeld wordt gebruikgemaakt van de naamruimte Microsoft.Azure.Devices.Client van de IoT Hub-serviceclient. Zie de handleiding voor serviceontwikkelaars voor meer informatie over de API's, waaronder de API's voor digitale dubbels.

Met deze code wordt de volgende uitvoer gegenereerd:

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

Het volgende codefragment laat zien hoe u een patch gebruikt om eigenschappen bij te werken via de apparaatdubbel:

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

Met deze code wordt de volgende uitvoer van het apparaat gegenereerd wanneer de service de eigenschap targetTemperature bijwerkt:

[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.

Een opdracht aanroepen

Het volgende codefragment laat zien hoe u een opdracht aanroept:

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}");
}

Met deze code wordt de volgende uitvoer van het apparaat gegenereerd wanneer de service de opdracht getMaxMinReport aanroept:

[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 en Play vereenvoudigt IoT en stelt u in staat om gebruik te maken van de mogelijkheden van een apparaat zonder kennis van de onderliggende implementatie van het apparaat. In deze zelfstudie leert u hoe u Java gebruikt om verbinding te maken met en een IoT-Plug en Play-apparaat te beheren dat is verbonden met uw oplossing.

Vereisten

Zorg er, voordat u doorgaat, voor dat u uw omgeving hebt ingesteld, inclusief de IoT-hub.

U kunt deze zelfstudie uitvoeren in Linux of Windows. De shell-opdrachten in deze zelfstudie volgen de Linux-conventie voor padscheidingstekens /. Als u de stappen uitvoert in Windows, moet u deze scheidingstekens vervangen door \.

Installeer de volgende software in uw lokale ontwikkelomgeving om deze zelfstudie te voltooien:

Kloon de SDK-opslagplaats met de voorbeeldcode

Als u de zelfstudie hebt voltooid: Verbinding maken een Voorbeeld-IoT-Plug en Play-apparaattoepassing die wordt uitgevoerd in Windows naar IoT Hub (Java), hebt u de opslagplaats al gekloond.

Open een opdrachtprompt in de map van uw keuze. Voer de volgende opdracht uit om de GitHub-opslagplaats Microsoft Azure IoT SDK's voor Java te klonen op deze locatie:

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

Het voorbeeldapparaat compileren en uitvoeren

Navigeer naar de hoofdmap van het thermostaatvoorbeeld in de gekloonde Java SDK-opslagplaats en bouw deze:

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

In Uw omgeving instellen hebt u vier omgevingsvariabelen gemaakt om het voorbeeld te configureren om de Device Provisioning Service (DPS) te gebruiken om verbinding te maken met uw IoT-hub:

  • IOTHUB_DEVICE_SECURITY_TYPE met de waarde DPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE met het id-bereik van DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID met de waarde my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY met de primaire sleutel voor inschrijving.
  • IOTHUB_DEVICE_DPS_ENDPOINT met de waarde global.azure-devices-provisioning.net.

Zie het Leesmij-voorbeeld voor meer informatie over de voorbeeldconfiguratie.

Voer de toepassing uit vanuit de map /device/iot-device-samples/pnp-device-sample/thermostat-device-sample :

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

Het apparaat is nu klaar om opdrachten en updates van eigenschappen te ontvangen, en is begonnen met het verzenden van telemetriegegevens naar de hub. Laat het voorbeeld actief tijdens het uitvoeren van de volgende stappen.

De voorbeeldoplossing uitvoeren

In Uw omgeving instellen voor de IoT-Plug en Play quickstarts en zelfstudies hebt u twee omgevingsvariabelen gemaakt om het voorbeeld te configureren om verbinding te maken met uw IoT-hub:

  • IOTHUB_CONNECTION_STRING: de verbindingsreeks voor de IoT-hub die u eerder hebt genoteerd.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

In deze zelfstudie gebruikt u een IoT-voorbeeldoplossing die is geschreven in Java om te communiceren met het voorbeeldapparaat dat u zojuist hebt ingesteld.

Notitie

In dit voorbeeld wordt gebruikgemaakt van de naamruimte com.microsoft.azure.sdk.iot.service van de IoT Hub-serviceclient. Zie de handleiding voor serviceontwikkelaars voor meer informatie over de API's, waaronder de API's voor digitale dubbels.

  1. Open een ander terminalvenster om als serviceterminal te gebruiken.

  2. Navigeer in de gekloonde Java SDK-opslagplaats naar de map service/iot-service-samples/pnp-service-sample/thermostat-service-sample .

  3. Voer de volgende opdrachten uit om de voorbeeldservicetoepassing te bouwen en uit te voeren:

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

Apparaatdubbel ophalen

In het volgende codefragment ziet u hoe u het dubbel apparaat kunt ophalen in de service:

 // 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());

Een apparaatdubbel bijwerken

Het volgende codefragment laat zien hoe u een patch gebruikt om eigenschappen bij te werken via de apparaatdubbel:

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

De uitvoer van het apparaat laat zien hoe het apparaat reageert wanneer deze eigenschap wordt bijgewerkt.

Een opdracht aanroepen

Het volgende codefragment laat zien hoe u een opdracht aanroept op het apparaat:

// 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());

De uitvoer van het apparaat laat zien hoe het apparaat reageert op deze opdracht.

IoT Plug en Play vereenvoudigt IoT en stelt u in staat om gebruik te maken van de mogelijkheden van een apparaat zonder kennis van de onderliggende implementatie van het apparaat. In deze zelfstudie leert u hoe u Node.js kunt gebruiken om verbinding te maken met een IoT-Plug en Play-apparaat dat is verbonden met uw oplossing.

Vereisten

Zorg er, voordat u doorgaat, voor dat u uw omgeving hebt ingesteld, inclusief de IoT-hub.

Voor deze zelfstudie hebt u Node.js nodig op uw ontwikkelcomputer. U kunt de nieuwste aanbevolen omgeving voor meerdere platforms downloaden van nodejs.org.

Gebruik de volgende opdracht om de huidige versie van Node.js op uw ontwikkelcomputer te controleren:

node --version

Kloon de SDK-opslagplaats met de voorbeeldcode

Kloon de voorbeelden vanuit een Node SDK-opslagplaats. Open een terminalvenster in een map naar keuze. Voer de volgende opdracht uit om de GitHub-opslagplaats van Microsoft Azure IoT SDK for Node.js te klonen:

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

Het voorbeeldapparaat uitvoeren

In Uw omgeving instellen hebt u vier omgevingsvariabelen gemaakt om het voorbeeld te configureren om de Device Provisioning Service (DPS) te gebruiken om verbinding te maken met uw IoT-hub:

  • IOTHUB_DEVICE_SECURITY_TYPE met de waarde DPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE met het id-bereik van DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID met de waarde my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY met de primaire sleutel voor inschrijving.
  • IOTHUB_DEVICE_DPS_ENDPOINT met de waarde global.azure-devices-provisioning.net.

Zie het Leesmij-voorbeeld voor meer informatie over de voorbeeldconfiguratie.

In deze zelfstudie gebruikt u een voorbeeldthermostaatapparaat dat in Node.js is geschreven als het IoT Plug en Play-apparaat. Het voorbeeldapparaat uitvoeren:

  1. Open een terminalvenster en navigeer naar de lokale map met de Microsoft Azure IoT SDK voor Node.js-opslagplaats die u hebt gekloond vanuit GitHub.

  2. Dit terminalvenster wordt gebruikt als uw apparaatterminal. Ga naar de map van uw gekloonde opslagplaats en navigeer naar de map /azure-iot-sdk-node/device/samples/javascript . Installeer de afhankelijkheden door de volgende opdracht uit te voeren:

    npm install
    
  3. Voer het voorbeeldapparaat (thermostaat) uit met de volgende opdracht:

    node pnp_simple_thermostat.js
    
  4. Er worden berichten weergegeven met de melding dat het apparaat een aantal gegevens heeft verzonden en zichzelf online heeft gerapporteerd. Deze berichten geven aan dat het apparaat nu klaar is om opdrachten en updates van eigenschappen te ontvangen, en dat er telemetriegegevens worden verzonden naar de hub. Sluit deze terminal niet. U hebt deze later nodig om te bevestigen dat het servicevoorbeeld werkt.

De voorbeeldoplossing uitvoeren

In Uw omgeving instellen voor de IoT-Plug en Play quickstarts en zelfstudies hebt u twee omgevingsvariabelen gemaakt om het voorbeeld te configureren om verbinding te maken met uw IoT-hub:

  • IOTHUB_CONNECTION_STRING: de verbindingsreeks voor de IoT-hub die u eerder hebt genoteerd.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

In deze zelfstudie gebruikt u een voorbeeld Node.js IoT-oplossing om te communiceren met het voorbeeldapparaat dat u zojuist hebt ingesteld en uitgevoerd.

  1. Open een ander terminalvenster om als serviceterminal te gebruiken.

  2. Navigeer in de gekloonde Node SDK-opslagplaats naar de map azure-iot-sdk-node/service/samples/javascript . Installeer de afhankelijkheden door de volgende opdracht uit te voeren:

    npm install
    

Een eigenschap lezen

  1. Wanneer u het voorbeeldapparaat (thermostaat) in de apparaatterminal hebt uitgevoerd, zag u het volgende bericht om de online status aan te geven:

    properties have been reported for component
    sending telemetry message 0...
    
  2. Ga naar de terminal service en gebruik de volgende opdracht om het voorbeeld voor het lezen van apparaatgegevens uit te voeren:

    node twin.js
    
  3. Bekijk het antwoord van de apparaatdubbel in de uitvoer van de serviceterminal. U ziet hier de model-id van het apparaat en de bijbehorende eigenschappen die zijn gerapporteerd:

    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. Het volgende fragment toont de code in twin.js, waarmee de model-id van de apparaatdubbel wordt opgehaald:

    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 dit scenario wordt Model Id: dtmi:com:example:Thermostat;1 uitgevoerd.

Notitie

Deze servicevoorbeelden gebruiken de klasse Register vanuit de IoT Hub-serviceclient. Zie de handleiding voor serviceontwikkelaars voor meer informatie over de API's, waaronder de API's voor digitale dubbels.

Een schrijfbare eigenschap bijwerken

  1. Open het bestand twin.js in de code-editor.

  2. Bekijk de voorbeeldcode. Er wordt twee manieren weergegeven waarop u de apparaatdubbel kunt bijwerken. Als u de eerste manier wilt gebruiken, wijzigt u de variabele twinPatch als volgt:

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

    De eigenschap targetTemperature wordt gedefinieerd als een beschrijfbare eigenschap in het apparaatmodel van de thermostaat.

  3. Gebruik de volgende opdracht in de terminal service om het voorbeeld voor het bijwerken van de eigenschap uit te voeren:

    node twin.js
    
  4. U kunt in de terminal apparaat zien dat het apparaat de update heeft ontvangen:

    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. Voer in de serviceterminal de volgende opdracht uit om te bevestigen dat de eigenschap is bijgewerkt:

    node twin.js
    
  6. In de uitvoer van de serviceterminal, in de eigenschappensectie reported, ziet u dat de bijgewerkte doeltemperatuur wordt vermeld. Het kan enige tijd duren voordat het apparaat de update heeft voltooid. Herhaal deze stap totdat het apparaat de update van de eigenschap heeft verwerkt:

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

Een opdracht aanroepen

  1. Open het bestand device_method.js en controleer de code.

  2. Ga naar de terminal service. Gebruik de volgende opdracht om het voorbeeld voor het aanroepen van de opdracht uit te voeren:

    set IOTHUB_METHOD_NAME=getMaxMinReport
    set IOTHUB_METHOD_PAYLOAD=commandpayload
    node device_method.js
    
  3. De uitvoer van de terminal service geeft de volgende bevestiging weer:

    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. U kunt in de terminal apparaat zien dat de opdracht is bevestigd:

    MaxMinReport commandpayload
    Response to method 'getMaxMinReport' sent successfully.
    

IoT Plug en Play vereenvoudigt IoT omdat u kunt communiceren met het model van een apparaat zonder kennis van de onderliggende implementatie van het apparaat. In deze zelfstudie leert u hoe u Python gebruikt om verbinding te maken met een IoT-Plug en Play-apparaat dat is verbonden met uw oplossing.

Vereisten

Zorg er, voordat u doorgaat, voor dat u uw omgeving hebt ingesteld, inclusief de IoT-hub.

Als u deze zelfstudie wilt voltooien, moet Python zijn geïnstalleerd op uw ontwikkelcomputer. Controleer de Azure IoT Python SDK op de huidige python-versievereisten. U kunt uw Python-versie controleren met de volgende opdracht:

python --version

U kunt de nieuwste aanbevolen versie voor meerdere platforms downloaden van python.org.

Installeer in uw lokale Python-omgeving het pakket azure-iot-device als volgt:

pip install azure-iot-device

Installeer het azure-iot-device-pakket door de volgende opdracht uit te voeren:

pip install azure-iot-hub

Het voorbeeldapparaat uitvoeren

In Uw omgeving instellen hebt u vier omgevingsvariabelen gemaakt om het voorbeeld te configureren om de Device Provisioning Service (DPS) te gebruiken om verbinding te maken met uw IoT-hub:

  • IOTHUB_DEVICE_SECURITY_TYPE met de waarde DPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE met het id-bereik van DPS.
  • IOTHUB_DEVICE_DPS_DEVICE_ID met de waarde my-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY met de primaire sleutel voor inschrijving.
  • IOTHUB_DEVICE_DPS_ENDPOINT met de waarde global.azure-devices-provisioning.net.

Zie het Leesmij-voorbeeld voor meer informatie over de voorbeeldconfiguratie.

In deze zelfstudie gebruikt u een voorbeeldthermostaatapparaat, geschreven in Python, als het IoT-Plug en Play-apparaat. Het voorbeeldapparaat uitvoeren:

  1. Open een terminalvenster in een map naar keuze. Voer de volgende opdracht uit om de GitHub-opslagplaats azure IoT Device Python SDK te klonen op deze locatie:

    git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
    
  2. Dit terminalvenster wordt gebruikt als uw apparaatterminal. Ga naar de map van uw gekloonde opslagplaats en navigeer naar de map azure-iot-sdk-python/samples/pnp .

  3. Voer het voorbeeldapparaat (thermostaat) uit met de volgende opdracht:

    python simple_thermostat.py
    
  4. Er worden berichten weergegeven met de melding dat het apparaat een aantal gegevens heeft verzonden en zichzelf online heeft gerapporteerd. Deze berichten geven aan dat het apparaat nu klaar is om opdrachten en updates van eigenschappen te ontvangen, en dat er telemetriegegevens worden verzonden naar de hub. Sluit deze terminal niet. U hebt deze later nodig om te bevestigen dat het servicevoorbeeld werkt.

De voorbeeldoplossing uitvoeren

In deze zelfstudie gebruikt u een IoT-voorbeeldoplossing in Python om te communiceren met het voorbeeldapparaat dat u zojuist hebt ingesteld.

  1. Open een ander terminalvenster om als serviceterminal te gebruiken. Voer de volgende opdracht uit om de GitHub-opslagplaats van de Azure IoT Hub Python SDK te klonen op deze locatie:

    git clone https://github.com/Azure/azure-iot-hub-python
    
  2. Installeer de

  3. Navigeer naar de map /azure-iot-hub-python/samples van de gekloonde Python SDK-opslagplaats.

  4. Open bestand registry_manager_pnp_sample.py en controleer de code. In dit voorbeeld ziet u hoe u de klasse IoTHubRegistryManager gebruikt om te communiceren met uw IoT Plug en Play-apparaat.

Notitie

Deze servicevoorbeelden gebruiken de klasse IoTHubRegistryManager vanuit de IoT Hub-serviceclient. Zie de handleiding voor serviceontwikkelaars voor meer informatie over de API's, waaronder de API's voor digitale dubbels.

De apparaatdubbel ophalen

In Uw omgeving instellen voor de IoT-Plug en Play quickstarts en zelfstudies hebt u twee omgevingsvariabelen gemaakt om het voorbeeld te configureren om verbinding te maken met uw IoT-hub:

  • IOTHUB_CONNECTION_STRING: de verbindingsreeks voor de IoT-hub die u eerder hebt genoteerd.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

Gebruik de volgende opdracht in de serviceterminal om dit voorbeeld uit te voeren:

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

Notitie

Als u dit voorbeeld uitvoert op Linux, gebruikt u export in plaats van set.

In de uitvoer ziet u de apparaatdubbel en wordt de model-id ervan afgedrukt:

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

In het volgende codefragment ziet u de voorbeeldcode uit registry_manager_pnp_sample.py:

    # 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("")

Een apparaatdubbel bijwerken

In dit voorbeeld ziet u hoe u de beschrijfbare eigenschap targetTemperature in het apparaat bijwerkt:

    # 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("")

U kunt controleren of de update is toegepast als in de apparaatterminal de volgende uitvoer wordt weergegeven:

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

In de serviceterminal wordt bevestigd dat de patch is gelukt:

The twin patch has been successfully applied

Een opdracht aanroepen

Het voorbeeld roept vervolgens een opdracht aan:

In de serviceterminal ziet u een bevestigingsbericht van het apparaat:

The device method has been successfully invoked

U kunt in de apparaatterminal zien dat het apparaat de opdracht ontvangt:

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"}}

Resources opschonen

Als u klaar bent met de quickstarts en zelfstudies, raadpleegt u Resources opschonen.

Volgende stappen

In deze zelfstudie hebt u geleerd hoe u een IoT-Plug en Play-apparaat verbindt met een IoT-oplossing. Voor meer informatie over IoT Plug and Play-apparaatmodellen raadpleegt u: