البرنامج التعليمي: التعامل مع جهاز IoT Plug and Play المتصل بحلك

يعمل IoT Plug and Play على تبسيط عملية المعالجة عبر IoT من خلال تمكينك من التفاعل مع قدرات الجهاز دون معرفة تنفيذ الجهاز الأساسي. يوضح لك هذا البرنامج التعليمي كيفية استخدام C# للاتصال بجهاز IoT أجهزة التوصيل و التشغيل المتصل بالحل الخاص بك والتحكم فيه.

المتطلبات الأساسية

قبل المتابعة، تأكد من إعداد بيئتك، بما في ذلك مركز IoT.

يمكنك إكمال هذا البرنامج التعليمي على Linux أو Windows. أوامر shell في هذا البرنامج التعليمي تتبع اصطلاح Linux لفواصل المسار ''،/إذا كنت تتابع على Windows فتأكد من تبديل هذه الفواصل بـ '\'.

  • أحدث .NET SDK للنظام الأساسي الخاص بك.
  • Git.

استنساخ مستودع 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# للتفاعل مع نموذج الجهاز الذي قمت بإعداده وتشغيله للتو.

  1. في نافذة طرفية أخرى، انتقل إلى المجلد azure-iot-sdk-csharp/iothub/service/samples/solutions/PnpServiceSamples/Thermostat .

  2. قم بتشغيل الأمر التالي لإنشاء نموذج الخدمة:

    dotnet build
    
  3. قم بتشغيل الأمر التالي لتشغيل نموذج الخدمة:

    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، راجع دليل مطور الخدمة.

  1. افتح نافذة طرفية أخرى لاستخدامها كمحطة طرفية للخدمة.

  2. في مستودع Java SDK المستنسخ، انتقل إلى مجلد service/iot-service-samples/pnp-service-sample/thermostat-service-sample .

  3. لإنشاء نموذج تطبيق الخدمة وتشغيله، قم بتشغيل الأوامر التالية:

    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 أجهزة التوصيل و التشغيل. لتشغيل نموذج الجهاز:

  1. افتح نافذة طرفية وانتقل إلى المجلد المحلي الذي يحتوي على Microsoft Azure IoT SDK لمستودع Node.js الذي نسخته من GitHub.

  2. يتم استخدام نافذة المحطة الطرفية هذه كمحطة طرفية لجهازك. انتقل إلى مجلد المستودع المستنسخ، وانتقل إلى المجلد /azure-iot-sdk-node/device/samples/javascript . ثبت كل التبعيات عن طريق تشغيل الأمر التالي:

    npm install
    
  3. قم بتشغيل نموذج جهاز ترموستات باستخدام الأمر التالي:

    node pnp_simple_thermostat.js
    
  4. ترى رسائل تفيد بأن الجهاز قد أرسل بعض المعلومات وأبلغ عن نفسه عبر الإنترنت. تشير هذه الرسائل إلى أن الجهاز قد بدأ بإرسال بيانات التتبع عن بُعد إلى الموزع، وهو الآن جاهز لتلقي الأوامر وتحديثات الخصائص. لا تغلق هذه المحطة، فأنت بحاجة إليها لتأكيد عمل نموذج الخدمة.

قم بتشغيل حل العينة

في إعداد البيئة الخاصة بك ل IoT أجهزة التوصيل و التشغيل التشغيل السريع والبرامج التعليمية قمت بإنشاء متغيرين للبيئة لتكوين العينة للاتصال بمركز IoT الخاص بك:

  • IOTHUB_CONNECTION_STRING: سلسلة اتصال محور IoT التي قمت بتدوينها مسبقًا.
  • IOTHUB_DEVICE_ID: "my-pnp-device".

في هذا البرنامج التعليمي، يمكنك استخدام نموذج Node.js حل IoT للتفاعل مع نموذج الجهاز الذي قمت بإعداده وتشغيله للتو.

  1. افتح نافذة طرفية أخرى لاستخدامها كمحطة طرفية للخدمة.

  2. في مستودع Node SDK المستنسخ، انتقل إلى مجلد azure-iot-sdk-node/service/samples/javascript . ثبت كل التبعيات عن طريق تشغيل الأمر التالي:

    npm install
    

قراء خاصية

  1. عند تشغيل نموذج جهاز ترموستات في المحطة الطرفية device، رأيت الرسائل التالية التي تشير إلى حالة الاتصال بالجهاز:

    properties have been reported for component
    sending telemetry message 0...
    
  2. انتقل إلى المحطة الطرفية service واستخدم الأمر التالي لتشغيل النموذج لقراءة معلومات الجهاز:

    node twin.js
    
  3. في الإخراج الطرفي 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": {}
    }
    
  4. يُظهر الجزء التالي التعليمة البرمجية في 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، راجع دليل مطور الخدمة.

تحديث خاصية قابلة للكتابة

  1. افتح الملف twin.js في محرر التعليمة البرمجية.

  2. راجع نموذج التعليمة البرمجية، فهو يوضح لك طريقتين لتحديث الجهاز التوأم. لاستخدام الطريقة الأولى، قم بتعديل المتغير twinPatch كما يلي:

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

    يتم تعريف الخاصية targetTemperature كخاصية قابلة للكتابة في طراز جهاز الترموستات.

  3. في المحطة الطرفية service، استخدم الأمر التالي لتشغيل العينة لتحديث الخاصية:

    node twin.js
    
  4. في محطة 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
    
  5. في المحطة الطرفية service، قم بتشغيل الأمر التالي لتأكيد تحديث الخاصية:

    node twin.js
    
  6. في الإخراج الطرفي service، في قسم الخصائص reported، سترى درجة حرارة الهدف المحدثة التي تم الإبلاغ عنها. قد يستغرق الجهاز بعض الوقت لإنهاء التحديث. كرر هذه الخطوة حتى ينتهي الجهاز من معالجة تحديث الخاصية:

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

استدعاء أمر

  1. افتح الملف device_method.js وراجع التعليمة البرمجية.

  2. انتقل إلى المحطة الطرفية service. استخدم الأمر التالي لتشغيل العينة لاستدعاء الأمر:

    set IOTHUB_METHOD_NAME=getMaxMinReport
    set IOTHUB_METHOD_PAYLOAD=commandpayload
    node device_method.js
    
  3. يُظهر الإخراج في محطة 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"
      }
    }
    
  4. في المحطة الطرفية 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 أجهزة التوصيل و التشغيل. لتشغيل نموذج الجهاز:

  1. افتح نافذة طرفية في مجلد من اختيارك. قم بتشغيل الأمر التالي لاستنساخ مستودع Azure IoT Device Python SDK GitHub في هذا الموقع:

    git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
    
  2. يتم استخدام نافذة المحطة الطرفية هذه كمحطة طرفية لجهازك. انتقل إلى مجلد المستودع المستنسخ، وانتقل إلى مجلد azure-iot-sdk-python/samples/pnp .

  3. قم بتشغيل نموذج جهاز ترموستات باستخدام الأمر التالي:

    python simple_thermostat.py
    
  4. ترى رسائل تفيد بأن الجهاز قد أرسل بعض المعلومات وأبلغ عن نفسه عبر الإنترنت. تشير هذه الرسائل إلى أن الجهاز قد بدأ بإرسال بيانات التتبع عن بُعد إلى الموزع، وهو الآن جاهز لتلقي الأوامر وتحديثات الخصائص. لا تغلق هذه المحطة، فأنت بحاجة إليها لتأكيد عمل نموذج الخدمة.

قم بتشغيل حل العينة

في هذا البرنامج التعليمي، يمكنك استخدام نموذج حل IoT في Python للتفاعل مع نموذج الجهاز الذي قمت بإعداده للتو.

  1. افتح نافذة طرفية أخرى لاستخدامها كمحطة طرفية للخدمة. قم بتشغيل الأمر التالي لاستنساخ مستودع Azure IoT Hub Python SDK GitHub في هذا الموقع:

    git clone https://github.com/Azure/azure-iot-hub-python
    
  2. تثبيت

  3. انتقل إلى مجلد /azure-iot-hub-python/samples لمستودع Python SDK المستنسخ.

  4. افتح الملف 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، راجع: