Kurz: Vytvoření Azure Digital Twins grafu pomocí ukázkové klientské aplikace
V tomto kurzu sestavíte graf v 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 Azure Digital Twins instancí. Klientská aplikace je podobná aplikaci napsané v části Kód klientské aplikace.
Tuto ukázku můžete použít k provádění základních 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, abyste se dozvěděli o rozhraních API Azure Digital Twins, a procvičit si implementaci vlastních příkazů úpravou ukázkového projektu, jak chcete.
V tomto kurzu budete...
- Modelování prostředí
- Vytvoření digitálních dvojčat
- Přidání relací pro vytvoření grafu
- Dotazování grafu pro zodpovězení otázek
Požadavky
Pokud chcete dokončit kroky v tomto kurzu, musíte nejprve dokončit následující požadavky.
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Získání požadovaných prostředků
K dokončení tohoto kurzu nainstalujte Visual Studio 2019verze 16.5 nebo novější na počítač pro vývoj. Pokud už máte nainstalovanou starší verzi, můžete aplikaci Instalační program pro Visual Studio na svém počítači otevřít a podle pokynů aktualizovat instalaci.
Poznámka
Ujistěte se, že Visual Studio 2019 zahrnuje úlohu Vývoj pro Azure. Tato úloha umožňuje aplikaci publikovat funkce Azure a provádět další úlohy vývoje v Azure.
Tento kurz je řízený Azure Digital Twins a koncovým ukázkovým projektem napsaným v jazyce C#. Přejděte na ukázkový odkaz a pod nadpisem vyberte tlačítko Browse code (Procházet kód) a získejte ukázkový projekt na svém počítači. Tím se přetáhnete do GitHub pro ukázky, které si můžete stáhnout jako .zip výběrem tlačítka Kód a pak stáhnout ZIP.
Tím se do .zip stáhne složka s názvem digital-twins-samples-master.zip. Rozbalte složku a extrahujte soubory.
Příprava Azure Digital Twins instance
Pokud chcete s Azure Digital Twins v tomto článku pracovat, musíte nejprve nastavit instanci Azure Digital Twins . Potřebujete také požadovaná oprávnění k jeho použití. Pokud už máte instanci Azure Digital Twins, můžete ji použít.
Jinak postupujte podle pokynů v tématu Nastavení instance a ověřování. Pokyny obsahují informace, které vám pomůžou ověřit, že jste jednotlivé kroky úspěšně dokončili.
Po nastavení instance si poznamenejte následující hodnoty. Tyto hodnoty budete potřebovat pro připojení k instanci později:
- Název hostitele instance. Název hostitele najdete v části Azure Portal.
- Předplatné Azure, které jste použili k vytvoření instance. Bude fungovat jeho název nebo ID. Předplatné najdete na stránce Přehled vaší instance v Azure Portal .
Konfigurace ukázkového projektu
Dále nastavte ukázkovou klientskou aplikaci, která bude pracovat s vaší instancí digitálních vláken Azure.
Přejděte na počítač do souboru, který jste dříve stáhli z digitálních vláken Azure, a kompletních ukázek (a rozbalte je, pokud jste to ještě neudělali).
Ve složce přejděte do AdtSampleApp. Otevřete AdtE2ESample. sln v aplikaci Visual Studio 2019.
V aplikaci Visual Studio vyberte SampleClientApp > appsettings.jsv souboru, aby se otevřela v okně pro úpravy. Tato akce bude sloužit jako předem nastavený soubor JSON s nezbytnými konfiguračními proměnnými pro spuštění projektu.
V těle souboru přejděte na instanceUrl adresu URL názvu hostitele instance digitálního vlákna Azure (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>"
}
Uložte soubor a zavřete ho.
Dále nakonfigurujte appsettings.js pro soubor, který se má zkopírovat do výstupního adresáře při sestavování SampleClientApp. Provedete to tak, že v souboru kliknete pravým tlačítkem na appsettings.js a zvolíte vlastnosti. V inspektoru vlastností vyhledejte vlastnost Kopírovat do výstupního adresáře . Změňte hodnotu na Kopírovat, pokud není novější , pokud už není nastavená na.
Nechejte projekt AdtE2ESample otevřený v aplikaci Visual Studio, abyste ho mohli dál používat v tomto kurzu.
Nastavení místních přihlašovacích údajů Azure
Tato ukázka používá DefaultAzureCredential (součást knihovny) k ověřování uživatelů pomocí Azure Digital Twins, když ji spustíte Azure.Identity na místním počítači. Další informace o různých způsobech ověřování klientských aplikací pomocí Azure Digital Twins najdete v tématu Psaní ověřovacího kódu aplikace.
V DefaultAzureCredential případě bude ukázka Hledat přihlašovací údaje v místním prostředí, jako je například přihlášení k Azure v místním rozhraní příkazového řádku Azure nebo v aplikaci Visual Studio nebo Visual Studio Code. Z tohoto důvodu byste se měli přihlásit k Azure místně prostřednictvím jednoho z těchto mechanismů a nastavit přihlašovací údaje pro ukázku.
Pokud používáte aplikaci Visual Studio nebo Visual Studio Code ke spuštění ukázky kódu, ujistěte se, že jste přihlášeni k tomuto editoru se stejnými přihlašovacími údaji Azure, které chcete použít pro přístup k instanci digitálních vláken Azure.
V opačném případě můžete nainstalovat místní rozhranípříkazového řádku Azure, spustit příkazový řádek na svém počítači a spustit az login příkaz pro přihlášení k účtu Azure. Po přihlášení si můžete při spuštění ukázky kódu automaticky přihlásit.
Spuštění ukázkového projektu
Teď, když je aplikace a ověřování nastavené, spusťte projekt s tímto tlačítkem na panelu nástrojů:
Otevře se okno konzoly, provede se 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 s tímto projektem použít, zobrazíte zadáním příkazu v konzole projektu a help stisknutím klávesy Return.
Jakmile potvrdíte, že aplikace úspěšně běží, zavřete okno konzoly, aby se aplikace v tuto dobu zastavila. Spustíte ho znovu později v tomto článku.
Modelování fyzického prostředí pomocí DTDL
Teď, když Azure Digital Twins instance a ukázková aplikace, 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. Poskytují uživatelem definované šablony pro digitální dvojčata, která se budou sledovat a později vytvořit instanci. Jsou napsané v jazyce ve formátu JSON s názvem Digital Twins Definition Language (DTDL) a mohou definovat vlastnosti dvojčete, telemetrii, relace a komponenty.
Poznámka
DTDL také umožňuje definici příkazů v digitálních dvojčatech. Příkazy se ale v současné době ve službě Azure Digital Twins nepodporují.
V okně Visual Studio, kde je projekt AdtE2ESample otevřený, přejděte v podokně Průzkumník řešení do složky AdtSampleApp\SampleClientApp\Models. Tato složka obsahuje ukázkové modely.
Výběrem souboru Room.json ho otevřete v okně pro úpravy a změňte ho následujícími způsoby:
Aktualizujte číslo verze, abyste označili, že poskytujete aktualizovanou verzi tohoto modelu. Provedete to tak, že změníte 1 na konci
@idhodnoty na 2. Bude fungovat i číslo větší než aktuální číslo verze.Upravit vlastnost. Změňte název
Humidityvlastnosti na HumidityLevel (nebo něco jiného, pokud chcete. Pokud používáte něco jiného než HumidityLevel, pamatujte na to, co jste použili, a místo HumidityLevel v průběhu tohoto kurzu ho budete používat.Přidejte vlastnost. Pod
HumidityLevelvlastností, která končí na řádku 15, vložte následující kód pro přidáníRoomNamevlastnosti do místnosti:,{ "@type": "Property", "name": "RoomName", "schema": "string" }Přidejte relaci. Pod
RoomNamevlastnost, kterou jste právě přidali, vložte následující kód pro přidání možnosti pro tento typ vlákna do formuláře obsahuje relace s jinými nezávislostmi:,{ "@type": "Relationship", "name": "contains" }
Až skončíte, aktualizovaný model by se měl shodovat s tímto:
{
"@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;2"
}
Před přechodem na. Nezapomeňte soubor uložit.
Upload modelů k Azure Digital Twins
Po navržení modelů je musíte nahrát do vaší Azure Digital Twins instance. Tím nakonfigurujete instanci Azure Digital Twins služby s vlastním slovníkem domény. Po nahrání modelů můžete vytvořit instance dvojčat, které je používají.
Po úpravě souboru Room.json v předchozí části znovu spusťte konzolovou aplikaci.
Spuštěním následujícího příkazu v okně konzoly projektu nahrajte aktualizovaný model místnosti společně s modelem Floor, který použijete také v další části k vytvoření různých typů dvojčat.
CreateModels Room FloorVýstup by měl indikovat úspěšné vytvoření modelů.
Spuštěním příkazu ověřte, že se modely
GetModels truevytvořily. Tento příkaz zobrazí úplné informace o všech modelech, které byly nahrány do vaší Azure Digital Twins instance. Ve výsledcích vyhledejte model editované místnosti:
Chyby
Ukázková aplikace také zpracovává chyby ze služby.
Spusťte příkaz znovu, abyste podruhé zkusili znovu nahrát jeden ze stejných modelů, které jste CreateModels nahráli:
CreateModels Room
Protože modely nelze přepsat, tento příkaz teď vrátí chybu služby. Podrobnosti o tom, jak odstranit existující modely, najdete v tématu Správa modelů DTDL.
Response 409: Service request failed.
Status: 409 (Conflict)
Content:
{"error":{"code":"ModelAlreadyExists","message":"Could not add model dtmi:example:Room;2 as it already exists. Use Model_List API to view models that already exist. See the Swagger example.(http://aka.ms/ModelListSwSmpl)"}}
Headers:
Strict-Transport-Security: REDACTED
Date: Wed, 20 May 2020 00:53:49 GMT
Content-Length: 223
Content-Type: application/json; charset=utf-8
Vytvoření digitálních dvojčat
Teď, když jsou některé modely nahrané do vaší Azure Digital Twins instance, můžete na základě definic modelů vytvořit digitální dvojčata. Digitální dvojčata představují entity v rámci vašeho obchodního prostředí – například senzory na farmě, místnosti v budově nebo světla v automobilu.
K vytvoření digitálního dvojčete použijte CreateDigitalTwin příkaz . Musíte odkazovat na model, na který je dvojče založené, 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 relaci.
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 Room má tři vlastnosti, takže můžete zadat argumenty s počátečními hodnotami těchto vlastností. (Inicializace hodnot vlastností je obecně volitelná, ale pro tento kurz je potřebujete.)
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 floor1Výstup z těchto příkazů by měl indikovat úspěšné vytvoření dvojčat.
Vytvoření dvojčat můžete ověřit spuštěním
Querypříkazu . Tento příkaz dotazuje vaši instanci Azure Digital Twins všech digitálních dvojčat, která obsahuje. Ve výsledcích vyhledejte dvojčata room0, room1, floor0 a floor1.
Poznámka
Po provedení změny dat v grafu může být latence až 10 sekund, než se změny projeví v dotazech.
Rozhraní API pro DigitalTwins odráží změny okamžitě, takže pokud potřebujete okamžitou reakci, použijte požadavek rozhraní API (DigitalTwins GetById) nebo volání sady SDK (GetDigitalTwin), abyste mohli místo dotazu získat dvojitá data.
Úprava digitálního dvojčete
Můžete také upravit vlastnosti dvojčete, které jste vytvořili.
Poznámka
Základní REST API používá k definování aktualizací dvojčete formát JSON Patch. Aplikace příkazového řádku používá tento formát také k tomu, aby byla lepší zkušenost s tím, co podkladová rozhraní API očekávají.
Spuštěním tohoto příkazu změňte room0's RoomName z "Room0" na "PresidentialSuite":
UpdateDigitalTwin room0 add /RoomName string PresidentialSuiteVýstup by měl indikovat, že dvojče bylo úspěšně aktualizováno.
Úspěšnou aktualizaci můžete ověřit spuštěním tohoto příkazu, který zobrazí informace o místnosti 0:
GetDigitalTwin room0Ve výstupu by se měl zobrazit aktualizovaný název.
Vytvoření grafu přidáním relací
Dále můžete vytvořit nějaké relace mezi těmito dvojčaty a připojit je k grafu dvojčat. Grafy dvojčat slouží k reprezentaci celého prostředí.
Typy relací, které můžete vytvořit z jednoho dvojčete do jiného, jsou definovány v rámci modelů, které jste nahráli dříve. Definice modelu pro podlaží určuje, že podlaží mohou mít typ relace s názvem contains, který umožňuje vytvořit relaci contains -type z každého dvojčete podlaží do odpovídající místnosti, která obsahuje.
Pokud chcete přidat relaci, použijte CreateRelationship příkaz . Zadejte dvojče, ze které relace pochází, typ relace a dvojče, ke které se relace připojuje. Nakonec dejte relaci jedinečné ID.
Spuštěním následujícího kódu přidejte relaci "contains" z každého dvojčete floor, které jste vytvořili dříve, do odpovídajícího dvojčete místnosti. Relace jsou pojmenované relationship0 a relationship1.
CreateRelationship floor0 contains room0 relationship0 CreateRelationship floor1 contains room1 relationship1Tip
Relace obsahuje v modelu Floor byla také definována se dvěma řetězci vlastnostmi a , takže můžete při vytváření relací zadat argumenty s počátečními
ownershipUserownershipDepartmenthodnotami. Tady je alternativní verze výše uvedeného příkazu pro vytvoření relace relationship0, která také určuje počáteční hodnoty pro tyto vlastnosti:CreateRelationship floor0 contains room0 relationship0 ownershipUser string MyUser ownershipDepartment string myDepartmentVýstup z těchto příkazů potvrzuje, že relace byly úspěšně vytvořeny:
Relace můžete ověřit pomocí libovolného z následujících příkazů, které vytiskne relace ve vaší Azure Digital Twins instanci.
- Pokud chcete zobrazit všechny vztahy přicházející z jednotlivých podlah (zobrazení relací z jedné strany):
GetRelationships floor0 GetRelationships floor1 - Pokud chcete zobrazit všechny vztahy přicházející do každé místnosti (zobrazení relace z druhé strany):
GetIncomingRelationships room0 GetIncomingRelationships room1 - Pokud chcete tyto relace hledat jednotlivě, podle ID:
GetRelationship floor0 relationship0 GetRelationship floor1 relationship1
- Pokud chcete zobrazit všechny vztahy přicházející z jednotlivých podlah (zobrazení relací z jedné strany):
Dvojčata a relace, které jste v tomto kurzu nastavili, tvoří následující koncepční graf:
Dotazování grafu dvojčat pro odpovědi na otázky týkající se prostředí
Hlavní funkcí tohoto Azure Digital Twins je schopnost snadno a efektivně dotazovat graf dvojčat, abyste mohli odpovídat na otázky týkající se vašeho prostředí.
Poznámka
Po provedení změny dat v grafu může být latence až 10 sekund, než se změny projeví v dotazech.
Rozhraní API pro DigitalTwins odráží změny okamžitě, takže pokud potřebujete okamžitou reakci, použijte požadavek rozhraní API (DigitalTwins GetById) nebo volání sady SDK (GetDigitalTwin), abyste mohli místo dotazu získat dvojitá data.
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é v Azure Digital Twins? (query all)
QueryTento příkaz vám umožní na první pohled zušlechtnit prostředí a ujistit se, že je vše reprezentované tak, jak chcete, aby 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
Querybez 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ší (dokončený) dotaz.Jaké jsou všechny místnosti v mém prostředí? (dotaz podle modelu)
Query SELECT * FROM DIGITALTWINS T WHERE IS_OF_MODEL(T, 'dtmi:example:Room;2')Dotaz můžete omezit na dvojčata určitého typu, abyste mohli získat konkrétnější informace o tom, co je reprezentováno. Výsledek ukazuje room0 a room1, ale nemá podlahu floor0 ani floor1 (protože se jedná o podlaží, ne místnosti).
Jaké jsou všechny místnosti na podlaží0? (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, získat informace o způsobu připojení dvojčat nebo omezit dotaz na určitou oblast. Jen room0 je na podlaží0, takže je to jediná místnost ve výsledku.
Jaká jsou všechna dvojčata v mém prostředí s teplotou vyšší než 75? (dotaz podle vlastnosti)
Query SELECT * FROM DigitalTwins T WHERE T.Temperature > 75Graf můžete dotazovat na základě vlastností a zodpovědět různé otázky, včetně nalezení odlehlé hodnoty ve vašem prostředí, které by mohly klást pozornost. Podporují se také další < relační operátory ( > , , = nebo !=). Room1 se zobrazí ve výsledcích, protože má teplotu 80.
Jaké jsou všechny místnosti na podlaží0 s teplotou vyšší než 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 > 75Dřívější dotazy můžete také kombinovat stejně jako v SQL pomocí operátorů kombinace,
ANDjako je , ,ORNOT. Tento dotaz používá k tomu, aby předchozí dotaz oANDteplotách dvojčat byl konkrétnější. Výsledek teď obsahuje pouze místnosti s teplotami nad 75, které jsou na podlaží0 – což v tomto případě není žádná z nich. Sada výsledků dotazu je prázdná.
Vyčištění prostředků
Po dokončení tohoto kurzu si můžete vybrat prostředky, které chcete odebrat, v závislosti na tom, co chcete udělat dále.
Pokud chcete pokračovat k dalšímu kurzu, můžete prostředky, které tady nastavíte, ponechat a pokračovat v používání této instance Azure Digital Twins a nakonfigurovat ukázkovou aplikaci pro další kurz.
Pokud chcete dál používat instanci Azure Digital Twins, ale vymazat všechny její modely, dvojčata a relace , můžete pomocí příkazů a ukázkové aplikace vymazat dvojčata a modely ve vaší
DeleteAllTwinsDeleteAllModelsinstanci.
Pokud nepotřebujete žádné prostředky, které jste vytvořili v tomto kurzu, můžete odstranit instanci digitálních vláken Azure a všechny další prostředky z tohoto článku pomocí příkazu AZ Group Delete . Tím se odstraní všechny prostředky Azure ve skupině prostředků i v samotné skupině 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 Shella 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é odstranit složku projektu z místního počítače.
Další kroky
V tomto kurzu jste začali pracovat 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, které tvoří graf. Také jste v grafu spustili nějaké dotazy, abyste získali představu o tom, jaké druhy otázek Azure Digital Twins týkajících se prostředí.
Pokračujte dalším kurzem, ve Azure Digital Twins a dalšími službami Azure a dokončete kompletní scénář řízený daty: