IoT Tak Çalıştır modelleme kılavuzu

IoT Tak Çalıştır merkezinde, IoT Tak Çalıştır etkin bir uygulama için cihazın özelliklerini açıklayan bir cihaz modeli bulunur. Bu model, şunu tanımlayan bir dizi arabirim olarak yapılandırılmıştır:

  • Bir cihazın veya başka bir varlığın salt okunur veya yazılabilir durumunu temsil eden özellikler . Örneğin, cihaz seri numarası salt okunur bir özellik ve termostat üzerindeki hedef sıcaklık yazılabilir bir özellik olabilir.
  • Verilerin normal bir algılayıcı okuma akışı, ara sıra bir hata veya bilgi iletisi olması fark etmeksizin bir cihaz tarafından yayılan verileri tanımlayan telemetri alanları.
  • Bir cihazda yapılabilecek bir işlevi veya işlemi açıklayan komutlar . Örneğin, bir komut bir ağ geçidini yeniden başlatabilir veya uzak kamera kullanarak resim çekebilir.

IoT Tak Çalıştır cihaz modellerini nasıl kullandığı hakkında daha fazla bilgi edinmek için bkz. IoT Tak Çalıştır cihaz geliştirici kılavuzu ve IoT Tak Çalıştır hizmet geliştirici kılavuzu.

Model tanımlamak için Digital Twins Tanım Dili'ni (DTDL) kullanırsınız. DTDL, JSON-LD adlı bir JSON değişkeni kullanır. Aşağıdaki kod parçacığında termostat cihazının modeli gösterilmektedir:

  • Benzersiz bir model kimliği vardır: dtmi:com:example:Thermostat;1.
  • Sıcaklık telemetrisi gönderir.
  • Hedef sıcaklığı ayarlamak için yazılabilir bir özelliği vardır.
  • Son yeniden başlatmadan bu yana en yüksek sıcaklığı raporlamak için salt okunur bir özelliği vardır.
  • Bir süre boyunca en yüksek, en düşük ve ortalama sıcaklıkları isteyen bir komuta yanıt verir.
{
  "@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"
            }
          ]
        }
      }
    }
  ]
}

Termostat modeli tek bir arabirime sahiptir. Bu makalenin sonraki örneklerinde bileşenleri ve devralmayı kullanan daha karmaşık modeller gösterilmektedir.

Bu makalede kendi modellerinizi tasarlama ve yazma işlemleri açıklanır ve veri türleri, model yapısı ve araçlar gibi konular ele alınır.

Daha fazla bilgi edinmek için bkz . Digital Twins Tanım Dili belirtimi.

Not

IoT Central şu anda IoT Central uzantısına sahip DTDL v2'yi desteklemektedir.

Model yapısı

Özellikler, telemetri ve komutlar arabirimler halinde gruplandırılır. Bu bölümde, bileşenleri ve devralmayı kullanarak basit ve karmaşık modelleri açıklamak için arabirimleri nasıl kullanabileceğiniz açıklanmaktadır.

Model Kimlikleri

Her arabirimin benzersiz bir dijital ikiz modeli tanımlayıcısı (DTMI) vardır. Karmaşık modeller, bileşenleri tanımlamak için DTMI'leri kullanır. Uygulamalar, cihazların bir depodaki model tanımlarını bulmak için gönderdiği DTMI'leri kullanabilir.

DTMI'ler aşağıdaki adlandırma kuralını kullanmalıdır:

  • DTMI ön eki şeklindedir dtmi:.
  • DTMI soneki, ;2gibi modelin sürüm numarasıdır.
  • DTMI'nin gövdesi, modelin depolandığı model deposundaki klasör ve dosyayla eşler. Sürüm numarası dosya adının bir parçasıdır.

Örneğin, DTMI dtmi:com:Example:Thermostat;2 tarafından tanımlanan model dtmi/com/example/thermostat-2.json dosyasında depolanır.

Aşağıdaki kod parçacığı, benzersiz DTMI'siyle bir arabirim tanımının ana hattını gösterir:

{
  "@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": [
    ...
  ]
}

Bileşen yok

Daha önce gösterilen termostat gibi basit bir model, katıştırılmış veya basamaklı bileşenler kullanmaz. Telemetri, özellikler ve komutlar arabirimin contents düğümünde tanımlanır.

Aşağıdaki örnek, bileşenleri kullanmayan basit bir modelin bir bölümünü gösterir:

{
  "@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 Gezgini ve IoT Central cihaz şablonu tasarımcısı gibi araçlar, termostat gibi tek başına bir arabirimi varsayılan bileşen olarak etiketler.

Aşağıdaki ekran görüntüsünde modelin Azure IoT Gezgini aracında nasıl görüntülediği gösterilmektedir:

Azure IoT gezgini aracında varsayılan bileşeni gösteren ekran görüntüsü.

Aşağıdaki ekran görüntüsünde modelin IoT Central cihaz şablonu tasarımcısında varsayılan bileşen olarak nasıl görüntülediği gösterilmektedir. Modelin DTMI'sini görmek için Kimliği görüntüle'yi seçin:

IoT Central cihaz şablonu tasarımcısı aracında Thermostat modelini gösteren ekran görüntüsü.

Model kimliği, aşağıdaki ekran görüntüsünde gösterildiği gibi bir cihaz ikizi özelliğinde depolanır:

Dijital ikiz özelliğindeki model kimliğini gösteren Azure IoT Gezgini aracının ekran görüntüsü.

Bileşenleri olmayan bir DTDL modeli, tek bir telemetri, özellik ve komut kümesine sahip bir cihaz veya IoT Edge modülü için kullanışlı bir basitleştirmedir. Bileşenleri kullanmayan bir model, mevcut bir cihazı veya modülü IoT Tak Çalıştır bir cihaz veya modül olarak geçirmeyi kolaylaştırır. Herhangi bir bileşen tanımlamanıza gerek kalmadan gerçek cihazınızı veya modülünüzü açıklayan bir DTDL modeli oluşturursunuz.

İpucu

Modül bir cihaz modülü veya IoT Edge modülü olabilir.

Yeniden kullanma

Arabirim tanımlarını yeniden kullanmanın iki yolu vardır.

  • Diğer arabirim tanımlarına başvurmak için modelde birden çok bileşen kullanın.
  • Var olan arabirim tanımlarını genişletmek için devralmayı kullanın.

Birden çok bileşen

Bileşenler, diğer arabirimlerin derlemesi olarak bir model arabirimi oluşturmanıza olanak sağlar.

Örneğin Thermostat arabirimi bir model olarak tanımlanır. Sıcaklık Denetleyicisi modelini tanımlarken bu arabirimi bir veya daha fazla bileşen olarak birleştirebilirsiniz. Aşağıdaki örnekte, bu bileşenler ve thermostat2olarak adlandırılırthermostat1.

Birden çok bileşeni olan bir DTDL modeli için iki veya daha fazla bileşen bölümü vardır. Her bölüm @type olarak Component ayarlanmıştır ve aşağıdaki kod parçacığında gösterildiği gibi bir şemaya açıkça başvurur:

{
  "@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."
    }
  ]
}

Bu model, içerik bölümünde tanımlanan üç bileşene sahiptir: iki Thermostat bileşen ve bir DeviceInformation bileşen. İçindekiler bölümü özellik, telemetri ve komut tanımlarını da içerir.

Aşağıdaki ekran görüntüleri, bu modelin IoT Central'da nasıl göründüğünü gösterir. Sıcaklık denetleyicisindeki özellik, telemetri ve komut tanımları en üst düzey Varsayılan bileşende görünür. Her termostat için özellik, telemetri ve komut tanımları bileşen tanımlarında görünür:

IoT Central'daki sıcaklık denetleyicisi cihaz şablonunu gösteren ekran görüntüsü.

IoT Central'daki sıcaklık denetleyicisi cihaz şablonundaki termostat bileşenlerini gösteren ekran görüntüsü.

Bileşenlerle etkileşim kuran cihaz kodu yazmayı öğrenmek için bkz. cihaz geliştirici kılavuzu IoT Tak Çalıştır.

Bir cihazdaki bileşenlerle etkileşim kuran hizmet kodu yazmayı öğrenmek için bkz. hizmet geliştirici kılavuzu IoT Tak Çalıştır.

Devralma

Devralma, bir arabirimin özelliklerini genişletmek için temel arabirimlerdeki özellikleri yeniden kullanmanıza olanak tanır. Örneğin, birkaç cihaz modeli seri numarası gibi ortak özellikleri paylaşabilir:

Cihaz modelinde devralma örneğini gösteren diyagram. Termostat arabirimi ve Akış Denetleyicisi arabiriminin her ikisi de temel arabirimden özellikleri paylaşır.

Aşağıdaki kod parçacığında, önceki diyagramda extends gösterilen devralma ilişkisini tanımlamak için anahtar sözcüğünü kullanan bir DTML modeli gösterilmektedir:

[
  {
    "@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
      }
    ]
  }
]

Aşağıdaki ekran görüntüsünde IoT Central cihaz şablonu ortamında bu model gösterilmektedir:

IoT Central'da arabirim devralmayı gösteren ekran görüntüsü.

Cihaz veya hizmet tarafı kodu yazdığınızda, kodunuzun devralınan arabirimleri işlemek için özel bir şey yapması gerekmez. Bu bölümde gösterilen örnekte, cihaz kodunuz seri numarasını termostat arabiriminin bir parçası gibi bildirir.

İpuçları

Model oluştururken bileşenleri ve devralmayı birleştirebilirsiniz. Aşağıdaki diyagramda bir arabirimden devralan bir thermostatbaseDevice model gösterilmektedir. Arabirimin baseDevice , kendisini başka bir arabirimden devralan bir bileşeni vardır:

Hem bileşenleri hem de devralmayı kullanan modeli gösteren diyagram.

Aşağıdaki kod parçacığında, önceki diyagramda extends gösterilen devralma ilişkisini ve bileşen kullanımını tanımlamak için ve component anahtar sözcüklerini kullanan bir DTML modeli gösterilmektedir:

[
  {
    "@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"
      }
    ]
  }
]

Veri türleri

Telemetriyi, özellikleri ve komut parametrelerini tanımlamak için veri türlerini kullanın. Veri türleri ilkel veya karmaşık olabilir. Karmaşık veri türleri ilkelleri veya diğer karmaşık türleri kullanır. Karmaşık türler için maksimum derinlik beş düzeydir.

İlkel türler

Aşağıdaki tabloda, kullanabileceğiniz temel türler kümesi gösterilmektedir:

temel tür Açıklama
boolean Bir boole değeri
date RFC 3339'un 5.6. bölümünde tanımlanan tam tarih
dateTime RFC 3339'da tanımlanan tarih-saat
double IEEE 8 baytlık kayan nokta
duration ISO 8601 biçiminde bir süre
float IEEE 4 baytlık kayan nokta
integer İmzalı 4 baytlık tamsayı
long İmzalı 8 baytlık tamsayı
string UTF8 dizesi
time RFC 3339'un 5.6. bölümünde tanımlandığı gibi tam zamanlı

Aşağıdaki kod parçacığındaschema, alandaki türü kullanan double örnek bir telemetri tanımı gösterilmektedir:

{
  "@type": "Telemetry",
  "name": "temperature",
  "displayName": "Temperature",
  "schema": "double"
}

Karmaşık veri türleri

Karmaşık veri türleri dizi, numaralandırma, eşleme, nesne veya jeo-uzamsal türlerden biridir.

Diziler

Dizi, tüm öğelerin aynı türde olduğu dizinlenebilir bir veri türüdür. Öğe türü ilkel veya karmaşık bir tür olabilir.

Aşağıdaki kod parçacığı, schema alandaki türünü kullanan Array örnek bir telemetri tanımı gösterir. Dizinin öğeleri boole'lardır:

{
  "@type": "Telemetry",
  "name": "ledState",
  "schema": {
    "@type": "Array",
    "elementSchema": "boolean"
  }
}

Listelemeler

Numaralandırma, değerlerle eşleyen adlandırılmış etiketler kümesine sahip bir türü açıklar. Değerler tamsayılar veya dizeler olabilir, ancak etiketler her zaman dizedir.

Aşağıdaki kod parçacığı, schema alandaki türünü kullanan Enum örnek bir telemetri tanımı gösterir. Numaralandırmadaki değerler tamsayılardır:

{
  "@type": "Telemetry",
  "name": "state",
  "schema": {
    "@type": "Enum",
    "valueSchema": "integer",
    "enumValues": [
      {
        "name": "offline",
        "displayName": "Offline",
        "enumValue": 1
      },
      {
        "name": "online",
        "displayName": "Online",
        "enumValue": 2
      }
    ]
  }
}

Haritalar

Eşleme, tüm değerlerin aynı türe sahip olduğu anahtar-değer çiftlerine sahip bir türdür. Bir eşlemedeki anahtar bir dize olmalıdır. Bir eşlemedeki değerler, başka bir karmaşık tür de dahil olmak üzere herhangi bir tür olabilir.

Aşağıdaki kod parçacığı, schema alandaki türünü kullanan Map örnek bir özellik tanımını gösterir. Eşlemedeki değerler dizelerdir:

{
  "@type": "Property",
  "name": "modules",
  "writable": true,
  "schema": {
    "@type": "Map",
    "mapKey": {
      "name": "moduleName",
      "schema": "string"
    },
    "mapValue": {
      "name": "moduleState",
      "schema": "string"
    }
  }
}

Nesneler

Nesne türü adlandırılmış alanlardan oluşur. Nesne eşlemesindeki alanların türleri ilkel veya karmaşık türler olabilir.

Aşağıdaki kod parçacığı, schema alandaki türünü kullanan Object örnek bir telemetri tanımı gösterir. nesnesindeki alanlar , durationve string türleridirdateTime:

{
  "@type": "Telemetry",
  "name": "monitor",
  "schema": {
    "@type": "Object",
    "fields": [
      {
        "name": "start",
        "schema": "dateTime"
      },
      {
        "name": "interval",
        "schema": "duration"
      },
      {
        "name": "status",
        "schema": "string"
      }
    ]
  }
}

Jeo-uzamsal türler

DTDL, coğrafi veri yapılarını modellemek için GeoJSON tabanlı bir dizi jeo-uzamsal tür sağlar: point, multiPoint, lineString, multiLineString, polygon, ve multiPolygon. Bu türler dizilerin, nesnelerin ve numaralandırmaların önceden tanımlanmış iç içe yapılarıdır.

Aşağıdaki kod parçacığındaschema, alandaki türü kullanan point örnek bir telemetri tanımı gösterilmektedir:

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

Jeo-uzamsal türler dizi tabanlı olduğundan, şu anda özellik tanımlarında kullanılamaz.

Anlam türleri

Bir özelliğin veya telemetri tanımının veri türü, bir cihazın bir hizmetle değiş tokuş yaptığı verilerin biçimini belirtir. Anlam türü, bir uygulamanın bir değerin nasıl işleneceğini veya görüntüleneceğini belirlemek için kullanabileceği telemetri ve özellikler hakkında bilgi sağlar. Her semantik türün bir veya daha fazla ilişkili birimi vardır. Örneğin, santigrat ve fahrenheit, sıcaklık semantik türü için birimlerdir. IoT Central panoları ve analizi, telemetri veya özellik değerlerinin ve görüntüleme birimlerinin nasıl çizileceğini belirlemek için anlamsal tür bilgilerini kullanabilir. Anlamsal türleri okumak için model ayrıştırıcısını nasıl kullanabileceğinizi öğrenmek için bkz . Dijital ikizler modeli ayrıştırıcısını anlama.

Aşağıdaki kod parçacığında semantik tür bilgilerini içeren örnek bir telemetri tanımı gösterilmektedir. Semantik tür Temperature diziye @type eklenir ve unit değer, degreeCelsius anlam türü için geçerli birimlerden biridir:

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

Localization (Yerelleştirme)

IoT Central gibi uygulamalar, modeldeki bilgileri kullanarak IoT Tak Çalıştır bir cihazla değiştirilen verilerin çevresinde dinamik olarak bir kullanıcı arabirimi oluşturur. Örneğin, bir panodaki kutucuklar telemetri, özellikler ve komutlar için adları ve açıklamaları görüntüleyebilir.

İsteğe bağlı description ve displayName modeldeki alanlar, kullanıcı arabiriminde kullanılmak üzere tasarlanan dizeleri tutar. Bu alanlar, bir uygulamanın yerelleştirilmiş kullanıcı arabirimini işlemek için kullanabileceği yerelleştirilmiş dizeleri barındırabilir.

Aşağıdaki kod parçacığında yerelleştirilmiş dizeler içeren örnek bir sıcaklık telemetri tanımı gösterilmektedir:

{
  "@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"
}

Yerelleştirilmiş dizeler eklemek isteğe bağlıdır. Aşağıdaki örnekte yalnızca tek bir varsayılan dil vardır:

{
  "@type": [
    "Telemetry",
    "Temperature"
  ],
  "description": "Temperature in degrees Celsius.",
  "displayName": "Temperature",
  "name": "temperature",
  "schema": "double",
  "unit": "degreeCelsius"
}

Yaşam döngüsü ve araçlar

Cihaz modeli için dört yaşam döngüsü aşaması yazar, yayımlama, kullanım ve sürümdür:

Yazma

DTML cihaz modelleri, metin düzenleyicisinde oluşturabileceğiniz JSON belgeleridir. Ancak IoT Central'da bir DTML modeli oluşturmak için cihaz şablonu GUI ortamını kullanabilirsiniz. IoT Central'da yapabilecekleri:

  • Özellikleri, telemetriyi ve komutları tanımlayan arabirimler oluşturun.
  • Birden çok arabirimi bir araya getirmek için bileşenleri kullanın.
  • Arabirimler arasında devralma ilişkilerini tanımlayın.
  • DTML model dosyalarını içeri ve dışarı aktarma.

Daha fazla bilgi edinmek için bkz . Azure IoT Central uygulamanızda yeni bir IoT cihaz türü tanımlama.

VS Code için bir DTDL yazma uzantısı vardır.

VS Code için DTDL uzantısını yüklemek için Visual Studio Code için DTDL düzenleyicisi'ne gidin. DTDL'yi VS Code'daki Uzantılar görünümünde de arayabilirsiniz.

Uzantıyı yüklediğinizde, VS Code'da DTDL model dosyaları yazmanıza yardımcı olması için bu uzantıyı kullanın:

  • Uzantı, aşağıdaki ekran görüntüsünde gösterildiği gibi hataları vurgulayarak DTDL model dosyalarında söz dizimi doğrulaması sağlar:

    VS Code'da DTDL modeli doğrulamayı gösteren ekran görüntüsü.

  • DTDL modellerini düzenlerken intellisense ve otomatik tamamlama kullanın:

    VS Code'da DTDL modelleri için intellisense'i gösteren ekran görüntüsü.

  • Yeni bir DTDL arabirimi oluşturun. DTDL: Arabirim Oluştur komutu yeni bir arabirime sahip bir JSON dosyası oluşturur. Arabirim örnek telemetri, özellik ve komut tanımlarını içerir.

Kullanma

IoT Central gibi uygulamalar cihaz modellerini kullanır. IoT Central'da model, cihazın özelliklerini açıklayan cihaz şablonunun bir parçasıdır. IoT Central, cihaz şablonunu kullanarak panolar ve analizler de dahil olmak üzere cihaz için dinamik olarak bir kullanıcı arabirimi oluşturur.

Not

IoT Central, DTDL dilinin bazı uzantılarını tanımlar. Daha fazla bilgi edinmek için bkz . IoT Central uzantısı.

Özel bir çözüm, modeli uygulayan bir cihazın özelliklerini anlamak için dijital ikiz modeli ayrıştırıcısını kullanabilir. Daha fazla bilgi edinmek için bkz. IoT çözümünde IoT Tak Çalıştır modelleri kullanma.

Sürüm

Modelleri kullanan cihazların ve sunucu tarafı çözümlerinin çalışmaya devam etmesini sağlamak için yayımlanan modeller sabittir.

DTMI, bir modelin birden çok sürümünü oluşturmak için kullanabileceğiniz bir sürüm numarası içerir. Cihazlar ve sunucu tarafı çözümleri, kullanmak üzere tasarlanmış oldukları belirli sürümü kullanabilir.

IoT Central, cihaz modelleri için daha fazla sürüm oluşturma kuralı uygular. IoT Central'da bir cihaz şablonunu ve modelini sürüme eklerseniz, cihazları önceki sürümlerden sonraki sürümlere geçirebilirsiniz. Ancak, geçirilen cihazlar üretici yazılımı yükseltmesi olmadan yeni özellikleri kullanamaz. Daha fazla bilgi için bkz . Cihaz şablonunu düzenleme.

Yayımlama

Şubat 2024 itibarıyla Azure Sertifikalı Cihaz programı kullanımdan kaldırılmıştır. Bu nedenle Microsoft artık Azure IoT tak çalıştır modelleri deposunaDTDL modellerinin gönderimlerini kabul etmemektedir.

Kendi model deponuzu ayarlamak istiyorsanız Azure IoT tak çalıştır modelleri araçları deposunu kullanabilirsiniz. Bu depo DTDL modellerini doğrulayan, içeri aktarabilen ve genişletebilen CLI aracının kodunu dmr-client içerir. Bu araç, cihaz modeli depo kurallarına uyan model depolarını dizine almanızı da sağlar.

Sınırlar ve kısıtlamalar

Aşağıdaki listede modellerle ilgili bazı temel kısıtlamalar ve sınırlar özetlemektedir:

  • Şu anda diziler, haritalar ve nesneler için maksimum derinlik beş düzeydir.
  • Özellik tanımlarında dizileri kullanamazsınız.
  • Arabirimleri 10 düzey derinliğe genişletebilirsiniz.
  • Bir arabirim en fazla iki diğer arabirimi genişletebilir.
  • Bir bileşen başka bir bileşen içeremez.

Sonraki adımlar

Artık cihaz modelleme hakkında bilgi edindiğinize göre, aşağıda daha fazla kaynak bulabilirsiniz: