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

لقطة شاشة تعرض المكون الافتراضي في أداة مستكشف Azure IoT.

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

لقطة شاشة تعرض نموذج Thermostat في أداة مصمم قالب جهاز IoT Central.

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

لقطة شاشة لأداة Azure IoT Explorer التي تعرض معرف النموذج في خاصية التوأم الرقمي.

نموذج DTDL بدون مكونات هو تبسيط مفيد لجهاز أو وحدة IoT Edge مع مجموعة واحدة من بيانات تتبع الاستخدام والخصائص والأوامر. يجعل النموذج الذي لا يستخدم المكونات من السهل ترحيل جهاز أو وحدة نمطية موجودة لتكون جهاز أو وحدة IoT أجهزة التوصيل و التشغيل - يمكنك إنشاء نموذج 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. تظهر تعريفات الخاصية وبيانات تتبع الاستخدام والأوامر في وحدة التحكم في درجة الحرارة في المكون الافتراضي ذي المستوى الأعلى. تظهر تعريفات الخاصية وبيانات تتبع الاستخدام والأوامر لكل منظم حرارة في تعريفات المكونات:

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

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

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

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

توريث

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

رسم تخطيطي يوضح مثالا على التوريث في نموذج جهاز. تتشارك واجهة Thermostat وواجهة Flow Controller في القدرات من واجهة أساسية.

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

لقطة شاشة تعرض توريث الواجهة في 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و lineStringmultiPointوmultiLineStringpolygon.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 في VS Code.

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

    لقطة شاشة تعرض intellisense لنماذج DTDL في VS Code.

  • إنشاء واجهة 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 أو التحقق من صحتها. على سبيل المثال، يمكنك إنشاء واجهة مستخدم ديناميكيا من المعلومات الموجودة في النموذج.

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

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