Digitální vlákna a jejich nevlákenný graf
Tento článek popisuje, co jsou digitální vlákna v kontextu digitálních vláken Azure, a jak mohou vztahy mezi nimi tvořit dvojitou graf. V řešení digitálních vláken Azure se entity ve vašem prostředí reprezentují pomocí digitálních vláken. Digitální vlákna je instance jednoho z vašich vlastních definovaných modelů. Dá se připojit k ostatním digitálním závislostem prostřednictvím vztahů , které tvoří dvojitou graf: Tento neřízený graf je reprezentace celého prostředí.
Tip
"Digitální vlákna Azure" odkazuje na tuto službu Azure jako celek. "Digitální vlákna" nebo pouze "vlákna" odkazují na jednotlivé zdvojené uzly v rámci vaší instance služby.
Digitální dvojčata
Než budete moct vytvořit digitální dvojitou hodnotu v instanci digitálních vláken Azure, musíte mít do této služby nahraný model . Model popisuje sadu vlastností, zpráv telemetrie a vztahy, které mohou mít konkrétní vlákna, mimo jiné. Typy informací, které jsou definovány v modelu, naleznete v tématu Custom Models.
Po vytvoření a nahrání modelu může klientská aplikace vytvořit instanci typu. Tato instance je typu digitálního vlákna. Například po vytvoření modelu podlahy můžete vytvořit jednu nebo několik digitálních vláken, která používají tento typ (například dvojitou hodnotu typu podlah-Floor s názvem GroundFloor, další s názvem Floor2 atd.).
Poznámka
Digitální vlákna v digitálních prozdvojeních Azure se liší od nevláken zařízení v IoT Hub. IoT Hub se často zaměřuje na popis aspektů a schopností samotného zařízení, zatímco vlákna v digitálních prostředcích Azure jsou více koncepční reprezentace, která může ukládat uživatelsky definované přehledy o zařízení nebo mnoha souvisejících zařízeních.
V rámci uceleného řešení, které představuje zařízení napříč službami, je možné v rámci komplexního řešení připojit k digitálním událostem služby Azure IoT Hubch vláken zařízení.
Relace: graf digitálních vláken
Vlákna se připojují k dvojitým grafům podle jejich vztahů. Vztahy, které mohou být zdvojeny, jsou definovány jako součást modelu.
Modelová podlaha například může definovat relaci, která cílí na vlákna typu Room. V této definici vám digitální vlákna Azure umožní vytvořit obsahuje vztahy z libovolného vlákna na podlaze pro všechny místnosti s dvojitou místností (včetně vláken, která jsou podtypy místnosti).
Výsledkem tohoto procesu je sada uzlů (digitální vlákna) propojená přes hrany (jejich vztahy) v grafu.
Vizualizace
Azure Digital Twins Explorer je vizuální nástroj pro zkoumání dat ve vašem Azure Digital Twins grafu. 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 tématu Azure Digital Twins Explorer. Podrobné pokyny k používání jeho funkcí najdete v tématu Použití Azure Digital Twins Explorer.
Vizualizace vypadá takhle:
Vytvoření pomocí rozhraní API
V této části se dozvíte, co vypadá při vytváření digitálních vláken a vztahů z klientské aplikace. Obsahuje příklady kódu .NET, které používají rozhraní API DigitalTwins, k poskytnutí dalších informací o tom, co se nachází uvnitř každé z těchto konceptů.
Vytvoření digitálních dvojčat
Níže je fragment kódu klienta, který používá rozhraní API DigitalTwins k vytvoření instance vlákna typu místnosti s typem twinId , který je definován během vytváření instance.
Můžete inicializovat vlastnosti vlákna při jeho vytvoření, nebo je nastavit později. Chcete-li vytvořit dvojitě spuštěný s inicializovanými vlastnostmi, vytvořte dokument JSON, který bude poskytovat nezbytné 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(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}");
}
}
Můžete také použít pomocnou třídu nazvanou BasicDigitalTwin pro uložení polí vlastností do "" vlákna "objektu, a to více přímo jako alternativu k použití slovníku. Další informace o pomocné třídě a příkladech jejich použití naleznete v části vytvoření digitálního vlákna v tématu Postupy: Správa digitálních vláken.
Poznámka
I když jsou zdvojené vlastnosti považovány za volitelné, takže není nutné je inicializovat, musí být při vytvoření vlákna nastaveny všechny komponenty na vlákna. Můžou to být prázdné objekty, ale samotné komponenty musí existovat.
Vytvoření relací
Zde je příklad klientského kódu, který používá rozhraní API DigitalTwins k vytvoření vztahu z jednoho digitálního vlákna ("zdroj" vlákna) do jiného digitálního vlákna ("cíl").
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);
Reprezentace JSON prvků grafu
Digitální vlákna dat a data vztahů jsou ukládána ve formátu JSON, což znamená, že při dotazování cyklického grafu ve vaší instanci digitálního vlákna Azure se výsledkem bude reprezentace digitálního vlákna a relací JSON, které jste vytvořili.
Formát digitálního vlákna JSON
Při reprezentaci jako objektu JSON zobrazí digitální vlákna následující pole:
| Název pole | Description |
|---|---|
$dtId |
Uživatelem zadaný řetězec představující ID digitálního vlákna |
$etag |
Standardní pole HTTP přiřazené webovým serverem |
$conformance |
Výčet, který obsahuje stav shody tohoto digitálního vlákna (v souladu s nevyhovujícími, Neznámý) |
<property-name> |
Hodnota vlastnosti ve formátu JSON ( string , typ čísla nebo objekt) |
$relationships |
Adresa URL cesty ke kolekci vztahů Toto pole chybí, pokud digitální vlákna neobsahuje žádné odchozí okraje vztahu. |
$metadata.$model |
Volitelné ID rozhraní modelu, které charakterizuje tuto digitální vlákna |
$metadata.<property-name>.desiredValue |
[Pouze pro zapisovatelné vlastnosti] Požadovaná hodnota zadané vlastnosti |
$metadata.<property-name>.desiredVersion |
[Pouze pro zapisovatelné vlastnosti] Verze požadované hodnoty |
$metadata.<property-name>.ackVersion |
Verze potvrzená aplikací zařízení implementující digitální dvojitou vlákenou |
$metadata.<property-name>.ackCode |
[Pouze pro zapisovatelné vlastnosti] ack Kód vrácený aplikací pro zařízení implementující digitální vlákna |
$metadata.<property-name>.ackDescription |
[Pouze pro zapisovatelné vlastnosti] ack Popis vrácený aplikací pro zařízení implementující digitální dvojitou vlákenou |
<component-name> |
Objekt JSON obsahující hodnoty a metadata vlastnosti komponenty, podobně jako u kořenového objektu. Tento objekt existuje i v případě, že komponenta nemá žádné vlastnosti. |
<component-name>.<property-name> |
Hodnota vlastnosti komponenty v kódu JSON ( string , typ čísla nebo objekt) |
<component-name>.$metadata |
Informace metadat pro komponentu, podobně jako na úrovni kořenového adresáře $metadata |
Tady je příklad digitálního vlákna formátovaného jako objekt JSON:
{
"$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"
}
}
}
Formát JSON vztahu
Při reprezentaci jako objektu JSON se v relaci z digitálního vlákna zobrazí následující pole:
| Název pole | Description |
|---|---|
$relationshipId |
Uživatelem zadaný řetězec představující ID tohoto vztahu. Tento řetězec je jedinečný v kontextu zdrojového digitálního vlákna, což také znamená, že sourceId + relationshipId je jedinečný v kontextu instance digitálního vlákna Azure. |
$etag |
Standardní pole HTTP přiřazené webovým serverem |
$sourceId |
ID zdrojového digitálního vlákna |
$targetId |
ID cílového digitálního vlákna |
$relationshipName |
Název vztahu |
<property-name> |
Volitelné Hodnota vlastnosti této relace ve formátu JSON ( string , typ čísla nebo objekt) |
Tady je příklad vztahu naformátovaného 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
Podívejte se, jak spravovat prvky grafu pomocí rozhraní API digitálních vláken Azure:
Nebo se naučíte dotazovat se na graf s dvojitými podseznamy digitálních vláken Azure pro informace: