Oktatóanyag: A megoldáshoz csatlakoztatott IoT Plug and Play-eszköz használata

Az IoT Plug and Play leegyszerűsíti az IoT-t azáltal, hogy lehetővé teszi, hogy az eszköz képességeivel a mögöttes eszköz implementációjának ismerete nélkül kommunikáljon. Ez az oktatóanyag bemutatja, hogyan csatlakozhat és vezérelhet A C# használatával egy, a megoldáshoz csatlakoztatott IoT Plug and Play-eszközt.

Előfeltételek

A folytatás előtt győződjön meg arról, hogy beállította a környezetét, beleértve az IoT Hubot is.

Ezt az oktatóanyagot Linuxon vagy Windowson is futtathatja. Az oktatóanyagban szereplő rendszerhéjparancsok a ""/ elérési útelválasztók Linux-konvencióját követik, ha a Windowson végig követi őket, mindenképpen cserélje fel ezeket az elválasztókat a következőre: ""\.

Az SDK-adattár klónozása a mintakóddal

Ha elvégezte az oktatóanyagot: Csatlakozás egy Windowsról IoT Hubra (C#) futó IoT Plug and Play-eszközalkalmazást, már klónozta az adattárat.

Klónozza a mintákat az Azure IoT SDK for C# GitHub-adattárból. Nyisson meg egy parancssort egy tetszőleges mappában. Futtassa a következő parancsot a Microsoft Azure IoT SDK for .NET GitHub-adattár klónozásához:

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

Az eszközkód létrehozása

Most már létrehozhatja és futtathatja az eszközmintát. A minta létrehozásához futtassa a következő parancsokat:

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

Az eszközminta futtatása

A minta futtatásához futtassa a következő parancsot:

dotnet run

Az eszköz készen áll a parancsok és a tulajdonságfrissítések fogadására, és megkezdte a telemetriai adatok küldését a központba. A minta futásának fenntartása a következő lépések végrehajtása során.

A mintamegoldás futtatása

Az IoT Plug and Play gyorsútmutatók és oktatóanyagok környezetének beállításakor két környezeti változót hozott létre, hogy konfigurálja a mintát az IoT Hubhoz való csatlakozáshoz:

  • IOTHUB_CONNECTION_STRING: az IoT Hub kapcsolati sztring, amelyről korábban feljegyzést készített.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

Ebben az oktatóanyagban egy C# nyelven írt IoT-mintamegoldást használ az imént beállított és futtatott mintaeszközzel való interakcióhoz.

  1. Egy másik terminálablakban keresse meg az azure-iot-sdk-csharp/iothub/service/samples/solutions/PnpServiceSamples/Thermostat mappát.

  2. Futtassa a következő parancsot a szolgáltatásminta létrehozásához:

    dotnet build
    
  3. Futtassa a következő parancsot a szolgáltatásminta futtatásához:

    dotnet run
    

Ikereszköz lekérése

Az alábbi kódrészlet bemutatja, hogyan kéri le a szolgáltatásalkalmazás az ikereszközt:

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

Feljegyzés

Ez a minta az IoT Hub szolgáltatásügyfél Microsoft.Azure.Devices.Client névterét használja. Az API-król, köztük a digital twins API-ról a szolgáltatás fejlesztői útmutatójában talál további információt.

Ez a kód a következő kimenetet hozza létre:

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

Az alábbi kódrészlet bemutatja, hogyan frissítheti a tulajdonságokat egy javítással az ikereszközön keresztül:

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

Ez a kód a következő kimenetet hozza létre az eszközről, amikor a szolgáltatás frissíti a tulajdonságot targetTemperature :

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

Parancs meghívása

A következő kódrészlet bemutatja, hogyan hívhat meg parancsokat:

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

Ez a kód a következő kimenetet hozza létre az eszközről, amikor a szolgáltatás meghívja a getMaxMinReport parancsot:

[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

Az IoT Plug and Play leegyszerűsíti az IoT-t azáltal, hogy lehetővé teszi, hogy az eszköz képességeivel a mögöttes eszköz implementációjának ismerete nélkül kommunikáljon. Ez az oktatóanyag bemutatja, hogyan csatlakozhat és vezérelhet a Megoldáshoz csatlakoztatott IoT Plug and Play-eszközt a Java használatával.

Előfeltételek

A folytatás előtt győződjön meg arról, hogy beállította a környezetét, beleértve az IoT Hubot is.

Ezt az oktatóanyagot Linuxon vagy Windowson is futtathatja. Az oktatóanyagban szereplő rendszerhéjparancsok a ""/ elérési útelválasztók Linux-konvencióját követik, ha a Windowson végig követi őket, mindenképpen cserélje fel ezeket az elválasztókat a következőre: ""\.

Az oktatóanyag elvégzéséhez telepítse a következő szoftvert a helyi fejlesztési környezetben:

Az SDK-adattár klónozása a mintakóddal

Ha elvégezte az oktatóanyagot: Csatlakozás egy windowsos IoT Hubon (Java) futó IoT Plug and Play-eszközalkalmazást, már klónozta az adattárat.

Nyisson meg egy parancssort a választott könyvtárban. Hajtsa végre a következő parancsot a Microsoft Azure IoT SDK-k Java GitHub-adattárba való klónozásához:

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

A mintaeszköz létrehozása és futtatása

Keresse meg a termosztátminta gyökérmappáját a klónozott Java SDK-adattárban, és hozza létre:

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

A környezet beállításakor négy környezeti változót hozott létre, hogy a mintát úgy konfigurálja, hogy a Device Provisioning Service (DPS) használatával csatlakozzon az IoT Hubhoz:

  • IOTHUB_DEVICE_Standard kiadás CURITY_TYPE az értékkelDPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE a DPS-azonosító hatókörével.
  • IOTHUB_DEVICE_DPS_DEVICE_ID az értékkelmy-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY a regisztrációs elsődleges kulccsal.
  • IOTHUB_DEVICE_DPS_ENDPOINT az értékkelglobal.azure-devices-provisioning.net.

A mintakonfigurációval kapcsolatos további információkért tekintse meg a mintabeolvasást.

A /device/iot-device-samples/pnp-device-sample/thermostat-device-sample mappából futtassa az alkalmazást:

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

Az eszköz készen áll a parancsok és a tulajdonságfrissítések fogadására, és megkezdte a telemetriai adatok küldését a központba. A minta futásának fenntartása a következő lépések végrehajtása során.

A mintamegoldás futtatása

Az IoT Plug and Play gyorsútmutatók és oktatóanyagok környezetének beállításakor két környezeti változót hozott létre, hogy konfigurálja a mintát az IoT Hubhoz való csatlakozáshoz:

  • IOTHUB_CONNECTION_STRING: az IoT Hub kapcsolati sztring, amelyről korábban feljegyzést készített.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

Ebben az oktatóanyagban egy Java nyelven írt IoT-mintamegoldást használ az imént beállított mintaeszközzel való interakcióhoz.

Feljegyzés

Ez a minta a com.microsoft.azure.sdk.iot.service névteret használja az IoT Hub szolgáltatásügyfélről. Az API-król, köztük a digital twins API-ról a szolgáltatás fejlesztői útmutatójában talál további információt.

  1. Nyisson meg egy másik terminálablakot a szolgáltatás termináljaként való használathoz.

  2. A klónozott Java SDK-adattárban keresse meg a service/iot-service-samples/pnp-service-sample/thermostat-service-sample mappát.

  3. A mintaszolgáltatás-alkalmazás létrehozásához és futtatásához futtassa a következő parancsokat:

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

Ikereszköz lekérése

Az alábbi kódrészlet bemutatja, hogyan kérhető le az ikereszköz a szolgáltatásban:

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

Ikereszköz frissítése

Az alábbi kódrészlet bemutatja, hogyan frissítheti a tulajdonságokat egy javítással az ikereszközön keresztül:

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

Az eszköz kimenete azt mutatja, hogy az eszköz hogyan reagál erre a tulajdonságfrissítésre.

Parancs meghívása

Az alábbi kódrészlet egy parancs meghívását mutatja be az eszközön:

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

Az eszköz kimenete azt mutatja, hogy az eszköz hogyan reagál erre a parancsra.

Az IoT Plug and Play leegyszerűsíti az IoT-t azáltal, hogy lehetővé teszi, hogy az eszköz képességeivel a mögöttes eszköz implementációjának ismerete nélkül kommunikáljon. Ez az oktatóanyag bemutatja, hogyan használható Node.js a megoldáshoz csatlakoztatott IoT Plug and Play-eszközökhöz való csatlakozásra és vezérlésre.

Előfeltételek

A folytatás előtt győződjön meg arról, hogy beállította a környezetét, beleértve az IoT Hubot is.

Az oktatóanyag elvégzéséhez Node.js kell a fejlesztői gépen. A legújabb ajánlott verziót több platformra is letöltheti a nodejs.org.

A Node.js aktuális verzióját a következő paranccsal ellenőrizheti a fejlesztői gépen:

node --version

Az SDK-adattár klónozása a mintakóddal

Klónozza a mintákat a Node SDK-adattárból. Nyisson meg egy terminálablakot egy tetszőleges mappában. Futtassa a következő parancsot a Microsoft Azure IoT SDK klónozásához Node.js GitHub-adattárhoz:

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

A mintaeszköz futtatása

A környezet beállításakor négy környezeti változót hozott létre, hogy a mintát úgy konfigurálja, hogy a Device Provisioning Service (DPS) használatával csatlakozzon az IoT Hubhoz:

  • IOTHUB_DEVICE_Standard kiadás CURITY_TYPE az értékkelDPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE a DPS-azonosító hatókörével.
  • IOTHUB_DEVICE_DPS_DEVICE_ID az értékkelmy-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY a regisztrációs elsődleges kulccsal.
  • IOTHUB_DEVICE_DPS_ENDPOINT az értékkelglobal.azure-devices-provisioning.net.

A mintakonfigurációval kapcsolatos további információkért tekintse meg a mintabeolvasást.

Ebben az oktatóanyagban egy Node.js IoT Plug and Play-eszközként írt termosztát-mintaeszközt használ. A mintaeszköz futtatása:

  1. Nyisson meg egy terminálablakot, és keresse meg a GitHubról klónozott Microsoft Azure IoT SDK-t tartalmazó helyi mappát Node.js adattárhoz.

  2. Ezt a terminálablakot használja az eszköz termináljaként. Lépjen a klónozott adattár mappájába, és keresse meg az /azure-iot-sdk-node/device/samples/javascript mappát. Telepítse az összes függőséget az alábbi parancs futtatásával:

    npm install
    
  3. Futtassa a termosztát mintaeszközt a következő paranccsal:

    node pnp_simple_thermostat.js
    
  4. Az üzenetek azt jelzik, hogy az eszköz küldött néhány információt, és online jelentette magát. Ezek az üzenetek azt jelzik, hogy az eszköz megkezdte a telemetriai adatok küldését a központba, és készen áll a parancsok és a tulajdonságfrissítések fogadására. Ne zárja be ezt a terminált, mert meg kell győződnie arról, hogy a szolgáltatásminta működik.

A mintamegoldás futtatása

Az IoT Plug and Play gyorsútmutatók és oktatóanyagok környezetének beállításakor két környezeti változót hozott létre, hogy konfigurálja a mintát az IoT Hubhoz való csatlakozáshoz:

  • IOTHUB_CONNECTION_STRING: az IoT Hub kapcsolati sztring, amelyről korábban feljegyzést készített.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

Ebben az oktatóanyagban egy minta Node.js IoT-megoldást használ az imént beállított és futtatott mintaeszközzel való interakcióhoz.

  1. Nyisson meg egy másik terminálablakot a szolgáltatás termináljaként való használathoz.

  2. A klónozott Node SDK-adattárban keresse meg az azure-iot-sdk-node/service/samples/javascript mappát. Telepítse az összes függőséget az alábbi parancs futtatásával:

    npm install
    

Tulajdonság olvasása

  1. Amikor a mintatermosztát-eszközt az eszköz termináljában futtatta, a következő üzenet jelenik meg az eszköz online állapotáról:

    properties have been reported for component
    sending telemetry message 0...
    
  2. Nyissa meg a szolgáltatásterminált , és futtassa a mintát az eszközinformációk olvasásához a következő paranccsal:

    node twin.js
    
  3. A szolgáltatás terminálkimenetében figyelje meg az ikereszköz válaszát. Megjelenik az eszköz modellazonosítója és a kapcsolódó tulajdonságok jelentése:

    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. Az alábbi kódrészlet az ikereszköz modellazonosítóját lekérő twin.js kódját mutatja be:

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

Ebben a forgatókönyvben kimenetet ad Model Id: dtmi:com:example:Thermostat;1ki.

Feljegyzés

Ezek a szolgáltatásminták az IoT Hub szolgáltatásügyfél beállításjegyzékosztályáthasználják. Az API-król, köztük a digital twins API-ról a szolgáltatás fejlesztői útmutatójában talál további információt.

Írható tulajdonság frissítése

  1. Nyissa meg a fájl twin.js egy kódszerkesztőben.

  2. Tekintse át a mintakódot, amely az ikereszköz frissítésének két módját mutatja be. Az első módszer használatához módosítsa a változót az twinPatch alábbiak szerint:

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

    A targetTemperature tulajdonság írható tulajdonságként van definiálva a Termosztát-eszközmodellben.

  3. A szolgáltatásterminálban a következő paranccsal futtassa a mintát a tulajdonság frissítéséhez:

    node twin.js
    
  4. Az eszköz termináljában láthatja, hogy az eszköz megkapta a frissítést:

    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. A szolgáltatásterminálban futtassa a következő parancsot a tulajdonság frissítésének megerősítéséhez:

    node twin.js
    
  6. A szolgáltatás terminálkimenetében, a reported tulajdonságok szakaszban a frissített célhőmérsékletet láthatja. Eltarthat egy ideig, amíg az eszköz befejezi a frissítést. Ismételje meg ezt a lépést, amíg az eszköz fel nem dolgozza a tulajdonságfrissítést:

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

Parancs meghívása

  1. Nyissa meg a fájlt device_method.js , és tekintse át a kódot.

  2. Lépjen a szolgáltatás termináljához. A következő paranccsal futtassa a mintát a parancs meghívásához:

    set IOTHUB_METHOD_NAME=getMaxMinReport
    set IOTHUB_METHOD_PAYLOAD=commandpayload
    node device_method.js
    
  3. A szolgáltatás termináljának kimenete a következő megerősítést jeleníti meg:

    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. Az eszköz termináljában a parancs nyugtázása látható:

    MaxMinReport commandpayload
    Response to method 'getMaxMinReport' sent successfully.
    

Az IoT Plug and Play leegyszerűsíti az IoT-t azáltal, hogy lehetővé teszi, hogy az eszköz modelljével a mögöttes eszköz implementációjának ismerete nélkül működjön együtt. Ez az oktatóanyag bemutatja, hogyan csatlakozhat és vezérelhet egy, a megoldáshoz csatlakoztatott IoT Plug and Play-eszközt a Python használatával.

Előfeltételek

A folytatás előtt győződjön meg arról, hogy beállította a környezetét, beleértve az IoT Hubot is.

Az oktatóanyag elvégzéséhez telepítenie kell a Pythont a fejlesztői gépen. Tekintse meg az Azure IoT Python SDK aktuális Python-verziókövetelményeit. A Python-verziót a következő paranccsal ellenőrizheti:

python --version

A legújabb ajánlott verziót több platformra is letöltheti a python.org.

A helyi Python-környezetben telepítse az azure-iot-device csomagot az alábbiak szerint:

pip install azure-iot-device

Telepítse az azure-iot-hub csomagot a következő parancs futtatásával:

pip install azure-iot-hub

A mintaeszköz futtatása

A környezet beállításakor négy környezeti változót hozott létre, hogy a mintát úgy konfigurálja, hogy a Device Provisioning Service (DPS) használatával csatlakozzon az IoT Hubhoz:

  • IOTHUB_DEVICE_Standard kiadás CURITY_TYPE az értékkelDPS
  • IOTHUB_DEVICE_DPS_ID_SCOPE a DPS-azonosító hatókörével.
  • IOTHUB_DEVICE_DPS_DEVICE_ID az értékkelmy-pnp-device.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY a regisztrációs elsődleges kulccsal.
  • IOTHUB_DEVICE_DPS_ENDPOINT az értékkelglobal.azure-devices-provisioning.net.

A mintakonfigurációval kapcsolatos további információkért tekintse meg a mintabeolvasást.

Ebben az oktatóanyagban egy Pythonban írt termosztát-mintaeszközt használ IoT Plug and Play-eszközként. A mintaeszköz futtatása:

  1. Nyisson meg egy terminálablakot egy tetszőleges mappában. Futtassa a következő parancsot az Azure IoT Device Python SDK GitHub-adattár ezen a helyen való klónozásához:

    git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
    
  2. Ezt a terminálablakot használja az eszköz termináljaként. Lépjen a klónozott adattár mappájába, és keresse meg az azure-iot-sdk-python/samples/pnp mappát.

  3. Futtassa a termosztát mintaeszközt a következő paranccsal:

    python simple_thermostat.py
    
  4. Az üzenetek azt jelzik, hogy az eszköz küldött néhány információt, és online jelentette magát. Ezek az üzenetek azt jelzik, hogy az eszköz megkezdte a telemetriai adatok küldését a központba, és készen áll a parancsok és a tulajdonságfrissítések fogadására. Ne zárja be ezt a terminált, mert meg kell győződnie arról, hogy a szolgáltatásminta működik.

A mintamegoldás futtatása

Ebben az oktatóanyagban egy Python-minta IoT-megoldást használ az imént beállított mintaeszközzel való interakcióhoz.

  1. Nyisson meg egy másik terminálablakot a szolgáltatás termináljaként való használathoz. Futtassa a következő parancsot az Azure IoT Hub Python SDK GitHub-adattár ezen a helyen való klónozásához:

    git clone https://github.com/Azure/azure-iot-hub-python
    
  2. Telepítse a

  3. Nyissa meg a klónozott Python SDK-adattár /azure-iot-hub-python/samples mappáját.

  4. Nyissa meg a registry_manager_pnp_sample.py fájlt, és tekintse át a kódot. Ez a minta bemutatja, hogyan használhatja az IoTHubRegistryManager osztályt az IoT Plug and Play-eszközkel való interakcióhoz.

Feljegyzés

Ezek a szolgáltatásminták az IoTHubRegistryManager osztályt használják az IoT Hub szolgáltatásügyfélből. Az API-król, köztük a digital twins API-ról a szolgáltatás fejlesztői útmutatójában talál további információt.

Az ikereszköz lekérése

Az IoT Plug and Play gyorsútmutatók és oktatóanyagok környezetének beállításakor két környezeti változót hozott létre, hogy konfigurálja a mintát az IoT Hubhoz való csatlakozáshoz:

  • IOTHUB_CONNECTION_STRING: az IoT Hub kapcsolati sztring, amelyről korábban feljegyzést készített.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

A minta futtatásához használja a következő parancsot a szolgáltatás termináljában:

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

Feljegyzés

Ha linuxos rendszeren futtatja ezt a mintát, használja export a következő helyett set: .

A kimenet megjeleníti az ikereszközt, és kinyomtatja a modellazonosítóját:

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

Az alábbi kódrészlet a registry_manager_pnp_sample.py mintakódját mutatja be:

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

Ikereszköz frissítése

Ez a minta bemutatja, hogyan frissítheti a targetTemperature írható tulajdonságot az eszközön:

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

Ellenőrizheti, hogy a frissítés az eszköz termináljában van-e alkalmazva, amely a következő kimenetet jeleníti meg:

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

A szolgáltatás terminálja megerősíti, hogy a javítás sikeres volt:

The twin patch has been successfully applied

Parancs meghívása

A minta ezután meghív egy parancsot:

A szolgáltatás terminálja egy megerősítést kérő üzenetet jelenít meg az eszközről:

The device method has been successfully invoked

Az eszköz termináljában láthatja, hogy az eszköz megkapja a következő parancsot:

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

Az erőforrások eltávolítása

Ha végzett a rövid útmutatókkal és az oktatóanyagokkal, tekintse meg az erőforrások megtisztítása című témakört.

Következő lépések

Ebben az oktatóanyagban megtanulta, hogyan csatlakoztathat egy IoT Plug and Play-eszközt egy IoT-megoldáshoz. Az IoT Plug and Play eszközmodellekkel kapcsolatos további információkért lásd: