Digitální dvojčata a jejich graf dvojčat

Tento článek popisuje, co jsou digitální dvojčata v kontextu služby Azure Digital Twins a jak můžou vztahy mezi nimi tvořit graf dvojčat. V řešení Azure Digital Twins jsou entity ve vašem prostředí reprezentovány digitálními dvojčaty. Digitální dvojče je instance jednoho z vašich vlastních definovaných modelů. Můžete ho propojit s dalšími digitálními dvojčaty prostřednictvím relací , které vytvoří graf dvojčete: tento graf dvojčete představuje reprezentaci celého prostředí.

Tip

Azure Digital Twins označuje tuto službu Azure jako celek. Digitální dvojčata nebo jen dvojčata odkazují na jednotlivé uzly dvojčat uvnitř vaší instance služby.

Digitální dvojčata

Před vytvořením digitálního dvojčete v instanci Služby Azure Digital Twins musíte mít nahraný model do služby. Model popisuje sadu vlastností a relací, které může mít konkrétní dvojče mimo jiné. Typy informací, které jsou definovány v modelu, naleznete v tématu Vlastní modely.

Po vytvoření a nahrání modelu může klientská aplikace vytvořit instanci typu. Tato instance je digitální dvojče. Například po vytvoření modelu Floor můžete vytvořit jedno nebo několik digitálních dvojčat, která používají tento typ (například dvojče Typu podlahy s názvem GroundFloor, jiný s názvem Floor2 atd.).

Poznámka:

Digitální dvojčata ve službě Azure Digital Twins se liší od dvojčat zařízení ve službě IoT Hub. Dvojčata zařízení služby IoT Hub se často zaměřují na popis aspektů a možností samotného zařízení, zatímco dvojčata ve službě Azure Digital Twins jsou koncepční reprezentací, která můžou ukládat přehledy definované uživatelem o zařízení nebo mnoha souvisejících zařízeních.

Zařízení ve službě IoT Hub je možné připojit k Azure Digital Twins jako součást komplexního řešení , které představuje vaše zařízení napříč službami.

Relace: graf digitálních dvojčat

Dvojčata jsou propojená s grafem dvojčat podle jejich vztahů. Relace, které může mít dvojče, jsou definovány jako součást jeho modelu.

Model Floor může například definovat contains vztah, který cílí na dvojčata typu Místnost. Díky této definici vám Azure Digital Twins umožní vytvářet contains relace z libovolného dvojčete podlahy k libovolnému dvojčeti místnosti (včetně dvojčat, která jsou podtypů místnosti).

Výsledkem tohoto procesu je sada uzlů (digitálních dvojčat) připojených přes hrany (jejich vztahy) v grafu.

Vizualizace

Azure Digital Twins Explorer je vizuální nástroj pro zkoumání dat v grafu Služby Azure Digital Twins. Průzkumníka můžete použít k zobrazení, dotazování a úpravám modelů, dvojčat a relací.

Další informace o nástroji Azure Digital Twins Explorer najdete v Průzkumníku služby Azure Digital Twins. Podrobný postup použití jeho funkcí najdete v tématu Použití Průzkumníka služby Azure Digital Twins.

Vizualizace vypadá takto:

Screenshot of Azure Digital Twins Explorer showing sample models and twins.

Vytvoření pomocí rozhraní API

Tato část ukazuje, jak vypadá, jak vytvořit digitální dvojčata a vztahy z klientské aplikace. Obsahuje příklady sady .NET SDK , které používají rozhraní API Služby DigitalTwins, a poskytuje tak další kontext toho, co se děje v jednotlivých těchto konceptech.

Vytvoření digitálních dvojčat

Níže je fragment kódu klienta, který používá rozhraní API DigitalTwins k vytvoření instance dvojčete typu Room s definovanou twinId během vytváření instance.

Vlastnosti dvojčete můžete inicializovat při jeho vytvoření nebo je nastavit později. Pokud chcete vytvořit dvojče s inicializovanými vlastnostmi, vytvořte dokument JSON, který poskytuje potřebné inicializační hodnoty.

// 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("temperature")]
    public double Temperature { get; set; }

    [JsonPropertyName("humidity")]
    public double 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
        {
            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 value: {response.Value.Temperature}");
    }
}

Můžete také použít pomocnou třídu volanou BasicDigitalTwin k ukládání polí vlastností do objektu "dvojčete" přímo, jako alternativu k použití slovníku. Další informace o pomocné třídě a příkladech jejího použití naleznete v tématu Vytvoření digitálního dvojčete.

Poznámka:

I když se vlastnosti dvojčete považují za volitelné, a proto není nutné inicializovat žádné komponenty dvojčete, je potřeba při vytvoření dvojčete nastavit žádné komponenty . Mohou být prázdné objekty, ale samotné komponenty musí existovat.

Vytvoření vztahů

Tady je příklad klientského kódu, který pomocí rozhraní API DigitalTwins sestaví relaci z jednoho digitálního dvojčete ("zdrojového" dvojčete) do jiného digitálního dvojčete (cílové dvojče).

public async Task CreateRelationship(DigitalTwinsClient client)
{
    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);
}

Hromadné vytváření dvojčat a relací pomocí rozhraní API pro import úloh

Pomocí rozhraní API importu úloh můžete nahrát mnoho dvojčat a relací do jednoho volání rozhraní API. Dvojčata a relace vytvořené pomocí tohoto rozhraní API můžou volitelně zahrnovat inicializaci jejich vlastností. Podrobné pokyny a příklady, které používají toto rozhraní API, najdete v pokynech k hromadnému importu dvojčat a relací.

Odstranění prvků grafu

Pokud chcete odstranit konkrétní dvojčata a relace, použijte rozhraní API DigitalTwins Delete a DigitalTwins DeleteRelationship (k dispozici také jako příkazy rozhraní příkazového řádku a volání sady SDK).

Pokud chcete odstranit všechny modely, dvojčata a relace v instanci najednou, použijte rozhraní API pro odstranění úloh.

Reprezentace json elementů grafu

Data digitálního dvojčete i data relací se ukládají ve formátu JSON, což znamená, že při dotazování grafu dvojčete v instanci Služby Azure Digital Twins bude výsledkem reprezentace digitálních dvojčat a relací, které jste vytvořili.

Formát JSON digitálního dvojčete

Když je reprezentovaný jako objekt JSON, digitální dvojče zobrazí následující pole:

Název pole Popis
$dtId Řetězec zadaný uživatelem představující ID digitálního dvojčete
$etag Standardní pole HTTP přiřazené webovým serverem
$metadata.$model ID rozhraní modelu, které charakterizuje toto digitální dvojče
$metadata.<property-name> Další informace o metadatech o vlastnostech digitálního dvojčete
$metadata.<property-name>.lastUpdateTime Zpráva o aktualizaci vlastnosti zpracovala služba Azure Digital Twins datum a čas.
$metadata.<property-name>.sourceTime Volitelná zapisovatelná vlastnost představující časové razítko při aktualizaci vlastnosti byla pozorována v reálném světě. Tuto vlastnost lze zapsat pouze pomocí verze 2022-05-31 rozhraní API a sad SDK služby Azure Digital Twins a hodnota musí být v souladu s formátem data a času ISO 8601. Další informace o tom, jak tuto vlastnost aktualizovat, naleznete v tématu Aktualizace zdrojového času vlastnosti.
<property-name> Hodnota vlastnosti ve formátu JSON (string, typ čísla nebo objekt)
$relationships Adresa URL cesty ke kolekci relací. Toto pole chybí, pokud digitální dvojče nemá žádné odchozí relace hrany.
<component-name> Objekt JSON obsahující hodnoty a metadata komponenty, podobně jako u kořenového objektu. Tento objekt existuje i v případě, že komponenta nemá žádné vlastnosti.
<component-name>.$metadata Informace o metadatech pro komponentu, podobně jako u kořenové úrovně $metadata
<component-name>.<property-name> Hodnota vlastnosti komponenty ve formátu JSON (string, typ čísla nebo objekt)

Tady je příklad digitálního dvojčete formátovaného jako objekt JSON. Toto dvojče má dvě vlastnosti, vlhkost a teplotu a komponentu s názvem Termostat.

{
    "$dtId": "myRoomID",
    "$etag": "W/\"8e6d3e89-1166-4a1d-9a99-8accd8fef43f\"",
    "$metadata": {
        "$model": "dtmi:example:Room23;1",
        "Humidity": {
          "lastUpdateTime": "2021-11-30T18:47:53.7648958Z"
        },
        "Temperature": {
          "lastUpdateTime": "2021-11-30T18:47:53.7648958Z"
        }
    },
    "Humidity": 55,
    "Temperature": 35,
    "Thermostat": {
        "$metadata": {}
    }

Formát JSON relace

Při znázornění objektu JSON se v relaci z digitálního dvojčete zobrazí následující pole:

Název pole Popis
$relationshipId Řetězec zadaný uživatelem představující ID této relace. Tento řetězec je jedinečný v kontextu zdrojového digitálního dvojčete, což také znamená, že sourceId + relationshipId je jedinečný v kontextu instance Služby Azure Digital Twins.
$etag Standardní pole HTTP přiřazené webovým serverem
$sourceId ID zdrojového digitálního dvojčete
$targetId ID cílového digitálního dvojčete
$relationshipName Název relace
<property-name> [Volitelné] Hodnota vlastnosti této relace ve formátu JSON (string, typ čísla nebo objekt)

Tady je příklad relace formátované jako objekt JSON:

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

Další kroky

Zjistěte, jak spravovat prvky grafu pomocí rozhraní API služby Azure Digital Twin:

Další informace o dotazování grafu dvojčat Azure Digital Twins najdete v následujících informacích: