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.
Fontos
Ez a cikk a szolgáltatáshoz való csatlakozás lépéseit tartalmazza közös hozzáférésű jogosultságkód használatával. Ez a hitelesítési módszer a teszteléshez és a kiértékeléshez kényelmes, de biztonságosabb módszer a Microsoft Entra-azonosítóval vagy felügyelt identitásokkal történő hitelesítés egy szolgáltatáshoz. További információkért tekintse meg a felhőbiztonság ajánlott biztonsági eljárásait>.
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: Csatlakoztassa a Windowson futó minta IoT Plug and Play eszközalkalmazást az IoT Hubhoz (C#), 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.
Egy másik terminálablakban keresse meg az azure-iot-sdk-csharp/iothub/service/samples/solutions/PnpServiceSamples/Thermostat mappát.
Futtassa a következő parancsot a szolgáltatásminta létrehozásához:
dotnet build
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: Csatlakoztassa a Windowson futó minta IoT Plug and Play eszközalkalmazást az IoT Hubhoz (Java), 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_SECURITY_TYPE az értékkel
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE a DPS-azonosító hatókörével.
-
IOTHUB_DEVICE_DPS_DEVICE_ID az értékkel
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY a regisztrációs elsődleges kulccsal.
-
IOTHUB_DEVICE_DPS_ENDPOINT az értékkel
global.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.
Nyisson meg egy másik terminálablakot a szolgáltatás termináljaként való használathoz.
A klónozott Java SDK-adattárban keresse meg a service/iot-service-samples/pnp-service-sample/thermostat-service-sample mappát.
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_SECURITY_TYPE az értékkel
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE a DPS-azonosító hatókörével.
-
IOTHUB_DEVICE_DPS_DEVICE_ID az értékkel
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY a regisztrációs elsődleges kulccsal.
-
IOTHUB_DEVICE_DPS_ENDPOINT az értékkel
global.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:
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.
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
Futtassa a termosztát mintaeszközt a következő paranccsal:
node pnp_simple_thermostat.js
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.
Nyisson meg egy másik terminálablakot a szolgáltatás termináljaként való használathoz.
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
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...
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
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": {} }
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;1
ki.
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
Nyissa meg a fájl twin.js egy kódszerkesztőben.
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.A szolgáltatásterminálban a következő paranccsal futtassa a mintát a tulajdonság frissítéséhez:
node twin.js
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
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
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
Nyissa meg a fájlt device_method.js , és tekintse át a kódot.
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
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" } }
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_SECURITY_TYPE az értékkel
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE a DPS-azonosító hatókörével.
-
IOTHUB_DEVICE_DPS_DEVICE_ID az értékkel
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY a regisztrációs elsődleges kulccsal.
-
IOTHUB_DEVICE_DPS_ENDPOINT az értékkel
global.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:
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
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.
Futtassa a termosztát mintaeszközt a következő paranccsal:
python simple_thermostat.py
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.
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
Telepítse a
Nyissa meg a klónozott Python SDK-adattár /azure-iot-hub-python/samples mappáját.
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: