Kurz: Vytvoření grafu Azure Digital Twins pomocí ukázkové klientské aplikace
V tomto kurzu vytvoříte graf ve službě Azure Digital Twins pomocí modelů, dvojčat a relací. Nástroj pro tento kurz je ukázková klientská aplikace příkazového řádku pro interakci s instancí služby Azure Digital Twins. Klientská aplikace se podobá klientské aplikaci napsané v kódu klientské aplikace.
Pomocí této ukázky můžete provádět základní akce Služby Azure Digital Twins, jako je nahrávání modelů, vytváření a úpravy dvojčat a vytváření relací. Můžete se také podívat na kód ukázky , kde se dozvíte o rozhraních API služby Azure Digital Twins a procvičíte si implementaci vlastních příkazů úpravou ukázkového projektu, ale chcete.
V tomto kurzu budete...
- Modelování prostředí
- Vytvoření digitálních dvojčat
- Přidání relací k vytvoření grafu
- Dotazování grafu na odpovědi na otázky
Požadavky
Než začnete s tímto kurzem, začněte s těmito požadavky:
- Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
- Tento kurz používá .NET. Nejnovější verzi sady .NET SDK pro více platforem si můžete stáhnout z webu Download .NET.
Pak pokračujte ve zbývající části tohoto oddílu a nastavte zbývající požadavky.
Získání ukázkových prostředků
Kurz je řízený kompletním ukázkovým projektem Azure Digital Twins napsaným v jazyce C#. Získejte ukázkový projekt na svém počítači tak, že přejdete na ukázkový odkaz a vyberete tlačítko Procházet kód pod názvem.
Tím přejdete do úložiště GitHubu pro ukázky, které si můžete stáhnout jako .zip výběrem tlačítka Kód a následným stažením SOUBORU ZIP.
Tím se stáhne .zip složka do počítače jako digital-twins-samples-main.zip. Rozbalte složku a extrahujte soubory.
Příprava instance Služby Azure Digital Twins
Pokud chcete pracovat se službou Azure Digital Twins v tomto článku, budete potřebovat instanci služby Azure Digital Twins a požadovaná oprávnění k jeho použití. Pokud už máte nastavenou instanci Služby Azure Digital Twins, můžete tuto instanci použít a přeskočit k další části. V opačném případě postupujte podle pokynů v části Nastavení instance a ověřování. Pokyny obsahují informace, které vám pomůžou ověřit, že jste každý krok úspěšně dokončili.
Po nastavení instance si poznamenejte název hostitele instance. Název hostitele najdete na webu Azure Portal.
Konfigurace ukázkového projektu
Dále nastavte ukázkovou klientskou aplikaci, která bude komunikovat s vaší instancí Azure Digital Twins.
Na počítači přejděte do složky, kterou jste si stáhli dříve z kompletních ukázek služby Azure Digital Twins (a rozbalte ji, pokud jste to ještě neudělali).
Ve složce přejděte do složky digital-twins-samples-main\AdtSampleApp\SampleClientApp a otevřete soubor appsettings.json . Tento soubor JSON obsahuje konfigurační proměnnou, která je nutná ke spuštění projektu.
V textu souboru změňte instanceUrl
adresu URL hostitele instance služby Azure Digital Twins (přidáním https:// před název hostitele, jak je znázorněno níže).
{
"instanceUrl": "https://<your-Azure-Digital-Twins-instance-host-name>"
}
Soubor uložte a zavřete.
Nastavení místních přihlašovacích údajů Azure
Tato ukázka používá defaultAzureCredential (součást Azure.Identity
knihovny) k ověřování uživatelů s instancí Služby Azure Digital Twins, když ji spustíte na místním počítači. Další informace o různých způsobech ověřování klientské aplikace pomocí služby Azure Digital Twins najdete v tématu Psaní ověřovacího kódu aplikace.
Pomocí DefaultAzureCredential
této ukázky vyhledáte přihlašovací údaje ve vašem místním prostředí, jako je přihlášení k Azure v místním Azure CLI nebo v sadě Visual Studio nebo Visual Studio Code. Z tohoto důvodu byste se měli k Azure přihlásit místně prostřednictvím jednoho z těchto mechanismů, abyste pro ukázku nastavili přihlašovací údaje.
Pokud ke spouštění ukázek kódu používáte Visual Studio nebo Visual Studio Code, ujistěte se, že jste k ho editoru přihlášeni pomocí stejných přihlašovacích údajů Azure, které chcete použít pro přístup k vaší instanci Azure Digital Twins. Pokud používáte místní okno rozhraní příkazového řádku, spusťte az login
příkaz pro přihlášení ke svému účtu Azure. Potom byste při spuštění ukázky kódu měli být automaticky ověřeni.
Spuštění ukázkového projektu
Teď, když je aplikace a ověřování nastavené, otevřete okno místní konzoly, které použijete ke spuštění projektu. Přejděte v konzole do složky digital-twins-samples-main\AdtSampleApp\SampleClientApp a spusťte projekt pomocí tohoto příkazu dotnet:
dotnet run
Projekt se spustí, provede ověření a počká na příkaz.
Tady je snímek obrazovky s tím, jak vypadá konzola projektu:
Tip
Seznam všech možných příkazů, které můžete použít s tímto projektem, zadejte help
do konzoly projektu a stiskněte klávesu Return.
Jakmile ověříte, že je aplikace úspěšně spuštěná, můžete ukončit spuštění projektu. Znovu ho spustíte později v kurzu.
Modelování fyzického prostředí pomocí DTDL
Teď, když je instance Azure Digital Twins a ukázková aplikace nastavené, můžete začít vytvářet graf scénáře.
Prvním krokem při vytváření řešení Azure Digital Twins je definování modelů dvojčat pro vaše prostředí.
Modely jsou podobné třídám v objektově orientovaných programovacích jazycích; jedná se o uživatelsky definované šablony, které můžete vytvořit instancí pro vytváření digitálních dvojčat. Modely pro Azure Digital Twins jsou napsané v jazyce podobném formátu JSON, kterému se říká DTDL (Digital Twins Definition Language) a definují typ dvojčete z hlediska jeho vlastností, relací a komponent.
Poznámka:
DTDL také umožňuje definovat příkazy pro digitální dvojčata. Příkazy se ale v současné době ve službě Azure Digital Twins nepodporují.
Ve složce ukázkového projektu, kterou jste si stáhli dříve, přejděte do složky digital-twins-samples-main\AdtSampleApp\SampleClientApp\Models . Tato složka obsahuje ukázkové modely.
Otevřete Room.json pro úpravy a proveďte následující změny kódu:
Aktualizujte číslo verze, abyste označili, že poskytujete aktualizovanou verzi tohoto modelu. Uděláte to tak , že změníte hodnotu 1 na konci
@id
hodnoty na 2. Bude fungovat také libovolné číslo větší než aktuální číslo verze.Umožňuje upravit vlastnost. Změňte název vlastnosti na VlhkostLevel (nebo něco jiného
Humidity
, pokud chcete. Pokud používáte něco jiného než Vlhkostlevel, nezapomeňte, co jste použili, a pokračujte v používání, místo vlhkostiLevel v průběhu kurzu).Přidejte vlastnost.
HumidityLevel
Pod vlastnost, která končí na řádku 15, vložte následující kód pro přidáníRoomName
vlastnosti do místnosti:,{ "@type": "Property", "name": "RoomName", "schema": "string" }
Přidání vztahu.
RoomName
Pod vlastnost, kterou jste právě přidali, vložte následující kód pro přidání možnosti tohoto typu dvojčete vytvořitcontains
relace s jinými dvojčaty:,{ "@type": "Relationship", "name": "contains" }
Po dokončení by aktualizovaný model měl odpovídat tomuto:
{
"@id": "dtmi:example:Room;2",
"@type": "Interface",
"displayName": "Room",
"contents": [
{
"@type": "Property",
"name": "Temperature",
"schema": "double"
},
{
"@type": "Property",
"name": "HumidityLevel",
"schema": "double"
}
,{
"@type": "Property",
"name": "RoomName",
"schema": "string"
}
,{
"@type": "Relationship",
"name": "contains"
}
],
"@context": "dtmi:dtdl:context;3"
}
Než budete pokračovat, nezapomeňte soubor uložit.
Nahrání modelů do služby Azure Digital Twins
Po návrhu modelů je potřeba je nahrát do instance Služby Azure Digital Twins. Tím nakonfigurujete instanci služby Azure Digital Twins s vlastním slovníkem domény. Po nahrání modelů můžete vytvořit instance dvojčat, které je používají.
Vraťte se do okna konzoly, které je otevřené pro složku digital-twins-samples-main\AdtSampleApp\SampleClientApp a spusťte znovu konzolovou aplikaci pomocí
dotnet run
.V okně konzoly projektu spusťte následující příkaz, kterým nahrajete aktualizovaný model místnosti spolu s modelem podlahy, který použijete také v další části k vytvoření různých typů dvojčat.
CreateModels Room Floor
Výstup by měl indikovat, že se modely úspěšně vytvořily.
Spuštěním příkazu
GetModels true
ověřte, že modely byly vytvořeny. Tento příkaz vytiskne úplné informace pro všechny modely nahrané do vaší instance Služby Azure Digital Twins. Ve výsledcích vyhledejte upravený model místnosti:
Nechte konzolovou aplikaci spuštěnou pro další kroky.
Chyby
Ukázková aplikace také zpracovává chyby ze služby.
Pokud to chcete otestovat, spusťte CreateModels
znovu příkaz a zkuste znovu nahrát model místnosti, který jste už nahráli:
CreateModels Room
Protože modely nelze přepsat, tento příkaz teď vrátí chybu služby, která značí, že některá ID modelu, která se pokoušíte vytvořit, již existují.
Podrobnosti o tom, jak odstranit existující modely, najdete v tématu Správa modelů DTDL.
Vytvoření digitálních dvojčat
Teď, když se některé modely nahrály do vaší instance Azure Digital Twins, můžete vytvořit digitální dvojčata na základě definic modelu. Digitální dvojčata představují entity ve vašem obchodním prostředí – například senzory ve farmě, místnosti v budově nebo světla v autě.
K vytvoření digitálního dvojčete použijte CreateDigitalTwin
příkaz. Na model, na který je dvojče založené, musíte odkazovat a volitelně můžete definovat počáteční hodnoty pro všechny vlastnosti v modelu. V této fázi nemusíte předávat žádné informace o relacích.
Spuštěním tohoto kódu v konzole spuštěného projektu vytvořte několik dvojčat na základě modelu místnosti, který jste aktualizovali dříve, a jiného modelu Floor. Vzpomeňte si, že Místnost má tři vlastnosti, takže můžete zadat argumenty s počátečními hodnotami pro tyto vlastnosti. (Inicializace hodnot vlastností je obecně volitelná, ale pro účely tohoto kurzu jsou potřeba.)
CreateDigitalTwin dtmi:example:Room;2 room0 RoomName string Room0 Temperature double 70 HumidityLevel double 30 CreateDigitalTwin dtmi:example:Room;2 room1 RoomName string Room1 Temperature double 80 HumidityLevel double 60 CreateDigitalTwin dtmi:example:Floor;1 floor0 CreateDigitalTwin dtmi:example:Floor;1 floor1
Výstup z těchto příkazů by měl znamenat, že dvojčata byla úspěšně vytvořena.
Spuštěním
Query
příkazu můžete ověřit, že dvojčata byla vytvořena. Tento příkaz se dotazuje instance služby Azure Digital Twins pro všechna digitální dvojčata, která obsahuje. Ve výsledcích vyhledejte pokoj0, pokoj1, podlaha0 a dvojčata patra1.
Poznámka:
Po provedení změny dat v grafu může docházet k latenci až 10 sekund, než se změny projeví v dotazech.
Rozhraní API DigitalTwins okamžitě odráží změny, takže pokud potřebujete okamžitou odpověď, použijte požadavek rozhraní API (DigitalTwins GetById) nebo volání sady SDK (GetDigitalTwin) k získání dat dvojčat místo dotazu.
Úprava digitálního dvojčete
Můžete také upravit vlastnosti dvojčete, které jste vytvořili.
Poznámka:
Základní rozhraní REST API používá formát opravy JSON k definování aktualizací dvojčete. Aplikace příkazového řádku také používá tento formát, aby poskytla pravdivý zážitek s tím, co podkladová rozhraní API očekávají.
Spuštěním tohoto příkazu změňte název room0 z "Room0" na "PresidentSuite":
UpdateDigitalTwin room0 add /RoomName string PresidentialSuite
Výstup by měl indikovat, že se dvojče úspěšně aktualizovalo.
Úspěšnou aktualizaci můžete ověřit spuštěním tohoto příkazu a zobrazit informace o místnosti 0:
GetDigitalTwin room0
Výstup by měl odrážet aktualizovaný název.
Vytvoření grafu přidáním relací
Dále můžete vytvořit některé relace mezi těmito dvojčaty a propojit je s grafem dvojčete. Grafy dvojčat se používají k reprezentaci celého prostředí.
Typy relací, které můžete vytvořit z jednoho dvojčete do druhého, jsou definovány v modelech , které jste nahráli dříve. Definice modelu pro Floor určuje, že podlahy mohou mít typ relace volaný contains
, což umožňuje vytvořit contains
relaci typu z každého dvojčete podlahy do odpovídající místnosti, kterou obsahuje.
Pokud chcete přidat relaci, použijte CreateRelationship
příkaz. Zadejte dvojče, ze kterého relace pochází, typ relace a dvojče, ke kterému se relace připojuje. Nakonec dejte relaci jedinečné ID.
Spuštěním následujících příkazů přidejte
contains
relaci z každé dvojčete floor, která jste vytvořili dříve, k odpovídajícímu dvojčeti místnosti. Relace jsou pojmenované relace0 a relace1.CreateRelationship floor0 contains room0 relationship0 CreateRelationship floor1 contains room1 relationship1
Tip
Relace
contains
v modelu floor byla také definována se dvěma vlastnostmi řetězce,ownershipUser
takžeownershipDepartment
můžete také zadat argumenty s počátečními hodnotami pro tyto hodnoty při vytváření relací. Tady je alternativní verze výše uvedeného příkazu pro vytvoření relace0, která také určuje počáteční hodnoty pro tyto vlastnosti:CreateRelationship floor0 contains room0 relationship0 ownershipUser string MyUser ownershipDepartment string myDepartment
Výstup z těchto příkazů potvrzuje, že se relace úspěšně vytvořily:
Relace můžete ověřit pomocí některého z následujících příkazů, které vytisknou relace ve vaší instanci Azure Digital Twins.
- Chcete-li zobrazit všechny vztahy přicházející z každého patra (zobrazení relací z jedné strany):
GetRelationships floor0 GetRelationships floor1
- Pokud chcete zobrazit všechny relace přicházející do každé místnosti (zobrazení relace z druhé strany):
GetIncomingRelationships room0 GetIncomingRelationships room1
- Pokud chcete tyto relace vyhledat jednotlivě, podle ID:
GetRelationship floor0 relationship0 GetRelationship floor1 relationship1
- Chcete-li zobrazit všechny vztahy přicházející z každého patra (zobrazení relací z jedné strany):
Dvojčata a relace, které jste nastavili v tomto kurzu, tvoří následující koncepční graf:
Dotazování grafu dvojčete na odpovědi na otázky k prostředí
Hlavní funkcí služby Azure Digital Twins je možnost snadno a efektivně dotazovat graf dvojčete na otázky týkající se vašeho prostředí.
Poznámka:
Po provedení změny dat v grafu může docházet k latenci až 10 sekund, než se změny projeví v dotazech.
Rozhraní API DigitalTwins okamžitě odráží změny, takže pokud potřebujete okamžitou odpověď, použijte požadavek rozhraní API (DigitalTwins GetById) nebo volání sady SDK (GetDigitalTwin) k získání dat dvojčat místo dotazu.
Spuštěním následujících příkazů v konzole spuštěného projektu odpovězte na některé otázky týkající se ukázkového prostředí.
Jaké jsou všechny entity z mého prostředí reprezentované ve službě Azure Digital Twins? (dotaz na vše)
Query
Tento příkaz vám umožní na první pohled zkontrolovat prostředí a ujistit se, že všechno je reprezentované tak, jak chcete, aby bylo v Rámci služby Azure Digital Twins. Výsledkem tohoto příkazu je výstup obsahující každé digitální dvojče s podrobnostmi. Tady je výňatek:
Tip
V ukázkovém projektu je příkaz
Query
bez dalších argumentů ekvivalentemQuery SELECT * FROM DIGITALTWINS
. Pokud chcete dotazovat všechna dvojčata ve vaší instanci pomocí rozhraní API dotazů nebo příkazů rozhraní příkazového řádku, použijte delší (úplný) dotaz.Jaké jsou všechny místnosti v mém prostředí? (dotazování podle modelu)
Query SELECT * FROM DIGITALTWINS T WHERE IS_OF_MODEL(T, 'dtmi:example:Room;2')
Pokud chcete získat konkrétnější informace o tom, co je reprezentováno, můžete dotaz omezit na dvojčata určitého typu. Výsledek ukazuje místnost0 a místnost1, ale nezobrazuje podlahu0 nebo podlahu1 (protože jsou podlahy, ne místnosti).
Jaké jsou všechny pokoje v patře0? (dotaz podle relace)
Query SELECT room FROM DIGITALTWINS floor JOIN room RELATED floor.contains where floor.$dtId = 'floor0'
Můžete se dotazovat na základě relací v grafu, abyste získali informace o tom, jak jsou dvojčata připojená, nebo omezit dotaz na určitou oblast. Pouze místnost0 je na patře0, takže je to jediná místnost ve výsledku.
Co jsou všechna dvojčata v mém prostředí s teplotou nad 75? (dotaz podle vlastnosti)
Query SELECT * FROM DigitalTwins T WHERE T.Temperature > 75
Graf můžete dotazovat na základě vlastností a odpovídat na různé otázky, včetně vyhledání odlehlých hodnot ve vašem prostředí, které by mohly vyžadovat pozornost. Podporují se také jiné relační operátory (<,>, =nebo !=). Místnost1 se zobrazí ve výsledcích, protože má teplotu 80.
Jaké jsou všechny pokoje v patře0 s teplotou nad 75? (složený dotaz)
Query SELECT room FROM DIGITALTWINS floor JOIN room RELATED floor.contains where floor.$dtId = 'floor0' AND IS_OF_MODEL(room, 'dtmi:example:Room;2') AND room.Temperature > 75
Můžete také zkombinovat dřívější dotazy, jako byste v SQL, pomocí kombinací operátorů, jako
AND
je ,OR
,NOT
. Tento dotaz používáAND
k tomu, aby byl předchozí dotaz o teplotách dvojčat konkrétnější. Výsledek teď zahrnuje pouze místnosti s teplotami nad 75, které jsou ve podlahách0 , což v tomto případě není žádný z nich. Sada výsledků je prázdná.
Teď, když jste spustili několik dotazů ve scénáři, který jste nastavili, je kurz dokončený. Ukončete spuštění projektu a zavřete okno konzoly.
Vyčištění prostředků
Po dokončení tohoto kurzu můžete v závislosti na tom, co chcete udělat dál, vybrat, které prostředky chcete odebrat.
Pokud máte v plánu pokračovat k dalšímu kurzu, můžete zachovat prostředky, které tady nastavíte, abyste mohli pokračovat v používání této instance služby Azure Digital Twins a nakonfigurovanou ukázkovou aplikaci pro další kurz.
Pokud chcete pokračovat v používání instance služby Azure Digital Twins, ale vymazejte všechny její modely, dvojčata a vztahy, můžete pomocí ukázkových aplikací
DeleteAllTwins
aDeleteAllModels
příkazů vymazat dvojčata a modely ve vaší instanci.
Pokud nepotřebujete žádné prostředky, které jste vytvořili v tomto kurzu, můžete pomocí příkazu az group delete CLI odstranit instanci Azure Digital Twins a všechny ostatní prostředky z tohoto článku. Tím se odstraní všechny prostředky Azure ve skupině prostředků i samotná skupina prostředků.
Důležité
Odstranění skupiny prostředků je nevratné. Skupina prostředků i všechny prostředky v ní obsažené se trvale odstraní. Ujistěte se, že nechtěně neodstraníte nesprávnou skupinu prostředků nebo prostředky.
Otevřete Azure Cloud Shell nebo místní okno rozhraní příkazového řádku a spuštěním následujícího příkazu odstraňte skupinu prostředků a vše, co obsahuje.
az group delete --name <your-resource-group>
Můžete také z místního počítače odstranit staženou složku projektu.
Další kroky
V tomto kurzu jste začali s Azure Digital Twins vytvořením grafu ve vaší instanci pomocí ukázkové klientské aplikace. Vytvořili jste modely, digitální dvojčata a relace pro vytvoření grafu. Spustili jste také některé dotazy v grafu, abyste získali představu o typech otázek, na které může Azure Digital Twins odpovědět na prostředí.
Pokračujte dalším kurzem pro kombinování služby Azure Digital Twins s dalšími službami Azure a dokončete kompletní scénář řízený daty: