Dijital ikizler ve ikiz grafları

Bu makalede dijital ikizlerin veri kaynağı bağlamındaki Azure Digital Twins ve aralarındaki ilişkilerin ikiz grafı oluşturma şekli açıklanmıştır. Bir Azure Digital Twins ortamındaki varlıklar dijital ikizlerle temsil eder. Dijital ikiz, özel tanımlı modellerinden birinin örneğidir. İkiz grafı oluşturmak için ilişkiler aracılığıyla diğer dijital ikizlere bağlanabilir: Bu ikiz grafı, tüm ortamınızı temsil eder.

İpucu

"Azure Digital Twins" bu Azure hizmetini bir bütün olarak ifade eder. "Dijital ikizler" veya yalnızca "ikizler", hizmet örneğinizin içindeki tek tek ikiz düğümlerini ifade eder.

Digital Twins

Azure Digital Twins örneğinize bir dijital ikiz oluşturamadan önce hizmete bir model yüklensin. Model, belirli bir ikizin sahip olduğu özellikler, telemetri iletileri ve ilişkiler gibi özellikleri açıklar. Bir modelde tanımlanan bilgi türleri için bkz. Özel modeller.

Modeli oluşturduk ve karşıya yükledikten sonra istemci uygulamanız türünde bir örnek oluşturabilir. Bu örnek bir dijital ikizdir. Örneğin, Floor modeli oluşturduklarından sonra bu türü kullanan bir veya birden çok dijital ikiz oluşturabilirsiniz (Floor2 adlı başka bir zemin türü ikiz gibi).

Not

Azure dijital TWINS 'deki dijital TWINS IoT Hub, cihaz TWINS'den farklıdır. IoT Hub cihaz ikgörüler genellikle bir cihazın kendi yönlerini ve yeteneklerini tanımlamaya odaklanırken, Azure dijital TWINS 'deki TWINS, bir cihaz ya da birçok ilgili cihaz hakkında Kullanıcı tanımlı Öngörüler depolayabilen daha fazla kavramsal temsildir.

Cihaz TWINS IoT Hub, hizmetler genelinde cihazları temsil eden bir uçtan uca çözümün parçası olarak Azure dijital TWINS 'e bağlanabilir.

İlişkiler: dijital ikizlerin grafiği

İkizler, ilişkileriyle bir ikiz grafı içine bağlanır. İkizin sahip olduğu ilişkiler, modelin bir parçası olarak tanımlanır.

Örneğin Floor modeli, Oda türünde ikizleri hedef alan bir ilişki tanımlayabilir. Bu tanım ile Azure Digital Twins, herhangi bir Kat ikizi ile herhangi bir Oda ikizi (Oda alt türüne sahip ikizler dahil) arasında ilişkiler oluşturmanızı sağlar.

Bu sürecin sonucu, bir grafikte kenarlar (ilişkileri) aracılığıyla bağlanan düğümler (dijital ikizler) kümesidir.

Görselleştirme

Azure Digital Twins Explorer, veri grafiğinize veri keşfetmeye Azure Digital Twins aracıdır. Modellerinizi, ikizlerinizi ve ilişkilerinizi görüntülemek, sorgulamak ve düzenlemek için gezgini kullanabilirsiniz.

Araç hakkında bilgi Azure Digital Twins Explorer için bkz. Azure Digital Twins Explorer. Özelliklerini kullanma hakkında ayrıntılı adımlar için bkz. Azure Digital Twins Explorer.

Görselleştirme şu şekildedir:

Örnek modelleri Azure Digital Twins Explorer ikizleri gösteren ekran görüntüsü.

API'lerle oluşturma

Bu bölümde, bir istemci uygulamasından dijital ikizler ve ilişkiler oluşturmanın nasıl bir şey olduğu göstermektedir. Bu kavramların her biri içinde neler olduğu hakkında daha fazla bağlam sağlamak için DigitalTwinsAPI'lerini kullanan .NET kod örnekleri içerir.

Dijital ikizleri oluşturma

Aşağıda digitaltwins API'lerini kullanarak örnekleme sırasında tanımlanan bir ile Oda türünde bir ikiz örneği olarak kullanan bir istemci kodu twinId parçacığı verilmiştir.

Bir ikiz oluşturulduğunda özelliklerini başlatabilirsiniz veya daha sonra bunları ayarlayabilirsiniz. Başlatılan özelliklere sahip bir ikiz oluşturmak için, gerekli başlatma değerlerini sağlayan bir JSON belgesi oluşturun.

// Define a custom model type for the twin to be created

internal class CustomDigitalTwin
{
    [JsonPropertyName(DigitalTwinsJsonPropertyNames.DigitalTwinId)]
    public string Id { get; set; }

    [JsonPropertyName(DigitalTwinsJsonPropertyNames.DigitalTwinETag)]
    public string ETag { get; set; }

    [JsonPropertyName(DigitalTwinsJsonPropertyNames.DigitalTwinMetadata)]
    public MyCustomDigitalTwinMetadata Metadata { get; set; } = new MyCustomDigitalTwinMetadata();

    [JsonPropertyName("temperature")]
    public double Temperature { get; set; }

    [JsonPropertyName("humidity")]
    public double Humidity{ get; set; }
}

internal class MyCustomDigitalTwinMetadata
{
    [JsonPropertyName(DigitalTwinsJsonPropertyNames.MetadataModel)]
    public string ModelId { get; set; }

    [JsonPropertyName("temperature")]
    public DigitalTwinPropertyMetadata Temperature { get; set; }

    [JsonPropertyName("humidity")]
    public DigitalTwinPropertyMetadata Humidity { get; set; }
}

// Initialize properties and create the twin
public class TwinOperationsCreateTwin
{
    public async Task CreateTwinAsync(DigitalTwinsClient client)
    {
        // Initialize the twin properties
        var myTwin = new CustomDigitalTwin
        {
            Metadata = { ModelId = "dtmi:example:Room;1" },
            Temperature = 25.0,
            Humidity = 50.0,
        };

        // Create the twin
        const string twinId = "<twin-ID>";
        Response<CustomDigitalTwin> response = await client.CreateOrReplaceDigitalTwinAsync(twinId, myTwin);
        Console.WriteLine($"Temperature last updated on {response.Value.Metadata.Temperature.LastUpdatedOn}");
    }
}

Özellik alanlarını sözlük kullanmaya alternatif olarak bir "ikiz" nesnesinde daha doğrudan depolamak için adlı bir yardımcı BasicDigitalTwin sınıf da kullanabilirsiniz. Yardımcı sınıfı ve kullanımına ilişkin örnekler hakkında daha fazla bilgi için Nasıl edebilirim: Dijital ikizleri yönetme bölümünün Dijital ikiz oluşturma bölümüne bakın.

Not

İkiz özellikleri isteğe bağlı olarak kabul edilir ve bu nedenle başlatılması zorunlu değildir, ancak ikiz oluşturulduğunda ikizin tüm bileşenlerinin ayarlanmış olması gerekir. Bunlar boş nesneler olabilir ancak bileşenlerin de mevcut olması gerekir.

İlişki oluşturma

Burada DigitalTwins API'lerini kullanarak bir dijital ikizden ("kaynak" ikiz) başka bir dijital ikizle ("hedef" ikiz) bir ilişki oluşturmak için kullanan bazı örnek istemci kodu veacağız.

var rel = new BasicRelationship
{
    TargetId = "myTargetTwin",
    Name = "contains", // a relationship with this name must be defined in the model
    // Initialize properties
    Properties =
    {
        { "active", true },
    },
};
await client.CreateOrReplaceRelationshipAsync("mySourceTwin", "rel001", rel);

Graf öğelerinin JSON gösterimleri

Dijital ikiz verileri ve ilişki verileri hem JSON biçiminde depolanır, yani Azure Digital Twins örneğinizin ikiz grafiğini sorgularken elde edilen sonuç, dijital ikizlerin ve oluşturduğunuz ilişkilerin JSON gösterimi olur.

Dijital ikiz JSON biçimi

Bir JSON nesnesi olarak temsil edilen dijital ikiz aşağıdaki alanları görüntüler:

Alan adı Description
$dtId Dijital ikizin kimliğini temsil eden kullanıcı tarafından sağlanan dize
$etag Web sunucusu tarafından atanan standart HTTP alanı
$conformance Bu dijital ikizin uyumluluk durumunu içeren bir enum (uyumlu, uyumlu olmayan, bilinmeyen)
<property-name> JSON (, sayı türü veya string nesne) içinde bir özelliğin değeri
$relationships İlişkiler koleksiyonunun yolunun URL'si. Dijital ikizde giden ilişki kenarı yoksa bu alan yoktur.
$metadata.$model [İsteğe bağlı] Bu dijital ikizi ifade etmek için model arabiriminin kimliği
$metadata.<property-name>.desiredValue [Yalnızca yazılabilir özellikler için] Belirtilen özelliğin istenen değeri
$metadata.<property-name>.desiredVersion [Yalnızca yazılabilir özellikler için] İstenen değerin sürümü
$metadata.<property-name>.ackVersion Dijital ikizi uygulayan cihaz uygulaması tarafından kabul eden sürüm
$metadata.<property-name>.ackCode [Yalnızca yazılabilir özellikler için] Dijital ack ikizi uygulayan cihaz uygulaması tarafından döndürülen kod
$metadata.<property-name>.ackDescription [Yalnızca yazılabilir özellikler için] Dijital ack ikizi uygulayan cihaz uygulaması tarafından döndürülen açıklama
<component-name> Kök nesnenin özelliklerine benzer şekilde bileşenin özellik değerlerini ve meta verilerini içeren bir JSON nesnesi. Bileşen özelliklerine sahip olsa bile bu nesne var olur.
<component-name>.<property-name> Bileşenin özelliğinin JSON ( , sayı türü string veya nesne) değeri
<component-name>.$metadata Kök düzeyine benzer şekilde bileşenin meta veri bilgileri $metadata

JSON nesnesi olarak biçimlendirilmiş bir dijital ikiz örneği:

{
  "$dtId": "Cafe",
  "$etag": "W/\"e59ce8f5-03c0-4356-aea9-249ecbdc07f9\"",
  "Temperature": 72,
  "Location": {
    "x": 101,
    "y": 33
  },
  "component": {
    "TableOccupancy": 1,
    "$metadata": {
      "TableOccupancy": {
        "desiredValue": 1,
        "desiredVersion": 3,
        "ackVersion": 2,
        "ackCode": 200,
        "ackDescription": "OK"
      }
    }
  },
  "$metadata": {
    "$model": "dtmi:com:contoso:Room;1",
    "Temperature": {
      "desiredValue": 72,
      "desiredVersion": 5,
      "ackVersion": 4,
      "ackCode": 200,
      "ackDescription": "OK"
    },
    "Location": {
      "desiredValue": {
        "x": 101,
        "y": 33,
      },
      "desiredVersion": 8,
      "ackVersion": 8,
      "ackCode": 200,
      "ackDescription": "OK"
    }
  }
}

İlişki JSON biçimi

JSON nesnesi olarak temsil edilen dijital ikiz ilişkisi aşağıdaki alanları görüntüler:

Alan adı Description
$relationshipId Bu ilişkinin kimliğini temsil eden, kullanıcı tarafından sağlanan bir dize. Bu dize, kaynak dijital ikiz bağlamında benzersizdir ve bu da kaynak dijital ikiz örneğinin bağlamında sourceId + relationshipId Azure Digital Twins gelir.
$etag Web sunucusu tarafından atanan standart HTTP alanı
$sourceId Kaynak dijital ikizin kimliği
$targetId Hedef dijital ikizin kimliği
$relationshipName İlişkinin adı
<property-name> [İsteğe bağlı] JSON ( , sayı türü veya string nesne) içinde bu ilişkinin bir özelliğinin değeri

JSON nesnesi olarak biçimlendirilmiş bir ilişki örneği:

{
  "$relationshipId": "relationship-01",
  "$etag": "W/\"506e8391-2b21-4ac9-bca3-53e6620f6a90\"",
  "$sourceId": "GroundFloor",
  "$targetId": "Cafe",
  "$relationshipName": "contains",
  "startDate": "2020-02-04"
}

Sonraki adımlar

Azure Digital Twin API'leriyle graf öğelerini yönetmeye bakın:

Veya bilgi için ikizi grafı Azure Digital Twins sorgulama hakkında bilgi edinebilirsiniz: