استخدام نماذج أجهزة التوصيل و التشغيل IoT في حل IoT

توضح هذه المقالة كيف يمكنك، في حل IoT، تحديد معرف النموذج لجهاز أجهزة التوصيل و التشغيل IoT ثم استرداد تعريف النموذج الخاص به.

هناك فئتان واسعتان من حلول IoT:

  • يعمل الحل المصمم لهذا الغرض مع مجموعة معروفة من النماذج لأجهزة IoT أجهزة التوصيل و التشغيل التي تتصل بالحل. يمكنك استخدام هذه النماذج عند تطوير الحل.

  • يعمل الحل المستند إلى النموذج مع نموذج أي جهاز أجهزة التوصيل و التشغيل IoT. يعد بناء حل يستند إلى نموذج أكثر تعقيدا، ولكن الفائدة هي أن الحل الخاص بك يعمل مع أي أجهزة تتم إضافتها في المستقبل. يسترد حل IoT المستند إلى النموذج نموذجا ويستخدمه لتحديد بيانات تتبع الاستخدام والخصائص والأوامر التي ينفذها الجهاز.

لاستخدام نموذج أجهزة التوصيل و التشغيل IoT، حل IoT:

  1. يحدد معرف النموذج للنموذج الذي تنفذه وحدة IoT أجهزة التوصيل و التشغيل الجهاز أو الوحدة النمطية أو IoT Edge المتصلة بالحل.

  2. يستخدم معرف النموذج لاسترداد تعريف النموذج للجهاز المتصل من مستودع نموذج أو مخزن مخصص.

تحديد معرف النموذج

عندما يتصل جهاز IoT أجهزة التوصيل و التشغيل ب IoT Hub، فإنه يسجل معرف النموذج للنموذج الذي ينفذه مع IoT Hub.

يقوم IoT Hub بإعلام الحل بمعرف طراز الجهاز كجزء من تدفق اتصال الجهاز.

يمكن أن يحصل الحل على معرف نموذج جهاز أجهزة التوصيل و التشغيل IoT باستخدام إحدى الطرق الثلاث التالية:

الحصول على واجهة برمجة تطبيقات توأم الجهاز

يمكن للحل استخدام واجهة برمجة تطبيقات Get Device Twin لاسترداد معرف النموذج لجهاز IoT أجهزة التوصيل و التشغيل.

تلميح

بالنسبة للوحدات النمطية ووحدات IoT Edge النمطية، استخدم ModuleClient.getTwin.

في مقتطف استجابة الجهاز المزدوج التالي، modelId يحتوي على معرف الطراز لجهاز أجهزة التوصيل و التشغيل IoT:

{
    "deviceId": "sample-device",
    "etag": "AAAAAAAAAAc=",
    "deviceEtag": "NTk0ODUyODgx",
    "status": "enabled",
    "statusUpdateTime": "0001-01-01T00:00:00Z",
    "connectionState": "Disconnected",
    "lastActivityTime": "2020-07-17T06:12:26.8402249Z",
    "cloudToDeviceMessageCount": 0,
    "authenticationType": "sas",
    "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
    },
    "modelId": "dtmi:com:example:TemperatureController;1",
    "version": 15,
    "properties": {...}
    }
}

الحصول على Digital Twin API

يمكن للحل استخدام واجهة برمجة تطبيقات Get Digital Twin لاسترداد معرف النموذج للنموذج الذي تم تنفيذه بواسطة جهاز أجهزة التوصيل و التشغيل IoT.

في مقتطف استجابة التوأم الرقمي التالي، $metadata.$model يحتوي على معرف النموذج لجهاز IoT أجهزة التوصيل و التشغيل:

{
    "$dtId": "sample-device",
    "$metadata": {
        "$model": "dtmi:com:example:TemperatureController;1",
        "serialNumber": {
            "lastUpdateTime": "2020-07-17T06:10:31.9609233Z"
        }
    }
}

إعلام حدث تغيير التوأم الرقمي

ينتج عن اتصال الجهاز إعلام حدث تغيير Digital Twin. يحتاج الحل إلى الاشتراك في إعلام الحدث هذا. لمعرفة كيفية تمكين التوجيه لأحداث التوأم الرقمي، راجع استخدام توجيه رسائل IoT Hub لإرسال رسائل من جهاز إلى سحابة إلى نقاط نهاية مختلفة.

يمكن للحل استخدام الحدث الموضح في القصاصة البرمجية التالية للتعرف على جهاز IoT أجهزة التوصيل و التشغيل الذي يتصل والحصول على معرف النموذج الخاص به:

iothub-connection-device-id:sample-device
iothub-enqueuedtime:7/22/2020 8:02:27 PM
iothub-message-source:digitalTwinChangeEvents
correlation-id:100f322dc2c5
content-type:application/json-patch+json
content-encoding:utf-8
[
  {
    "op": "replace",
    "path": "/$metadata/$model",
    "value": "dtmi:com:example:TemperatureController;1"
  }
]

استرداد تعريف نموذج

يستخدم الحل معرف النموذج المحدد أعلاه لاسترداد تعريف النموذج المقابل.

يمكن أن يحصل الحل على تعريف النموذج باستخدام أحد الخيارات التالية:

مستودع النماذج

يمكن للحلول استرداد نماذج DTDL من مستودع طراز الجهاز (DMR). DMR هو مستودع عام، تستضيفه Microsoft، يحتوي على مجموعة من نماذج DTDL المنسقة. تتوفر نماذج الأجهزة العامة المخزنة في DMR للجميع للاستهلاك والتكامل في تطبيقاتهم من نقطة https://devicemodels.azure.comالنهاية العامة .

بعد تحديد معرف النموذج لاتصال جهاز جديد، اتبع الخطوات التالية:

  1. استرداد تعريف النموذج باستخدام معرف النموذج من مستودع النموذج. لمزيد من المعلومات، راجع حل النماذج.

  2. باستخدام تعريف نموذج الجهاز المتصل، يمكنك تعداد قدرات الجهاز.

  3. باستخدام قدرات الجهاز التي تم تعدادها، يمكنك تمكين المستخدمين من التفاعل مع الجهاز.

حل النماذج

تتضمن اصطلاحات DMR أدوات أخرى لتبسيط استهلاك النماذج المستضافة. هذه الميزات اختيارية للمستودعات المخصصة أو الخاصة.

للوصول برمجيا إلى نماذج DTDL العامة في DMR، يمكنك استخدام ModelsRepositoryClient المتوفر في حزمة NuGet Azure.IoT.ModelsRepository. يتم تكوين هذا العميل بشكل افتراضي للاستعلام عن DMR العام المتوفر في devicemodels.azure.com ويمكن تكوينه إلى أي مستودع مخصص.

يقبل DTMI العميل كمدخل ويرجع قاموسا مع جميع الواجهات المطلوبة:

using Azure.IoT.ModelsRepository;

var client = new ModelsRepositoryClient();
ModelResult models = client.GetModel("dtmi:com:example:TemperatureController;1");
models.Content.Keys.ToList().ForEach(k => Console.WriteLine(k));

يعرض DTMI الإخراج المتوقع الواجهات الثلاث الموجودة في سلسلة التبعية:

dtmi:com:example:TemperatureController;1
dtmi:com:example:Thermostat;1
dtmi:azure:DeviceManagement:DeviceInformation;1

ModelsRepositoryClient يمكن تكوين للاستعلام عن DMR مخصص -متوفر من خلال http(s)- ولتحدير دقة التبعية باستخدام العلامةModelDependencyResolution:

  • مُعطل. إرجاع الواجهة المحددة فقط، دون أي تبعية.
  • مُمكَّن. إرجاع كافة الواجهات في سلسلة التبعية

تلميح

قد لا تعرض المستودعات .expanded.json المخصصة الملف. عندما لا يتوفر هذا الملف، سيتراجع العميل لمعالجة كل تبعية محليا.

يوضح نموذج التعليمات البرمجية التالي كيفية تهيئة ModelsRepositoryClient باستخدام عنوان URL الأساسي للمستودع المخصص، في هذه الحالة باستخدام raw عناوين URL من واجهة برمجة تطبيقات GitHub دون استخدام expanded النموذج لأنه غير متوفر في raw نقطة النهاية. AzureEventSourceListener تمت تهيئة لفحص طلب HTTP الذي ينفذه العميل:

using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();

var client = new ModelsRepositoryClient(
    new Uri("https://raw.githubusercontent.com/Azure/iot-plugandplay-models/main"));

ModelResult model = await client.GetModelAsync(
    "dtmi:com:example:TemperatureController;1", 
    dependencyResolution: ModelDependencyResolution.Enabled);

model.Content.Keys.ToList().ForEach(k => Console.WriteLine(k));

هناك المزيد من العينات المتاحة في مستودع Azure SDK GitHub: Azure.Iot.ModelsRepository/samples.

مخزن مخصص

يمكن للحلول تخزين تعريفات النموذج هذه في نظام ملفات محلي أو في مخزن ملفات عام أو استخدام تطبيق مخصص.

بعد تحديد معرف النموذج لاتصال جهاز جديد، اتبع الخطوات التالية:

  1. استرداد تعريف النموذج باستخدام معرف النموذج من متجرك المخصص.

  2. باستخدام تعريف نموذج الجهاز المتصل، يمكنك تعداد قدرات الجهاز.

  3. باستخدام قدرات الجهاز التي تم تعدادها، يمكنك تمكين المستخدمين من التفاعل مع الجهاز.

الخطوات التالية

الآن بعد أن تعلمت كيفية دمج نماذج IoT أجهزة التوصيل و التشغيل في حل IoT، بعض الخطوات التالية المقترحة هي: