دليل نمذجة أجهزة التوصيل و التشغيل IoT
في جوهر أجهزة التوصيل و التشغيل IoT، يوجد نموذج جهاز يصف قدرات الجهاز لتطبيق IoT الممكن أجهزة التوصيل و التشغيل. يتم تنظيم هذا النموذج على أنه مجموعة من الواجهات التي تحدد:
- الخصائص التي تمثل حالة القراءة فقط أو القابلة للكتابة لجهاز أو كيان آخر. على سبيل المثال، قد يكون الرقم التسلسلي للجهاز خاصية للقراءة فقط، وقد تكون درجة حرارة الهدف على منظم الحرارة خاصية قابلة للكتابة.
- حقول بيانات تتبع الاستخدام التي تحدد البيانات المنبعثة من الجهاز، سواء كانت البيانات عبارة عن دفق منتظم من قراءات المستشعر، أو خطأ عرضي، أو رسالة معلومات.
- الأوامر التي تصف وظيفة أو عملية يمكن إجراؤها على جهاز. على سبيل المثال، يمكن للأمر إعادة تشغيل بوابة أو التقاط صورة باستخدام كاميرا بعيدة.
لمعرفة المزيد حول كيفية استخدام أجهزة التوصيل و التشغيل IoT لنماذج الأجهزة، راجع دليل مطور جهاز IoT أجهزة التوصيل و التشغيل ودليل مطور خدمة IoT أجهزة التوصيل و التشغيل.
لتعريف نموذج، يمكنك استخدام لغة تعريف التوائم الرقمية (DTDL). يستخدم DTDL متغير JSON يسمى JSON-LD. تعرض القصاصة البرمجية التالية نموذج جهاز منظم الحرارة الذي:
- لديه معرف نموذج فريد:
dtmi:com:example:Thermostat;1
. - يُرسل بيانات تتبع الاستخدام لدرجة الحرارة.
- لديه خاصية قابلة للكتابة لتعيين درجة الحرارة المستهدفة.
- لديه خاصية للقراءة فقط للإبلاغ عن الحد الأقصى لدرجة الحرارة منذ آخر إعادة تمهيد.
- يستجيب لأمر يطلب درجات الحرارة القصوى والدنيا والمتوسطة على مدى فترة زمنية.
{
"@context": "dtmi:dtdl:context;2",
"@id": "dtmi:com:example:Thermostat;1",
"@type": "Interface",
"displayName": "Thermostat",
"description": "Reports current temperature and provides desired temperature control.",
"contents": [
{
"@type": [
"Telemetry",
"Temperature"
],
"name": "temperature",
"displayName": "Temperature",
"description": "Temperature in degrees Celsius.",
"schema": "double",
"unit": "degreeCelsius"
},
{
"@type": [
"Property",
"Temperature"
],
"name": "targetTemperature",
"schema": "double",
"displayName": "Target Temperature",
"description": "Allows to remotely specify the desired target temperature.",
"unit": "degreeCelsius",
"writable": true
},
{
"@type": [
"Property",
"Temperature"
],
"name": "maxTempSinceLastReboot",
"schema": "double",
"unit": "degreeCelsius",
"displayName": "Max temperature since last reboot.",
"description": "Returns the max temperature since last device reboot."
},
{
"@type": "Command",
"name": "getMaxMinReport",
"displayName": "Get Max-Min report.",
"description": "This command returns the max, min and average temperature from the specified time to the current time.",
"request": {
"name": "since",
"displayName": "Since",
"description": "Period to return the max-min report.",
"schema": "dateTime"
},
"response": {
"name": "tempReport",
"displayName": "Temperature Report",
"schema": {
"@type": "Object",
"fields": [
{
"name": "maxTemp",
"displayName": "Max temperature",
"schema": "double"
},
{
"name": "minTemp",
"displayName": "Min temperature",
"schema": "double"
},
{
"name": "avgTemp",
"displayName": "Average Temperature",
"schema": "double"
},
{
"name": "startTime",
"displayName": "Start Time",
"schema": "dateTime"
},
{
"name": "endTime",
"displayName": "End Time",
"schema": "dateTime"
}
]
}
}
}
]
}
يحتوي نموذج منظم الحرارة على واجهة واحدة. تظهر الأمثلة اللاحقة في هذه المقالة نماذج أكثر تعقيدا تستخدم المكونات والتوارث.
توضح هذه المقالة كيفية تصميم النماذج الخاصة بك وتأليفها وتغطي مواضيع مثل أنواع البيانات وبنية النموذج والأدوات.
لمعرفة المزيد، راجع مواصفات لغة تعريف التوائم الرقمية.
إشعار
يدعم IoT Central حاليا DTDL v2 مع ملحق IoT Central.
بنية النموذج
يتم تجميع الخصائص وبيانات تتبع الاستخدام والأوامر في واجهات. يصف هذا القسم كيفية استخدام الواجهات لوصف النماذج البسيطة والمعقدة باستخدام المكونات والتوارث.
معرفات النموذج
تحتوي كل واجهة على معرف نموذج رقمي مزدوج فريد (DTMI). تستخدم النماذج المعقدة DTMIs لتحديد المكونات. يمكن للتطبيقات استخدام DTMIs التي ترسلها الأجهزة لتحديد موقع تعريفات النموذج في مستودع.
يجب أن تستخدم DTMIs اصطلاح التسمية التالي:
- بادئة DTMI هي
dtmi:
. - لاحقة DTMI هي رقم الإصدار للنموذج مثل
;2
. - يعين نص DTMI إلى المجلد والملف في مستودع النموذج حيث يتم تخزين النموذج. رقم الإصدار هو جزء من اسم الملف.
على سبيل المثال، يتم تخزين النموذج المحدد بواسطة DTMI dtmi:com:Example:Thermostat;2
في ملف dtmi/com/example/thermostat-2.json .
تعرض القصاصة البرمجية التالية مخطط تعريف واجهة مع DTMI الفريد الخاص به:
{
"@context": "dtmi:dtdl:context;2",
"@id": "dtmi:com:example:Thermostat;2",
"@type": "Interface",
"displayName": "Thermostat",
"description": "Reports current temperature and provides desired temperature control.",
"contents": [
...
]
}
لا توجد مكونات
لا يستخدم نموذج بسيط، مثل منظم الحرارة المعروض سابقا، المكونات المضمنة أو المتتالية. يتم تعريف بيانات تتبع الاستخدام والخصائص والأوامر في عقدة contents
الواجهة.
يوضح المثال التالي جزءا من نموذج بسيط لا يستخدم المكونات:
{
"@context": "dtmi:dtdl:context;2",
"@id": "dtmi:com:example:Thermostat;1",
"@type": "Interface",
"displayName": "Thermostat",
"description": "Reports current temperature and provides desired temperature control.",
"contents": [
{
"@type": [
"Telemetry",
"Temperature"
],
"name": "temperature",
"displayName": "Temperature",
"description": "Temperature in degrees Celsius.",
"schema": "double",
"unit": "degreeCelsius"
},
{
"@type": [
"Property",
...
تسمي أدوات مثل Azure IoT Explorer ومصمم قالب جهاز IoT Central واجهة مستقلة مثل منظم الحرارة كمكون افتراضي.
توضح لقطة الشاشة التالية كيفية عرض النموذج في أداة Azure IoT Explorer:
توضح لقطة الشاشة التالية كيفية عرض النموذج كمكون افتراضي في مصمم قالب جهاز IoT Central. حدد View identity لمشاهدة DTMI للنموذج:
يتم تخزين معرف النموذج في خاصية توأم الجهاز كما تظهر لقطة الشاشة التالية:
نموذج DTDL بدون مكونات هو تبسيط مفيد لجهاز أو وحدة IoT Edge مع مجموعة واحدة من بيانات تتبع الاستخدام والخصائص والأوامر. يجعل النموذج الذي لا يستخدم المكونات من السهل ترحيل جهاز أو وحدة نمطية موجودة لتكون جهاز أو وحدة IoT أجهزة التوصيل و التشغيل - يمكنك إنشاء نموذج DTDL يصف الجهاز أو الوحدة الفعلية دون الحاجة إلى تحديد أي مكونات.
اعاده
هناك طريقتان لإعادة استخدام تعريفات الواجهة.
- استخدم مكونات متعددة في نموذج للإشارة إلى تعريفات الواجهة الأخرى.
- استخدم التوريث لتوسيع تعريفات الواجهة الموجودة.
مكونات متعددة
تتيح لك المكونات إنشاء واجهة نموذج كتجمع للواجهات الأخرى.
على سبيل المثال، يتم تعريف واجهة Thermostat كنموذج. يمكنك دمج هذه الواجهة كمكون واحد أو أكثر عند تعريف نموذج وحدة تحكم درجة الحرارة. في المثال التالي، تسمى thermostat1
هذه المكونات و thermostat2
.
بالنسبة لنموذج DTDL مع مكونات متعددة، هناك قسمان أو أكثر من المكونات. تم @type
تعيين كل قسم إلى Component
ويشير بشكل صريح إلى مخطط كما هو موضح في القصاصة البرمجية التالية:
{
"@context": "dtmi:dtdl:context;2",
"@id": "dtmi:com:example:TemperatureController;1",
"@type": "Interface",
"displayName": "Temperature Controller",
"description": "Device with two thermostats and remote reboot.",
"contents": [
{
"@type": [
"Telemetry",
"DataSize"
],
"name": "workingSet",
"displayName": "Working Set",
"description": "Current working set of the device memory in KiB.",
"schema": "double",
"unit": "kibibyte"
},
{
"@type": "Property",
"name": "serialNumber",
"displayName": "Serial Number",
"description": "Serial number of the device.",
"schema": "string"
},
{
"@type": "Command",
"name": "reboot",
"displayName": "Reboot",
"description": "Reboots the device after waiting the number of seconds specified.",
"request": {
"name": "delay",
"displayName": "Delay",
"description": "Number of seconds to wait before rebooting the device.",
"schema": "integer"
}
},
{
"@type" : "Component",
"schema": "dtmi:com:example:Thermostat;1",
"name": "thermostat1",
"displayName": "Thermostat One",
"description": "Thermostat One of Two."
},
{
"@type" : "Component",
"schema": "dtmi:com:example:Thermostat;1",
"name": "thermostat2",
"displayName": "Thermostat Two",
"description": "Thermostat Two of Two."
},
{
"@type": "Component",
"schema": "dtmi:azure:DeviceManagement:DeviceInformation;1",
"name": "deviceInformation",
"displayName": "Device Information interface",
"description": "Optional interface with basic device hardware information."
}
]
}
يحتوي هذا النموذج على ثلاثة مكونات محددة في قسم المحتويات - مكونان Thermostat
ومكون DeviceInformation
. يتضمن قسم المحتويات أيضا تعريفات الخصائص وبيانات تتبع الاستخدام والأوامر.
تظهر لقطات الشاشة التالية كيفية ظهور هذا النموذج في IoT Central. تظهر تعريفات الخاصية وبيانات تتبع الاستخدام والأوامر في وحدة التحكم في درجة الحرارة في المكون الافتراضي ذي المستوى الأعلى. تظهر تعريفات الخاصية وبيانات تتبع الاستخدام والأوامر لكل منظم حرارة في تعريفات المكونات:
لمعرفة كيفية كتابة التعليمات البرمجية للجهاز التي تتفاعل مع المكونات، راجع دليل مطور جهاز IoT أجهزة التوصيل و التشغيل.
لمعرفة كيفية كتابة رمز الخدمة الذي يتفاعل مع المكونات على جهاز، راجع دليل مطور خدمة IoT أجهزة التوصيل و التشغيل.
توريث
يتيح لك التوريث إعادة استخدام القدرات في واجهات أساسية لتوسيع قدرات الواجهة. على سبيل المثال، يمكن للعديد من نماذج الأجهزة مشاركة القدرات الشائعة مثل الرقم التسلسلي:
تعرض القصاصة البرمجية التالية نموذج DTML يستخدم extends
الكلمة الأساسية لتعريف علاقة التوريث الموضحة في الرسم التخطيطي السابق:
[
{
"@context": "dtmi:dtdl:context;2",
"@id": "dtmi:com:example:Thermostat;1",
"@type": "Interface",
"contents": [
{
"@type": "Telemetry",
"name": "temperature",
"schema": "double",
"unit": "degreeCelsius"
},
{
"@type": "Property",
"name": "targetTemperature",
"schema": "double",
"unit": "degreeCelsius",
"writable": true
}
],
"extends": [
"dtmi:com:example:baseDevice;1"
]
},
{
"@context": "dtmi:dtdl:context;2",
"@id": "dtmi:com:example:baseDevice;1",
"@type": "Interface",
"contents": [
{
"@type": "Property",
"name": "SerialNumber",
"schema": "double",
"writable": false
}
]
}
]
تظهر لقطة الشاشة التالية هذا النموذج في بيئة قالب جهاز IoT Central:
عند كتابة التعليمات البرمجية من جانب الجهاز أو الخدمة، لا تحتاج التعليمات البرمجية الخاصة بك إلى القيام بأي شيء خاص للتعامل مع الواجهات الموروثة. في المثال الموضح في هذا القسم، تقوم التعليمات البرمجية لجهازك بالإبلاغ عن الرقم التسلسلي كما لو كان جزءا من واجهة منظم الحرارة.
تلميحات
يمكنك دمج المكونات والميراث عند إنشاء نموذج. يوضح الرسم التخطيطي التالي نموذجا thermostat
موروثا من واجهة baseDevice
. تحتوي الواجهة baseDevice
على مكون، يرث نفسه من واجهة أخرى:
تعرض القصاصة البرمجية التالية نموذج DTML يستخدم extends
الكلمات الأساسية و component
لتحديد علاقة التوريث واستخدام المكون الموضح في الرسم التخطيطي السابق:
[
{
"@context": "dtmi:dtdl:context;2",
"@id": "dtmi:com:example:Thermostat;1",
"@type": "Interface",
"contents": [
{
"@type": "Telemetry",
"name": "temperature",
"schema": "double",
"unit": "degreeCelsius"
},
{
"@type": "Property",
"name": "targetTemperature",
"schema": "double",
"unit": "degreeCelsius",
"writable": true
}
],
"extends": [
"dtmi:com:example:baseDevice;1"
]
},
{
"@context": "dtmi:dtdl:context;2",
"@id": "dtmi:com:example:baseDevice;1",
"@type": "Interface",
"contents": [
{
"@type": "Property",
"name": "SerialNumber",
"schema": "double",
"writable": false
},
{
"@type" : "Component",
"schema": "dtmi:com:example:baseComponent;1",
"name": "baseComponent"
}
]
}
]
أنواع البيانات
استخدم أنواع البيانات لتعريف بيانات تتبع الاستخدام والخصائص ومعلمات الأوامر. يمكن أن تكون أنواع البيانات بدائية أو معقدة. تستخدم أنواع البيانات المعقدة أنواعا بدائية أو أنواعا معقدة أخرى. الحد الأقصى لعمق الأنواع المعقدة هو خمسة مستويات.
أنواع بدائية
يعرض الجدول التالي مجموعة الأنواع الأولية التي يمكنك استخدامها:
نوع بدائي | الوصف |
---|---|
boolean |
قيمة منطقية |
date |
تاريخ كامل كما هو محدد في القسم 5.6 من RFC 3339 |
dateTime |
تاريخ-وقت كما هو محدد في RFC 3339 |
double |
نقطة عائمة IEEE 8 بايت |
duration |
مدة بتنسيق ISO 8601 |
float |
نقطة عائمة IEEE 4 بايت |
integer |
عدد صحيح موقع من 4 بايت |
long |
عدد صحيح موقع من 8 بايت |
string |
سلسلة UTF8 |
time |
دوام كامل كما هو محدد في القسم 5.6 من RFC 3339 |
تعرض القصاصة البرمجية التالية مثالا لتعريف بيانات تتبع الاستخدام الذي يستخدم double
النوع في schema
الحقل:
{
"@type": "Telemetry",
"name": "temperature",
"displayName": "Temperature",
"schema": "double"
}
أنواع البيانات المعقدة
أنواع البيانات المعقدة هي واحدة من صفيف أو تعداد أو خريطة أو كائن أو أحد الأنواع الجغرافية المكانية.
الصفائف
الصفيف هو نوع بيانات قابل للفهرسة حيث تكون جميع العناصر من نفس النوع. يمكن أن يكون نوع العنصر نوعا بدائيا أو معقدا.
تعرض القصاصة البرمجية التالية مثالا لتعريف بيانات تتبع الاستخدام الذي يستخدم Array
النوع في schema
الحقل. عناصر الصفيف منطقية:
{
"@type": "Telemetry",
"name": "ledState",
"schema": {
"@type": "Array",
"elementSchema": "boolean"
}
}
التعدادات
تصف قائمة التعداد نوعا يحتوي على مجموعة من التسميات المسماة التي تعين القيم. يمكن أن تكون القيم إما أعدادا صحيحة أو سلاسل، ولكن التسميات هي دائما سلاسل.
تعرض القصاصة البرمجية التالية مثالا لتعريف بيانات تتبع الاستخدام الذي يستخدم Enum
النوع في schema
الحقل. القيم في التعداد هي أعداد صحيحة:
{
"@type": "Telemetry",
"name": "state",
"schema": {
"@type": "Enum",
"valueSchema": "integer",
"enumValues": [
{
"name": "offline",
"displayName": "Offline",
"enumValue": 1
},
{
"name": "online",
"displayName": "Online",
"enumValue": 2
}
]
}
}
الخرائط
الخريطة هي نوع مع أزواج قيم المفاتيح حيث يكون للقيم جميعها نفس النوع. يجب أن يكون المفتاح في الخريطة سلسلة. يمكن أن تكون القيم في الخريطة أي نوع، بما في ذلك نوع معقد آخر.
تعرض القصاصة البرمجية التالية مثالا لتعريف الخاصية الذي يستخدم Map
النوع في schema
الحقل. القيم في الخريطة هي سلاسل:
{
"@type": "Property",
"name": "modules",
"writable": true,
"schema": {
"@type": "Map",
"mapKey": {
"name": "moduleName",
"schema": "string"
},
"mapValue": {
"name": "moduleState",
"schema": "string"
}
}
}
كائنات
يتكون نوع الكائن من حقول مسماة. يمكن أن تكون أنواع الحقول في مخطط العنصر أنواعا بدائية أو معقدة.
تعرض القصاصة البرمجية التالية مثالا لتعريف بيانات تتبع الاستخدام الذي يستخدم Object
النوع في schema
الحقل. الحقول في الكائن هي dateTime
و duration
وأنواع string
:
{
"@type": "Telemetry",
"name": "monitor",
"schema": {
"@type": "Object",
"fields": [
{
"name": "start",
"schema": "dateTime"
},
{
"name": "interval",
"schema": "duration"
},
{
"name": "status",
"schema": "string"
}
]
}
}
أنواع الموضع الجيوفضائي
يوفر DTDL مجموعة من الأنواع الجغرافية المكانية، استنادا إلى GeoJSON، لنمذجة بنيات البيانات الجغرافية: point
و lineString
multiPoint
وmultiLineString
polygon
.multiPolygon
هذه الأنواع هي بنيات متداخلة محددة مسبقا من الصفائف والكائنات والتعدادات.
تعرض القصاصة البرمجية التالية مثالا لتعريف بيانات تتبع الاستخدام الذي يستخدم point
النوع في schema
الحقل:
{
"@type": "Telemetry",
"name": "location",
"schema": "point"
}
نظرا لأن الأنواع الجغرافية المكانية تستند إلى صفيف، فلا يمكن استخدامها حاليا في تعريفات الخصائص.
الأنواع الدلالية
يحدد نوع بيانات خاصية أو تعريف القياس عن بعد تنسيق البيانات التي يتبادلها الجهاز مع خدمة. يوفر النوع الدلالي معلومات حول القياس عن بعد والخصائص التي يمكن للتطبيق استخدامها لتحديد كيفية معالجة قيمة أو عرضها. يحتوي كل نوع دلالي على وحدة مقترنة واحدة أو أكثر. على سبيل المثال، درجة مئوية و فهرنهايت هي وحدات للنوع الدلالي لدرجة الحرارة. يمكن للوحات معلومات وتحليلات IoT Central استخدام معلومات النوع الدلالي لتحديد كيفية رسم بيانات تتبع الاستخدام أو قيم الخصائص ووحدات العرض. لمعرفة كيفية استخدام محلل النموذج لقراءة الأنواع الدلالية، راجع فهم محلل نموذج Digital Twins.
تعرض القصاصة البرمجية التالية مثالا لتعريف القياس عن بعد الذي يتضمن معلومات النوع الدلالي. تتم إضافة النوع Temperature
الدلالي إلى @type
الصفيف، والقيمة unit
هي degreeCelsius
إحدى الوحدات الصالحة للنوع الدلالي:
{
"@type": [
"Telemetry",
"Temperature"
],
"name": "temperature",
"schema": "double",
"unit": "degreeCelsius"
}
الترجمة
تستخدم التطبيقات، مثل IoT Central، المعلومات في النموذج لإنشاء واجهة مستخدم ديناميكيا حول البيانات المتبادلة مع جهاز IoT أجهزة التوصيل و التشغيل. على سبيل المثال، يمكن لللوحات الموجودة على لوحة المعلومات عرض الأسماء والأوصاف لبيانات تتبع الاستخدام والخصائص والأوامر.
تحتوي الحقول الاختيارية description
و displayName
في النموذج على سلاسل مخصصة للاستخدام في واجهة المستخدم. يمكن أن تحتوي هذه الحقول على سلاسل مترجمة يمكن للتطبيق استخدامها لعرض واجهة مستخدم مترجمة.
تعرض القصاصة البرمجية التالية مثالا لتعريف القياس عن بعد لدرجة الحرارة الذي يتضمن سلاسل مترجمة:
{
"@type": [
"Telemetry",
"Temperature"
],
"description": {
"en": "Temperature in degrees Celsius.",
"it": "Temperatura in gradi Celsius."
},
"displayName": {
"en": "Temperature",
"it": "Temperatura"
},
"name": "temperature",
"schema": "double",
"unit": "degreeCelsius"
}
إضافة سلاسل مترجمة اختيارية. يحتوي المثال التالي على لغة افتراضية واحدة فقط:
{
"@type": [
"Telemetry",
"Temperature"
],
"description": "Temperature in degrees Celsius.",
"displayName": "Temperature",
"name": "temperature",
"schema": "double",
"unit": "degreeCelsius"
}
دورة الحياة والأدوات
مراحل دورة الحياة الأربع لطراز الجهاز هي الكاتب والنشر والاستخدام والإصدار:
المؤلف
نماذج أجهزة DTML هي مستندات JSON يمكنك إنشاؤها في محرر نص. ومع ذلك، في IoT Central، يمكنك استخدام بيئة واجهة المستخدم الرسومية لقالب الجهاز لإنشاء نموذج DTML. في IoT Central، يمكنك:
- إنشاء واجهات تحدد الخصائص وبيانات تتبع الاستخدام والأوامر.
- استخدم المكونات لتجميع واجهات متعددة معا.
- تعريف علاقات التوريث بين الواجهات.
- استيراد ملفات نموذج DTML وتصديرها.
لمعرفة المزيد، راجع تعريف نوع جهاز IoT جديد في تطبيق Azure IoT Central.
هناك ملحق تأليف DTDL ل VS Code يدعم كلا من DTDL v2 وDTDL v3.
لتثبيت ملحق DTDL ل VS Code، انتقل إلى محرر DTDL ل Visual Studio Code. يمكنك أيضا البحث عن DTDL في طريقة عرض الملحقات في VS Code.
بعد تثبيت الملحق، استخدمه لمساعدتك في تأليف ملفات نموذج DTDL في VS Code:
يوفر الملحق التحقق من صحة بناء الجملة في ملفات نموذج DTDL، مع تمييز الأخطاء كما هو موضح في لقطة الشاشة التالية:
استخدم التحسس الذكي والإكمال التلقائي عند تحرير نماذج DTDL:
إنشاء واجهة DTDL جديدة. ينشئ الأمر DTDL: Create Interface ملف JSON بواجهة جديدة. تتضمن الواجهة مثالا لبيانات تتبع الاستخدام والخصائص وتعريفات الأوامر.
استخدام
تستخدم التطبيقات، مثل IoT Central، نماذج الأجهزة. في IoT Central، النموذج هو جزء من قالب الجهاز الذي يصف قدرات الجهاز. يستخدم IoT Central قالب الجهاز لإنشاء واجهة مستخدم للجهاز ديناميكيا، بما في ذلك لوحات المعلومات والتحليلات.
إشعار
يعرف IoT Central بعض الملحقات للغة DTDL. لمعرفة المزيد، راجع ملحق IoT Central.
يمكن للحل المخصص استخدام محلل نموذج Digital Twins لفهم قدرات الجهاز الذي ينفذ النموذج. لمعرفة المزيد، راجع استخدام نماذج أجهزة التوصيل و التشغيل IoT في حل IoT.
إصدار
لضمان استمرار عمل الأجهزة والحلول من جانب الخادم التي تستخدم النماذج، فإن النماذج المنشورة غير قابلة للتغيير.
يتضمن DTMI رقم إصدار يمكنك استخدامه لإنشاء إصدارات متعددة من نموذج. يمكن للأجهزة والحلول من جانب الخادم استخدام الإصدار المحدد الذي تم تصميمها لاستخدامه.
ينفذ IoT Central المزيد من قواعد تعيين الإصدار لطرز الأجهزة. إذا قمت بإصدار قالب جهاز ونموذجه في IoT Central، يمكنك ترحيل الأجهزة من الإصدارات السابقة إلى الإصدارات الأحدث. ومع ذلك، لا يمكن للأجهزة التي تم ترحيلها استخدام قدرات جديدة دون ترقية البرنامج الثابت. لمعرفة المزيد، راجع تحرير قالب جهاز.
نشر
اعتبارا من فبراير 2024، تم إيقاف برنامج Azure Certified Device. لذلك، لم تعد Microsoft تقبل عمليات إرسال نماذج DTDL إلى مستودع نماذج توصيل وتشغيل Azure IoT.
إذا كنت ترغب في إعداد مستودع النموذج الخاص بك، يمكنك استخدام مستودع أدوات توصيل وتشغيل نماذج Azure IoT. يتضمن هذا المستودع التعليمات البرمجية لأداة dmr-client
CLI التي يمكنها التحقق من صحة نماذج DTDL واستيرادها وتوسيعها. تتيح لك هذه الأداة أيضا فهرسة مستودعات النموذج التي تتبع اصطلاحات مستودع طراز الجهاز.
الحدود والقيود
تلخص القائمة التالية بعض القيود والحدود الرئيسية على النماذج:
- حاليا، الحد الأقصى لعمق الصفائف والخرائط والعناصر هو خمسة مستويات.
- لا يمكنك استخدام الصفائف في تعريفات الخصائص.
- يمكنك توسيع الواجهات إلى عمق 10 مستويات.
- يمكن أن تمتد الواجهة على الأكثر إلى واجهتين أخريين.
- لا يمكن أن يحتوي المكون على مكون آخر.
فهم محلل نموذج Digital Twins
يتم وصف لغة تعريف التوائم الرقمية (DTDL) في مواصفات DTDL. يمكن للمستخدمين استخدام حزمة Digital Twins Model Parser NuGet للتحقق من صحة نموذج DTDL v2 أو v3 والاستعلام عنهما. يمكن تعريف نموذج DTDL في ملفات متعددة.
تثبيت محلل نموذج DTDL
يتوفر المحلل في NuGet.org بالمعرف: DTDLParser. لتثبيت المحلل، استخدم أي مدير حزمة NuGet متوافق مثل مدير في Visual Studio أو في dotnet
CLI.
dotnet add package DTDLParser
إشعار
في وقت كتابة هذا التقرير، يكون إصدار المحلل هو 1.0.52
.
استخدام المحلل للتحقق من صحة نموذج وفحصه
DTDLParser هي مكتبة يمكنك استخدامها من أجل:
- تحديد ما إذا كان نموذج واحد أو أكثر صالحا وفقا لمواصفات اللغة v2 أو v3.
- تحديد أخطاء نمذجة محددة.
- فحص محتويات النموذج.
يمكن أن يتكون النموذج من واجهة واحدة أو أكثر من الواجهات الموضحة في ملفات JSON. يمكنك استخدام المحلل لتحميل جميع الملفات التي تحدد نموذجا ثم التحقق من صحة جميع الملفات ككل، بما في ذلك أي مراجع بين الملفات.
يتضمن مستودع DTDLParser ل .NET العينات التالية التي توضح استخدام المحلل:
- DTDLParserResolveSample يوضح كيفية تحليل واجهة مع مراجع خارجية، وحل التبعيات باستخدام
Azure.IoT.ModelsRepository
العميل. - DTDLParserJSInteropSample يوضح كيفية استخدام محلل DTDL من JavaScript الذي يعمل في المتصفح، باستخدام .NET JSInterop.
يتضمن مستودع DTDLParser ل .NET أيضا مجموعة من البرامج التعليمية التي توضح لك كيفية استخدام المحلل للتحقق من صحة النماذج وفحصها.
تمكن واجهة برمجة تطبيقات محلل النموذج العديد من السيناريوهات من أتمتة المهام التي تعتمد على نماذج DTDL أو التحقق من صحتها. على سبيل المثال، يمكنك إنشاء واجهة مستخدم ديناميكيا من المعلومات الموجودة في النموذج.
الخطوات التالية
الآن بعد أن تعرفت على نمذجة الجهاز، إليك بعض الموارد التالية: