استخدام نماذج أجهزة التوصيل و التشغيل IoT في حل IoT
توضح هذه المقالة كيف يمكنك، في حل IoT، تحديد معرف النموذج لجهاز أجهزة التوصيل و التشغيل IoT ثم استرداد تعريف النموذج الخاص به.
هناك فئتان واسعتان من حلول IoT:
يعمل الحل المصمم لهذا الغرض مع مجموعة معروفة من النماذج لأجهزة IoT أجهزة التوصيل و التشغيل التي تتصل بالحل. يمكنك استخدام هذه النماذج عند تطوير الحل.
يعمل الحل المستند إلى النموذج مع نموذج أي جهاز أجهزة التوصيل و التشغيل IoT. يعد بناء حل يستند إلى نموذج أكثر تعقيدا، ولكن الفائدة هي أن الحل الخاص بك يعمل مع أي أجهزة تتم إضافتها في المستقبل. يسترد حل IoT المستند إلى النموذج نموذجا ويستخدمه لتحديد بيانات تتبع الاستخدام والخصائص والأوامر التي ينفذها الجهاز.
لاستخدام نموذج أجهزة التوصيل و التشغيل IoT، حل IoT:
يحدد معرف النموذج للنموذج الذي تنفذه وحدة IoT أجهزة التوصيل و التشغيل الجهاز أو الوحدة النمطية أو IoT Edge المتصلة بالحل.
يستخدم معرف النموذج لاسترداد تعريف النموذج للجهاز المتصل من مستودع نموذج أو مخزن مخصص.
تحديد معرف النموذج
عندما يتصل جهاز 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النهاية العامة .
بعد تحديد معرف النموذج لاتصال جهاز جديد، اتبع الخطوات التالية:
استرداد تعريف النموذج باستخدام معرف النموذج من مستودع النموذج. لمزيد من المعلومات، راجع حل النماذج.
باستخدام تعريف نموذج الجهاز المتصل، يمكنك تعداد قدرات الجهاز.
باستخدام قدرات الجهاز التي تم تعدادها، يمكنك تمكين المستخدمين من التفاعل مع الجهاز.
حل النماذج
تتضمن اصطلاحات DMR أدوات أخرى لتبسيط استهلاك النماذج المستضافة. هذه الميزات اختيارية للمستودعات المخصصة أو الخاصة.
- الفهرس. يتم عرض جميع DTMIs المتوفرة من خلال فهرس يتكون من سلسلة من ملفات json، على سبيل المثال: https://devicemodels.azure.com/index.page.2.json
- موسع. يتوفر ملف بجميع التبعيات لكل واجهة، على سبيل المثال: https://devicemodels.azure.com/dtmi/com/example/temperaturecontroller-1.expanded.json
- بيانات التعريف. يعرض هذا الملف السمات الرئيسية للمستودع ويتم تحديثه بشكل دوري بأحدث لقطة نماذج منشورة. يتضمن ميزات ينفذها المستودع مثل ما إذا كان فهرس النموذج أو ملفات النموذج الموسعة متوفرة. يمكنك الوصول إلى بيانات تعريف DMR في https://devicemodels.azure.com/metadata.json
للوصول برمجيا إلى نماذج 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 مخصص--متوفر من خلال https--وتحديد دقة التبعية باستخدام العلامة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.
مخزن مخصص
يمكن للحلول تخزين تعريفات النموذج هذه في نظام ملفات محلي أو في مخزن ملفات عام أو استخدام تطبيق مخصص.
بعد تحديد معرف النموذج لاتصال جهاز جديد، اتبع الخطوات التالية:
استرداد تعريف النموذج باستخدام معرف النموذج من متجرك المخصص.
باستخدام تعريف نموذج الجهاز المتصل، يمكنك تعداد قدرات الجهاز.
باستخدام قدرات الجهاز التي تم تعدادها، يمكنك تمكين المستخدمين من التفاعل مع الجهاز.
الخطوات التالية
الآن بعد أن تعلمت كيفية دمج نماذج IoT أجهزة التوصيل و التشغيل في حل IoT، بعض الخطوات التالية المقترحة هي: