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.

Snímek obrazovky s repomem digital-twins-samples v GitHub, ve které je zvýrazněný postup, jak ho stáhnout jako 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.

Snímek obrazovky Průzkumník řešení v aplikaci Visual Studio s vlastností appsettings.jsa kopírovat do výstupního adresáře zvýrazněný ve vlastnostech

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ů:

Snímek obrazovky Visual Studio start (projekt SampleClientApp)

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:

Snímek obrazovky s uvítací zprávou z aplikace příkazového řádku

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:

  1. Aktualizujte číslo verze, abyste označili, že poskytujete aktualizovanou verzi tohoto modelu. Provedete to tak, že změníte 1 na konci @id hodnoty na 2. Bude fungovat i číslo větší než aktuální číslo verze.

  2. Upravit vlastnost. Změňte název Humidity vlastnosti 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.

  3. Přidejte vlastnost. Pod HumidityLevel 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"
    }
    
  4. Přidejte relaci. Pod RoomName vlastnost, 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í.

  1. Po úpravě souboru Room.json v předchozí části znovu spusťte konzolovou aplikaci.

  2. 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 Floor
    

    Výstup by měl indikovat úspěšné vytvoření modelů.

  3. Spuštěním příkazu ověřte, že se modely GetModels true vytvoř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:

    Snímek obrazovky s výsledkem z getmodels zobrazující aktualizovaný model 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.

  1. 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 floor1
    

    Výstup z těchto příkazů by měl indikovat úspěšné vytvoření dvojčat.

    Snímek obrazovky znázorňující výňatek z výsledku příkazů CreateDigitalTwin, které zahrnují floor0, floor1, room0 a room1

  2. Vytvoření dvojčat můžete ověřit spuštěním Query pří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í.

  1. Spuštěním tohoto příkazu změňte room0's RoomName z "Room0" na "PresidentialSuite":

    UpdateDigitalTwin room0 add /RoomName string PresidentialSuite
    

    Výstup by měl indikovat, že dvojče bylo úspěšně aktualizováno.

  2. Úspěšnou aktualizaci můžete ověřit spuštěním tohoto příkazu, který zobrazí informace o místnosti 0:

    GetDigitalTwin room0
    

    Ve 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.

  1. 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 relationship1
    

    Tip

    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 ownershipUser ownershipDepartment hodnotami. 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 myDepartment
    

    Výstup z těchto příkazů potvrzuje, že relace byly úspěšně vytvořeny:

    Snímek obrazovky s úryvek z výsledku příkazů CreateRelationship, které zahrnují relationship0 a relationship1

  2. 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
      

Dvojčata a relace, které jste v tomto kurzu nastavili, tvoří následující koncepční graf:

Diagram znázorňující koncepční graf Floor0 je propojené přes vztah 0 k místnosti0 a floor1 je připojené přes vztah 1 k místnosti1.

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í.

  1. Jaké jsou všechny entity z mého prostředí reprezentované v Azure Digital Twins? (query all)

    Query
    

    Tento 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:

    Snímek obrazovky znázorňující částečný výsledek dotazu dvojčete, včetně room0 a floor1

    Tip

    V ukázkovém projektu je příkaz Query bez dalších argumentů ekvivalentem Query 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.

  2. 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).

    Snímek obrazovky s výsledkem dotazu modelu zobrazující pouze room0 a room1

  3. 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.

    Snímek obrazovky s výsledkem dotazu relace zobrazující room0

  4. 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 > 75
    

    Graf 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.

    Snímek obrazovky s výsledkem dotazu na vlastnost, ve které se zobrazuje pouze room1

  5. 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 > 75
    

    Dřívější dotazy můžete také kombinovat stejně jako v SQL pomocí operátorů kombinace, AND jako je , , OR NOT . Tento dotaz používá k tomu, aby předchozí dotaz o AND teplotá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á.

    Snímek obrazovky s výsledkem složeného dotazu, který nezobrazuje žádné výsledky

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ší DeleteAllTwins DeleteAllModels instanci.

  • 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: