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,
;2
gibi 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:
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:
Model kimliği, aşağıdaki ekran görüntüsünde gösterildiği gibi bir cihaz ikizi özelliğinde depolanır:
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 thermostat2
olarak 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:
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:
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:
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 thermostat
baseDevice
model gösterilmektedir. Arabirimin baseDevice
, kendisini başka bir arabirimden devralan bir bileşeni vardır:
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 , duration
ve 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. Anlam türlerini okumak için model ayrıştırıcısını nasıl kullanabileceğinizi öğrenmek için bkz . Digital Twins model 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 DTDL v2 ve DTDL v3'leri destekleyen 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ükledikten sonra 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:
DTDL modellerini düzenlerken intellisense ve otomatik tamamlama kullanın:
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 Digital Twins model 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 deposuna DTDL 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.
Digital Twins model ayrıştırıcısını anlama
Digital Twins Tanım Dili (DTDL), DTDL Belirtimi'nde açıklanmıştır. Kullanıcılar DTDL v2 veya v3 modelini doğrulamak ve sorgulamak için Digital Twins Model Ayrıştırıcı NuGet paketini kullanabilir. DTDL modeli birden çok dosyada tanımlanabilir.
DTDL model ayrıştırıcısını yükleme
Ayrıştırıcı, NuGet.org kimliğiyle kullanılabilir: DTDLParser. Ayrıştırıcıyı yüklemek için Visual Studio'daki veya CLI'daki dotnet
gibi uyumlu bir NuGet paket yöneticisi kullanın.
dotnet add package DTDLParser
Not
Yazarken ayrıştırıcı sürümü olur 1.0.52
.
Modeli doğrulamak ve incelemek için ayrıştırıcıyı kullanma
DTDLParser, aşağıdakileri yapmak için kullanabileceğiniz bir kitaplıktır:
- Bir veya daha fazla modelin v2 veya v3 dil belirtimlerine göre geçerli olup olmadığını belirleyin.
- Belirli modelleme hatalarını belirleyin.
- Model içeriğini inceleyin.
Bir model, JSON dosyalarında açıklanan bir veya daha fazla arabirimden oluşabilir. Ayrıştırıcıyı kullanarak model tanımlayan tüm dosyaları yükleyebilir ve ardından dosyalar arasındaki başvurular da dahil olmak üzere tüm dosyaları bir bütün olarak doğrulayabilirsiniz.
.NET deposu için DTDLParser, ayrıştırıcının kullanımını gösteren aşağıdaki örnekleri içerir:
- DTDLParserResolveSample , dış başvurularla bir arabirimi ayrıştırma, istemciyi kullanarak bağımlılıkları çözmeyi
Azure.IoT.ModelsRepository
gösterir. - DTDLParserJSInteropSample , .NET JSInterop kullanarak tarayıcıda çalışan JavaScript'ten DTDL Ayrıştırıcı'nın nasıl kullanılacağını gösterir.
.NET deposu için DTDLParser, modelleri doğrulamak ve incelemek için ayrıştırıcıyı nasıl kullanacağınızı gösteren bir öğretici koleksiyonu da içerir.
Model ayrıştırıcı API'si, DTDL modellerine bağlı görevleri otomatikleştirmeye veya doğrulamaya yönelik birçok senaryo sağlar. Örneğin, modeldeki bilgilerden dinamik olarak bir kullanıcı arabirimi oluşturabilirsiniz.
Sonraki adımlar
Cihaz modelleme hakkında bilgi edindiğinize göre, aşağıda daha fazla kaynak bulabilirsiniz: