البرنامج التعليمي: التعامل مع جهاز IoT Plug and Play المتصل بحلك
يعمل IoT Plug and Play على تبسيط عملية المعالجة عبر IoT من خلال تمكينك من التفاعل مع قدرات الجهاز دون معرفة تنفيذ الجهاز الأساسي. يوضح لك هذا البرنامج التعليمي كيفية استخدام C# للاتصال بجهاز IoT أجهزة التوصيل و التشغيل المتصل بالحل الخاص بك والتحكم فيه.
المتطلبات الأساسية
قبل المتابعة، تأكد من إعداد بيئتك، بما في ذلك مركز IoT.
يمكنك إكمال هذا البرنامج التعليمي على Linux أو Windows. أوامر shell في هذا البرنامج التعليمي تتبع اصطلاح Linux لفواصل المسار ''،/
إذا كنت تتابع على Windows فتأكد من تبديل هذه الفواصل بـ '\
'.
استنساخ مستودع SDK باستخدام نموذج التعليمات البرمجية
إذا أكملت البرنامج التعليمي: قم بتوصيل نموذج من تطبيق جهاز IoT Plug and Play الذي يعمل على Windows إلى IoT Hub (C #)، فقد قمت بالفعل باستنساخ المستودع.
استنساخ العينات من مستودع Azure IoT SDK ل C# GitHub. افتح موجه أوامر في مجلد من اختيارك. قم بتشغيل الأمر التالي لنسخ Microsoft Azure IoT SDK لمستودع .NET GitHub:
git clone https://github.com/Azure/azure-iot-sdk-csharp.git
إنشاء رمز الجهاز
يمكنك الآن إنشاء نموذج الجهاز وتشغيله. قم بتشغيل الأوامر التالية لإنشاء العينة:
cd azure-iot-sdk-csharp/iothub/device/samples/solutions/PnpDeviceSamples/Thermostat
dotnet build
تشغيل نموذج الجهاز
لتشغيل النموذج، قم بتشغيل الأمر التالي:
dotnet run
الجهاز جاهز الآن لتلقي الأوامر وتحديثات الخصائص، وقد بدأ بإرسال بيانات القياس عن بعد إلى المركز. الاحتفاظ بالعينة قيد التشغيل أثناء إكمال الخطوات التالية.
قم بتشغيل حل العينة
في إعداد البيئة الخاصة بك ل IoT أجهزة التوصيل و التشغيل التشغيل السريع والبرامج التعليمية قمت بإنشاء متغيرين للبيئة لتكوين العينة للاتصال بمركز IoT الخاص بك:
- IOTHUB_CONNECTION_STRING: سلسلة اتصال محور IoT التي قمت بتدوينها مسبقًا.
- IOTHUB_DEVICE_ID:
"my-pnp-device"
.
في هذا البرنامج التعليمي، يمكنك استخدام نموذج حل IoT مكتوب بلغة C# للتفاعل مع نموذج الجهاز الذي قمت بإعداده وتشغيله للتو.
في نافذة طرفية أخرى، انتقل إلى المجلد azure-iot-sdk-csharp/iothub/service/samples/solutions/PnpServiceSamples/Thermostat .
قم بتشغيل الأمر التالي لإنشاء نموذج الخدمة:
dotnet build
قم بتشغيل الأمر التالي لتشغيل نموذج الخدمة:
dotnet run
الحصول على جهاز التوأم
يوضح جزء التعليمة البرمجية التالي كيف يسترد تطبيق الخدمة توأم الجهاز:
// 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}");
إشعار
يستخدم هذا النموذج Microsoft.Azure.Devices.Client مساحة الاسم من خدمة IoT Hub عميل. لمعرفة المزيد حول واجهات برمجة التطبيقات، بما في ذلك التوائم الرقمية API، راجع دليل مطور الخدمة.
يولد هذا الرمز الناتج التالي:
[09/21/2020 11:26:04]dbug: Thermostat.Program[0]
Model Id of this Twin is: dtmi:com:example:Thermostat;1
يوضح جزء التعليمة البرمجية التالي كيفية استخدام تصحيح لتحديث الخصائص من خلال الجهاز المزدوج:
// Update the twin
var twinPatch = new Twin();
twinPatch.Properties.Desired[PropertyName] = PropertyValue;
await s_registryManager.UpdateTwinAsync(s_deviceId, twinPatch, twin.ETag);
يقوم هذا الرمز بإنشاء الإخراج التالي من الجهاز عندما تقوم الخدمة بتحديث 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.
استدعاء أمر
يوضح جزء التعليمة البرمجية التالي كيفية استدعاء الأمر:
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}");
}
يُنشئ هذا الرمز الإخراج التالي من الجهاز عندما تستدعي الخدمة getMaxMinReport
.الأمر :
[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 and Play على تبسيط عملية المعالجة عبر IoT من خلال تمكينك من التفاعل مع قدرات الجهاز دون معرفة تنفيذ الجهاز الأساسي. يوضح لك هذا البرنامج التعليمي كيفية استخدام Java للاتصال بجهاز IoT أجهزة التوصيل و التشغيل المتصل بالحل الخاص بك والتحكم فيه.
المتطلبات الأساسية
قبل المتابعة، تأكد من إعداد بيئتك، بما في ذلك مركز IoT.
يمكنك إكمال هذا البرنامج التعليمي على Linux أو Windows. أوامر shell في هذا البرنامج التعليمي تتبع اصطلاح Linux لفواصل المسار ''،/
إذا كنت تتابع على Windows فتأكد من تبديل هذه الفواصل بـ '\
'.
لإكمال هذا البرنامج التعليمي، قم بتثبيت البرنامج التالي في بيئة التطوير المحلية الخاصة بك:
استنساخ مستودع SDK باستخدام نموذج التعليمات البرمجية
إذا أكملت البرنامج التعليمي: قم بتوصيل نموذج تطبيق جهاز IoT أجهزة التوصيل و التشغيل يعمل على Windows ب IoT Hub (Java)، فقد قمت بالفعل باستنساخ المستودع.
افتح موجه الأوامر في الدليل الذي تختاره. نفذ الأمر التالي لنسخ Microsoft Azure IoT SDKs لمستودع Java GitHub في هذا الموقع:
git clone https://github.com/Azure/azure-iot-sdk-java.git
إنشاء نموذج الجهاز وتشغيله
انتقل إلى المجلد الجذر لعينة منظم الحرارة في مستودع Java SDK المستنسخ وقم ببنائه:
cd azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/thermostat-device-sample
mvn clean package
في إعداد بيئتك، قمت بإنشاء أربعة متغيرات بيئة لتكوين العينة لاستخدام خدمة توفير الأجهزة (DPS) للاتصال بمركز إنترنت الأشياء الخاص بك:
- IOTHUB_DEVICE_SECURITY_TYPEمع القيمة
DPS
. - IOTHUB_DEVICE_DPS_ID_SCOPE مع نطاق معرف DPS.
- IOTHUB_DEVICE_DPS_DEVICE_IDمع القيمة
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEYمع مفتاح التسجيل الأساسي.
- IOTHUB_DEVICE_DPS_ENDPOINTمع القيمة
global.azure-devices-provisioning.net
لمعرفة المزيد حول تكوين العينة، راجع نموذج readme.
من المجلد /device/iot-device-samples/pnp-device-sample/thermostat-device-sample، قم بتشغيل التطبيق:
mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.Thermostat"
الجهاز جاهز الآن لتلقي الأوامر وتحديثات الخصائص، وقد بدأ بإرسال بيانات القياس عن بعد إلى المركز. الاحتفاظ بالعينة قيد التشغيل أثناء إكمال الخطوات التالية.
قم بتشغيل حل العينة
في إعداد البيئة الخاصة بك ل IoT أجهزة التوصيل و التشغيل التشغيل السريع والبرامج التعليمية قمت بإنشاء متغيرين للبيئة لتكوين العينة للاتصال بمركز IoT الخاص بك:
- IOTHUB_CONNECTION_STRING: سلسلة اتصال محور IoT التي قمت بتدوينها مسبقًا.
- IOTHUB_DEVICE_ID:
"my-pnp-device"
.
في هذا البرنامج التعليمي، يمكنك استخدام نموذج حل IoT مكتوب بلغة Java للتفاعل مع نموذج الجهاز الذي قمت بإعداده للتو.
إشعار
يستخدم هذا النموذج مساحة الاسم com.microsoft.azure.sdk.iot.service من عميل خدمة IoT Hub. لمعرفة المزيد حول واجهات برمجة التطبيقات، بما في ذلك التوائم الرقمية API، راجع دليل مطور الخدمة.
افتح نافذة طرفية أخرى لاستخدامها كمحطة طرفية للخدمة.
في مستودع Java SDK المستنسخ، انتقل إلى مجلد service/iot-service-samples/pnp-service-sample/thermostat-service-sample .
لإنشاء نموذج تطبيق الخدمة وتشغيله، قم بتشغيل الأوامر التالية:
mvn clean package mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.service.Thermostat"
الحصول على جهاز التوأم
يوضح مقتطف التعليمات البرمجية التالي كيفية استرداد توأم الجهاز في الخدمة:
// 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());
تحديث توأم الجهاز
يوضح لك مقتطف التعليمات البرمجية التالي كيفية استخدام تصحيح لتحديث الخصائص من خلال الجهاز المزدوج:
String propertyName = "targetTemperature";
double propertyValue = 60.2;
twin.setDesiredProperties(Collections.singleton(new Pair(propertyName, propertyValue)));
twinClient.updateTwin(twin);
يوضح إخراج الجهاز كيفية استجابة الجهاز لتحديث الخاصية هذا.
استدعاء أمر
يوضح مقتطف التعليمات البرمجية التالي استدعاء أمر على الجهاز:
// 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());
يوضح إخراج الجهاز كيفية استجابة الجهاز لهذا الأمر.
يعمل IoT Plug and Play على تبسيط عملية المعالجة عبر IoT من خلال تمكينك من التفاعل مع قدرات الجهاز دون معرفة تنفيذ الجهاز الأساسي. يوضح لك هذا البرنامج التعليمي كيفية استخدام Node.js للاتصال بجهاز IoT أجهزة التوصيل و التشغيل المتصل بالحل الخاص بك والتحكم فيه.
المتطلبات الأساسية
قبل المتابعة، تأكد من إعداد بيئتك، بما في ذلك مركز IoT.
لإكمال هذا البرنامج التعليمي، ستحتاج إلى وجود Node.js لجهاز التطوير الخاص بك. يمكنك تنزيل أحدث إصدار موصى به لمنصات متعددة من nodejs.org.
يمكن التحقق من الإصدار الحالي من Node.js على جهاز التطوير باستخدام الأمر التالي:
node --version
استنساخ مستودع SDK باستخدام نموذج التعليمات البرمجية
نسخ العينات من مستودع Node SDK. افتح نافذة طرفية في مجلد من اختيارك. قم بتشغيل الأمر التالي لنسخ مستودع GitHub Microsoft Azure IoT SDK لـ Node.js:
git clone https://github.com/Azure/azure-iot-sdk-node
تشغيل نموذج الجهاز
في إعداد بيئتك، قمت بإنشاء أربعة متغيرات بيئة لتكوين العينة لاستخدام خدمة توفير الأجهزة (DPS) للاتصال بمركز إنترنت الأشياء الخاص بك:
- IOTHUB_DEVICE_SECURITY_TYPEمع القيمة
DPS
. - IOTHUB_DEVICE_DPS_ID_SCOPE مع نطاق معرف DPS.
- IOTHUB_DEVICE_DPS_DEVICE_IDمع القيمة
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEYمع مفتاح التسجيل الأساسي.
- IOTHUB_DEVICE_DPS_ENDPOINTمع القيمة
global.azure-devices-provisioning.net
لمعرفة المزيد حول تكوين العينة، راجع نموذج readme.
في هذا البرنامج التعليمي، يمكنك استخدام نموذج جهاز منظم الحرارة المكتوب في Node.js كجهاز IoT أجهزة التوصيل و التشغيل. لتشغيل نموذج الجهاز:
افتح نافذة طرفية وانتقل إلى المجلد المحلي الذي يحتوي على Microsoft Azure IoT SDK لمستودع Node.js الذي نسخته من GitHub.
يتم استخدام نافذة المحطة الطرفية هذه كمحطة طرفية لجهازك. انتقل إلى مجلد المستودع المستنسخ، وانتقل إلى المجلد /azure-iot-sdk-node/device/samples/javascript . ثبت كل التبعيات عن طريق تشغيل الأمر التالي:
npm install
قم بتشغيل نموذج جهاز ترموستات باستخدام الأمر التالي:
node pnp_simple_thermostat.js
ترى رسائل تفيد بأن الجهاز قد أرسل بعض المعلومات وأبلغ عن نفسه عبر الإنترنت. تشير هذه الرسائل إلى أن الجهاز قد بدأ بإرسال بيانات التتبع عن بُعد إلى الموزع، وهو الآن جاهز لتلقي الأوامر وتحديثات الخصائص. لا تغلق هذه المحطة، فأنت بحاجة إليها لتأكيد عمل نموذج الخدمة.
قم بتشغيل حل العينة
في إعداد البيئة الخاصة بك ل IoT أجهزة التوصيل و التشغيل التشغيل السريع والبرامج التعليمية قمت بإنشاء متغيرين للبيئة لتكوين العينة للاتصال بمركز IoT الخاص بك:
- IOTHUB_CONNECTION_STRING: سلسلة اتصال محور IoT التي قمت بتدوينها مسبقًا.
- IOTHUB_DEVICE_ID:
"my-pnp-device"
.
في هذا البرنامج التعليمي، يمكنك استخدام نموذج Node.js حل IoT للتفاعل مع نموذج الجهاز الذي قمت بإعداده وتشغيله للتو.
افتح نافذة طرفية أخرى لاستخدامها كمحطة طرفية للخدمة.
في مستودع Node SDK المستنسخ، انتقل إلى مجلد azure-iot-sdk-node/service/samples/javascript . ثبت كل التبعيات عن طريق تشغيل الأمر التالي:
npm install
قراء خاصية
عند تشغيل نموذج جهاز ترموستات في المحطة الطرفية device، رأيت الرسائل التالية التي تشير إلى حالة الاتصال بالجهاز:
properties have been reported for component sending telemetry message 0...
انتقل إلى المحطة الطرفية service واستخدم الأمر التالي لتشغيل النموذج لقراءة معلومات الجهاز:
node twin.js
في الإخراج الطرفي service، لاحظ استجابة الجهاز المزدوج. ترى معرّف طراز الجهاز والخصائص المرتبطة التي تم الإبلاغ عنها:
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": {} }
يُظهر الجزء التالي التعليمة البرمجية في twin.js التي تسترد معرف طراز الجهاز المزدوج:
var registry = Registry.fromConnectionString(connectionString); registry.getTwin(deviceId, function(err, twin) { if (err) { console.error(err.message); } else { console.log('Model Id: ' + twin.modelId); //... } //... }
في هذا السيناريو، يتم إخراج Model Id: dtmi:com:example:Thermostat;1
.
إشعار
تستخدم نماذج الخدمة هذه فئة Registry من عميل خدمة IoT Hub. لمعرفة المزيد حول واجهات برمجة التطبيقات، بما في ذلك التوائم الرقمية API، راجع دليل مطور الخدمة.
تحديث خاصية قابلة للكتابة
افتح الملف twin.js في محرر التعليمة البرمجية.
راجع نموذج التعليمة البرمجية، فهو يوضح لك طريقتين لتحديث الجهاز التوأم. لاستخدام الطريقة الأولى، قم بتعديل المتغير
twinPatch
كما يلي:var twinPatch = { tags: { city: "Redmond" }, properties: { desired: { targetTemperature: 42 } } };
يتم تعريف الخاصية
targetTemperature
كخاصية قابلة للكتابة في طراز جهاز الترموستات.في المحطة الطرفية service، استخدم الأمر التالي لتشغيل العينة لتحديث الخاصية:
node twin.js
في محطة device، ترى أن الجهاز قد تلقى التحديث:
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
في المحطة الطرفية service، قم بتشغيل الأمر التالي لتأكيد تحديث الخاصية:
node twin.js
في الإخراج الطرفي service، في قسم الخصائص
reported
، سترى درجة حرارة الهدف المحدثة التي تم الإبلاغ عنها. قد يستغرق الجهاز بعض الوقت لإنهاء التحديث. كرر هذه الخطوة حتى ينتهي الجهاز من معالجة تحديث الخاصية:"reported": { //... "targetTemperature": { "value": 42, "ac": 200, "ad": "Successfully executed patch for targetTemperature", "av": 4 }, //... }
استدعاء أمر
افتح الملف device_method.js وراجع التعليمة البرمجية.
انتقل إلى المحطة الطرفية service. استخدم الأمر التالي لتشغيل العينة لاستدعاء الأمر:
set IOTHUB_METHOD_NAME=getMaxMinReport set IOTHUB_METHOD_PAYLOAD=commandpayload node device_method.js
يُظهر الإخراج في محطة service التأكيد التالي:
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" } }
في المحطة الطرفية device، ترى أن الأمر معترف به:
MaxMinReport commandpayload Response to method 'getMaxMinReport' sent successfully.
تعمل IoT Plug and Play على تبسيط IoT من خلال تمكينك من التفاعل مع طراز الجهاز دون معرفة تنفيذ الجهاز الأساسي. يوضح لك هذا البرنامج التعليمي كيفية استخدام Python للاتصال بجهاز IoT أجهزة التوصيل و التشغيل المتصل بالحل الخاص بك والتحكم فيه.
المتطلبات الأساسية
قبل المتابعة، تأكد من إعداد بيئتك، بما في ذلك مركز IoT.
لإكمال هذا البرنامج التعليمي، تحتاج إلى تثبيت Python على جهاز التطوير الخاص بك. تحقق من Azure IoT Python SDK لمعرفة متطلبات إصدار Python الحالية. يمكنك التحقق من إصدار Python الخاص بك باستخدام الأمر التالي:
python --version
يمكنك تنزيل أحدث إصدار موصى به لمنصات متعددة من python.org.
في بيئة Python المحلية، قم بتثبيت حزمة azure-iot-device كما يلي:
pip install azure-iot-device
قم بتثبيت حزمة azure-iot-hub من خلال تشغيل الأمر التالي:
pip install azure-iot-hub
تشغيل نموذج الجهاز
في إعداد بيئتك، قمت بإنشاء أربعة متغيرات بيئة لتكوين العينة لاستخدام خدمة توفير الأجهزة (DPS) للاتصال بمركز إنترنت الأشياء الخاص بك:
- IOTHUB_DEVICE_SECURITY_TYPEمع القيمة
DPS
. - IOTHUB_DEVICE_DPS_ID_SCOPE مع نطاق معرف DPS.
- IOTHUB_DEVICE_DPS_DEVICE_IDمع القيمة
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEYمع مفتاح التسجيل الأساسي.
- IOTHUB_DEVICE_DPS_ENDPOINTمع القيمة
global.azure-devices-provisioning.net
لمعرفة المزيد حول تكوين العينة، راجع نموذج readme.
في هذا البرنامج التعليمي، يمكنك استخدام نموذج جهاز منظم الحرارة، مكتوب بلغة Python، كجهاز IoT أجهزة التوصيل و التشغيل. لتشغيل نموذج الجهاز:
افتح نافذة طرفية في مجلد من اختيارك. قم بتشغيل الأمر التالي لاستنساخ مستودع Azure IoT Device Python SDK GitHub في هذا الموقع:
git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
يتم استخدام نافذة المحطة الطرفية هذه كمحطة طرفية لجهازك. انتقل إلى مجلد المستودع المستنسخ، وانتقل إلى مجلد azure-iot-sdk-python/samples/pnp .
قم بتشغيل نموذج جهاز ترموستات باستخدام الأمر التالي:
python simple_thermostat.py
ترى رسائل تفيد بأن الجهاز قد أرسل بعض المعلومات وأبلغ عن نفسه عبر الإنترنت. تشير هذه الرسائل إلى أن الجهاز قد بدأ بإرسال بيانات التتبع عن بُعد إلى الموزع، وهو الآن جاهز لتلقي الأوامر وتحديثات الخصائص. لا تغلق هذه المحطة، فأنت بحاجة إليها لتأكيد عمل نموذج الخدمة.
قم بتشغيل حل العينة
في هذا البرنامج التعليمي، يمكنك استخدام نموذج حل IoT في Python للتفاعل مع نموذج الجهاز الذي قمت بإعداده للتو.
افتح نافذة طرفية أخرى لاستخدامها كمحطة طرفية للخدمة. قم بتشغيل الأمر التالي لاستنساخ مستودع Azure IoT Hub Python SDK GitHub في هذا الموقع:
git clone https://github.com/Azure/azure-iot-hub-python
تثبيت
انتقل إلى مجلد /azure-iot-hub-python/samples لمستودع Python SDK المستنسخ.
افتح الملف registry_manager_pnp_sample.py ثم راجع التعليمات البرمجية. يوضح هذا النموذج كيفية استخدام الفئة IoTHubRegistryManager للتفاعل مع جهاز IoT التوصيل والتشغيل.
إشعار
تستخدم عينات الخدمة هذه الفئة IoTHubRegistryManager من عميل خدمة مركز IoT. لمعرفة المزيد حول واجهات برمجة التطبيقات، بما في ذلك التوائم الرقمية API، راجع دليل مطور الخدمة.
الحصول على الجهاز التوأم
في إعداد البيئة الخاصة بك ل IoT أجهزة التوصيل و التشغيل التشغيل السريع والبرامج التعليمية قمت بإنشاء متغيرين للبيئة لتكوين العينة للاتصال بمركز IoT الخاص بك:
- IOTHUB_CONNECTION_STRING: سلسلة اتصال محور IoT التي قمت بتدوينها مسبقًا.
- IOTHUB_DEVICE_ID:
"my-pnp-device"
.
استخدم الأمر التالي في محطة الخدمة لتشغيل هذا النموذج:
set IOTHUB_METHOD_NAME="getMaxMinReport"
set IOTHUB_METHOD_PAYLOAD="hello world"
python registry_manager_pnp_sample.py
إشعار
إذا كنت تقوم بتشغيل هذه العينة على Linux، استخدم export
بدلاً من set
.
يظهر الإخراج الجهاز التوأم ويطبع معرف الطراز الخاص به:
The Model ID for this device is:
dtmi:com:example:Thermostat;1
يظهر المقتطف التالي نموذج التعليمات البرمجية من 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("")
تحديث توأم الجهاز
يوضح هذا النموذج كيفية تحديث targetTemperature
الخاصية القابلة للكتابة في الجهاز:
# 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("")
يمكنك التحقق من تطبيق التحديث في محطة الجهاز التي تعرض الإخراج التالي:
the data in the desired properties patch was: {'targetTemperature': 42, '$version': 2}
تؤكد محطة الخدمة أن التصحيح كان ناجحًا:
The twin patch has been successfully applied
استدعاء أمر
يستدعي النموذج بعد ذلك أمرًا:
يعرض جهاز طرفي الخدمة رسالة تأكيد من الجهاز:
The device method has been successfully invoked
في محطة الجهاز، ترى الجهاز يتلقى الأمر:
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"}}
تنظيف الموارد
في حالة انتهائك من الاطلاع على خطوات البداية السريعة والبرامج التعليمية، فراجع تنظيف الموارد.
الخطوات التالية
تمكنت في هذه البداية السريعة من معرفة طريقة توصيل جهاز IoT Plug and Play إلى حل IoT. لمعرفة المزيد حول طرازات أجهزة IoT Plug and Play، راجع: