دليل نمذجة أجهزة التوصيل و التشغيل إنترنت الأشياء

في صميم أجهزة التوصيل و التشغيل إنترنت الأشياء ، هو نموذج جهاز يصف قدرات الجهاز على تطبيق يدعم أجهزة التوصيل و التشغيل إنترنت الأشياء. تم تصميم هذا النموذج كمجموعة من الواجهات التي تعرف:

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

لمعرفة المزيد حول كيفية استخدام أجهزة التوصيل و التشغيل إنترنت الأشياء لنماذج الأجهزة، راجع دليل مطوري الأجهزة أجهزة التوصيل و التشغيل إنترنت الأشياء ودليل مطوريخدمات أجهزة التوصيل و التشغيل إنترنت الأشياء.

لتعريف نموذج، يمكنك استخدام لغة تعريف التوائم الرقمية (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"
            }
          ]
        }
      }
    }
  ]
}

يحتوي نموذج منظم الحرارة على واجهة واحدة. توضح الأمثلة اللاحقة في هذه المقالة نماذج أكثر تعقيدا تستخدم المكونات والميراث.

توضح هذه المقالة كيفية تصميم النماذج الخاصة بك وتأليفها وتغطي موضوعات مثل أنواع البيانات وبنية النموذج والأدوات.

لمعرفة المزيد، راجع مواصفات لغة تعريف التوائم الرقمية v2 .

هيكل النموذج

يتم تجميع الخصائص والقياس عن بعد والأوامر في واجهات. يصف هذا القسم كيفية استخدام الواجهات لوصف النماذج البسيطة والمعقدة باستخدام المكونات والتوريث.

معرفات النماذج

تحتوي كل واجهة على معرف نموذج توأم رقمي فريد (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:

Default component in Azure IoT explorer

توضح لقطة الشاشة التالية كيفية عرض النموذج كمكون افتراضي في مصمم قالب جهاز IoT Central. حدد عرض الهوية لرؤية DTMI للنموذج:

Screenshot showing Thermostat model in IoT Central designer

يتم تخزين معرف الطراز في خاصية توأم للجهاز كما تظهر لقطة الشاشة التالية:

Model ID in digital twin property

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

تلميح

يمكن أن تكون الوحدة النمطية وحدة جهاز أو وحدةIoT Edge.

اعاده

هناك طريقتان لإعادة استخدام تعريفات الواجهة. استخدم مكونات متعددة في نموذج للإشارة إلى تعريفات الواجهة الأخرى. استخدم الميراث لتوسيع تعريفات الواجهة الموجودة.

مكونات متعددة

تتيح لك المكونات إنشاء واجهة نموذج كمجموعة من الواجهات الأخرى.

على سبيل المثال ، يتم تعريف واجهة 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. تظهر تعريفات الخاصية والقياس عن بعد والأوامر في وحدة التحكم في درجة الحرارة في المكون الافتراضي للمستوى الأعلى. تظهر تعريفات الخاصية والقياس عن بعد والأوامر لكل ترموستات في تعريفات المكونات:

Screenshot showing the temperature controller device template in IoT Central.

Screenshot showing the thermostat components in the temperature controller device template in IoT Central.

لمعرفة كيفية كتابة التعليمات البرمجية للجهاز التي تتفاعل مع المكونات، راجع دليل مطوري الأجهزة أجهزة التوصيل و التشغيل إنترنت الأشياء.

لمعرفة كيفية كتابة التعليمات البرمجية للخدمة التي تتفاعل مع المكونات الموجودة على جهاز، راجع دليل مطوري خدمات أجهزة التوصيل و التشغيل إنترنت الأشياء.

توريث

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

Example of inheritance in a device model showing a Thermostat and a Flow Controller that share capabilities from a base interface.

يعرض المقتطف التالي نموذج 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:

Screenshot showing interface inheritance in IoT Central

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

النصائح

يمكنك الجمع بين المكونات والتوريث عند إنشاء نموذج. يوضح الرسم التخطيطي التالي نموذجا thermostat يرث من واجهة baseDevice . تحتوي baseDevice الواجهة على مكون ، يرث نفسه من واجهة أخرى:

Diagram showing a model that uses both components and inheritance.

يعرض المقتطف التالي نموذج 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"
}

أنواع البيانات المعقدة

أنواع البيانات المعقدة هي واحدة من الصفيف أو التعداد أو الخريطة أو الكائن أو أحد الأنواع الجغرافية المكانية.

Arrays

الصفيف هو نوع بيانات قابل للفهرسة حيث تكون جميع العناصر من نفس النوع. يمكن أن يكون نوع العنصر نوعا بدائيا أو معقدا.

يعرض المقتطف التالي مثالا على تعريف القياس عن بعد الذي يستخدم 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، ، ، multiLineStringpolygonmultiPointlineStringو .multiPolygon هذه الأنواع هي هياكل متداخلة محددة مسبقا من المصفوفات والكائنات والتعدادات.

يعرض المقتطف التالي مثالا على تعريف القياس point عن بعد الذي يستخدم النوع في الحقل schema :

{
  "@type": "Telemetry",
  "name": "location",
  "schema": "point"
}

نظرا لأن الأنواع الجغرافية المكانية تستند إلى صفيف، فلا يمكن استخدامها حاليا في تعريفات الخصائص.

الأنواع الدلالية

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

يعرض المقتطف التالي مثالا على تعريف القياس عن بعد الذي يتضمن معلومات النوع الدلالي. تتم إضافة النوع Temperature الدلالي إلى الصفيف، والقيمةunit، degreeCelsius هي إحدى الوحدات الصالحة للنوع الدلالي@type:

{
  "@type": [
    "Telemetry",
    "Temperature"
  ],
  "name": "temperature",
  "schema": "double",
  "unit": "degreeCelsius"
}

الترجمة

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

تحتوي الحقول الاختيارية 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.

لمعرفة المزيد، راجع تعريف نوع جديد من أجهزة إنترنت الأشياء في تطبيق Azure IoT Central.

هناك ملحقات تأليف DTDL لكل من VS Code و Visual Studio 2019.

لتثبيت ملحق DTDL ل VS Code، انتقل إلى محرر DTDL للحصول على Visual Studio Code. يمكنك أيضا البحث عن DTDL في طريقة عرض الملحقات في VS Code.

عند تثبيت الملحق، استخدمه لمساعدتك في تأليف ملفات طراز DTDL في التعليمات البرمجية VS:

  • يوفر الملحق التحقق من صحة بناء الجملة في ملفات طراز DTDL ، مع تسليط الضوء على الأخطاء كما هو موضح في لقطة الشاشة التالية:

    Model validation in VS Code

  • استخدم Intelellisense والإكمال التلقائي عند تحرير طرز DTDL:

    Use intellisense for DTDL models in VS Code

  • إنشاء واجهة DTDL جديدة. يقوم الأمر DTDL: Create Interface بإنشاء ملف JSON بواجهة جديدة. تتضمن الواجهة أمثلة على تعريفات القياس عن بعد والخصائص والأوامر.

لتثبيت ملحق DTDL Visual Studio 2019، انتقل إلى دعم لغة DTDL ل VS 2019. يمكنك أيضا البحث عن DTDL في إدارة الإضافات في Visual Studio.

عند تثبيت الامتداد، استخدمه لمساعدتك في تأليف ملفات طراز DTDL في Visual Studio:

  • يوفر الملحق التحقق من صحة بناء الجملة في ملفات طراز DTDL ، مع تسليط الضوء على الأخطاء كما هو موضح في لقطة الشاشة التالية:

    Model validation in Visual Studio

  • استخدم Intelellisense والإكمال التلقائي عند تحرير طرز DTDL:

    Use intellisense for DTDL models in Visual Studio

نشر

لجعل طرازات DTML قابلة للمشاركة والاكتشاف، يمكنك نشرها في مستودع طرز الأجهزة.

قبل نشر نموذج في المستودع العام، يمكنك استخدام dmr-client الأدوات للتحقق من صحة النموذج.

لمعرفة المزيد، راجع مستودع طرازات الأجهزة.

استخدم

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

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

إصدار

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

يتضمن DTMI رقم إصدار يمكنك استخدامه لإنشاء إصدارات متعددة من نموذج. يمكن للأجهزة والحلول من جانب الخادم استخدام الإصدار المحدد الذي تم تصميمه لاستخدامه.

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

الحدود والقيود

تلخص القائمة التالية بعض القيود والقيود الرئيسية المفروضة على النماذج:

  • حاليا، الحد الأقصى لعمق المصفوفات والخرائط والكائنات هو خمسة مستويات من العمق.
  • لا يمكنك استخدام الصفيفات في تعريفات الخصائص.
  • يمكنك توسيع الواجهات إلى عمق 10 مستويات.
  • يمكن أن تمتد الواجهة على الأكثر واجهتين أخريين.
  • لا يمكن أن يحتوي المكون على مكون آخر.

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

الآن بعد أن تعرفت على نمذجة الأجهزة ، إليك بعض الموارد الإضافية: