Megosztás a következőn keresztül:


Az Azure Digital Twins integrálása Azure Time Series Insights

Ebből a cikkből megtudhatja, hogyan integrálhatja az Azure Digital Twinst Azure Time Series Insights (TSI)-vel.

A cikkben ismertetett megoldás a Time Series Insights segítségével gyűjti és elemzi az IoT-megoldás előzményadatait. Az Azure Digital Twins kiválóan alkalmas az adatok Time Series Insightsba való betáplálására, mivel lehetővé teszi több adatfolyam korrelációját és az adatok szabványosítását, mielőtt elküldené őket a Time Series Insightsnak.

Tipp

Az ikerpéldányok előzményadatainak időbeli elemzésének legegyszerűbb módja, ha az adatelőzmények funkcióval csatlakoztat egy Azure Digital Twins-példányt egy Azure Data Explorer-fürthöz, hogy a gráffrissítések automatikusan az Azure Data Explorer-ba legyenek tárolva. Ezt követően lekérdezheti ezeket az adatokat az Azure Data Explorer az Azure Digital Twins lekérdezési beépülő modullal az Azure Data Explorer. Ha nem kell kifejezetten a Time Series Insightsot használnia, érdemes megfontolnia ezt az alternatívát az egyszerűbb integrációs élmény érdekében.

Előfeltételek

A Time Series Insightsszal való kapcsolat beállítása előtt be kell állítania a következő erőforrásokat:

Tipp

Ebben a cikkben a Time Series Insightsban megtekintett változó digitális ikerpéldány-értékeket az egyszerűség kedvéért manuálisan frissítjük. Ha azonban élő szimulált adatokkal szeretné kiegészíteni ezt a cikket, beállíthat egy Azure-függvényt, amely egy szimulált eszközről származó IoT-telemetriai események alapján frissíti a digitális ikerpéldányokat. Útmutatásért kövesse IoT Hub adatok betöltését, beleértve az eszközszimulátor futtatásának és az adatfolyam működésének ellenőrzéséhez szükséges utolsó lépéseket.

Később keressen egy másik TIPP-t, amely megmutatja, hol kezdje el futtatni az eszközszimulátort, és kérje meg, hogy az Azure-függvények automatikusan frissítsék az ikerpéldányokat a manuális digitális ikerpéldány-frissítési parancsok küldése helyett.

Megoldásarchitektúra

A Time Series Insightsot az alábbi útvonalon csatolja az Azure Digital Twinshez.

Az Azure-szolgáltatások diagramja egy végpontok közötti forgatókönyvben, kiemelve a Time Series Insightsot.

Event Hubs-névtér létrehozása

Az eseményközpontok létrehozása előtt először létre kell hoznia egy Event Hubs-névteret, amely eseményeket fogad az Azure Digital Twins-példánytól. Használhatja az alábbi Azure CLI-utasításokat, vagy használhatja a Azure Portal a Create an event hub using Azure Portal (Eseményközpont létrehozása Azure Portal használatával) című témakörben leírtak szerint. Annak megtekintéséhez, hogy mely régiók támogatják az Event Hubsot, látogasson el a régiónként elérhető Azure-termékekre.

az eventhubs namespace create --name <name-for-your-Event-Hubs-namespace> --resource-group <your-resource-group> --location <region>

Tipp

Ha hibaüzenet jelenik meg, BadRequest: The specified service namespace is invalid.győződjön meg arról, hogy a névtérhez választott név megfelel az ebben a referenciadokumentumban ismertetett elnevezési követelményeknek: Névtér létrehozása.

Ezt az Event Hubs-névteret fogja használni a cikkhez szükséges két eseményközpont tárolására:

  1. Twins Hub – Eseményközpont az ikermódosítási események fogadásához
  2. Time Series Hub – Eseményközpont események streameléséhez a Time Series Insights szolgáltatásba

A következő szakaszok végigvezetik ezen központok létrehozásának és konfigurálásának folyamatán az eseményközpont névterén belül.

Ikerpéldány-központ létrehozása

A cikkben elsőként az ikerpéldány-központot fogja létrehozni. Ez az eseményközpont ikerpéldány-változási eseményeket fog fogadni az Azure Digital Twinstől. Az ikerpéldány-központ beállításához a következő lépéseket kell elvégeznie ebben a szakaszban:

  1. Az ikerpéldány-központ létrehozása
  2. Engedélyezési szabály létrehozása a központ engedélyeinek szabályozásához
  3. Hozzon létre egy végpontot az Azure Digital Twinsben, amely az engedélyezési szabályt használja a központ eléréséhez
  4. Útvonal létrehozása az Azure Digital Twinsben, amely ikerfrissítési eseményt küld a végpontnak és a csatlakoztatott ikerpéldány-központnak
  5. Az ikerpéldány-központ lekérése kapcsolati sztring

Hozza létre az ikerpéldány-központot a következő CLI-paranccsal. Adja meg az ikerpéldány-központ nevét.

az eventhubs eventhub create --name <name-for-your-twins-hub> --resource-group <your-resource-group> --namespace-name <your-Event-Hubs-namespace-from-earlier>

Ikerpéldány-központ engedélyezési szabályának létrehozása

Hozzon létre egy engedélyezési szabályt küldési és fogadási engedélyekkel. Adja meg a szabály nevét.

az eventhubs eventhub authorization-rule create --rights Listen Send --name <name-for-your-twins-hub-auth-rule> --resource-group <your-resource-group> --namespace-name <your-Event-Hubs-namespace-from-earlier> --eventhub-name <your-twins-hub-from-earlier>

Ikerpéldány-központ végpont létrehozása

Hozzon létre egy Azure Digital Twins-végpontot , amely összekapcsolja az eseményközpontot az Azure Digital Twins-példányhoz. Adja meg az ikerpéldány-központ végpontjának nevét.

az dt endpoint create eventhub --dt-name <your-Azure-Digital-Twins-instance-name> --eventhub-resource-group <your-resource-group> --eventhub-namespace <your-Event-Hubs-namespace-from-earlier> --eventhub <your-twins-hub-name-from-earlier> --eventhub-policy <your-twins-hub-auth-rule-from-earlier> --endpoint-name <name-for-your-twins-hub-endpoint>

Ikerközpont eseményútvonalának létrehozása

Az Azure Digital Twins-példányok ikerpéldány frissítési eseményeket bocsáthatnak ki az ikerpéldányok állapotának frissítésekor. Ebben a szakaszban egy Azure Digital Twins-eseményútvonalat fog létrehozni, amely a frissítési eseményeket az ikerpéldány-központra irányítja további feldolgozás céljából.

Hozzon létre egy útvonalat az Azure Digital Twinsben, amellyel ikerpéldány-frissítési eseményeket küldhet a végpontnak fentről. Az útvonal szűrője csak az ikerpéldány frissítési üzeneteinek továbbítását engedélyezi a végpontnak. Adja meg az ikerközpont eseményútvonalának nevét. Ebben a parancsban az Azure Digital Twins-példány nevének helyőrzőjeként használhatja a rövid nevet vagy az állomásnevet a teljesítmény növeléséhez.

az dt route create --dt-name <your-Azure-Digital-Twins-instance-hostname-or-name> --endpoint-name <your-twins-hub-endpoint-from-earlier> --route-name <name-for-your-twins-hub-event-route> --filter "type = 'Microsoft.DigitalTwins.Twin.Update'"

Ikerpéldány-központ kapcsolati sztring lekérése

Szerezze be az ikerpéldányok eseményközpontját kapcsolati sztring az ikerpéldány-központhoz fent létrehozott engedélyezési szabályokkal.

az eventhubs eventhub authorization-rule keys list --resource-group <your-resource-group> --namespace-name <your-Event-Hubs-namespace-from-earlier> --eventhub-name <your-twins-hub-from-earlier> --name <your-twins-hub-auth-rule-from-earlier>

Jegyezze fel az eredmény primaryConnectionString értékét az twins hub alkalmazásbeállítás konfigurálásához a cikk későbbi részében.

Idősorozat-központ létrehozása

A cikkben létrehozott második eseményközpont az idősorozat-központ. Ez az eseményközpont fogja streamelni az Azure Digital Twins-eseményeket a Time Series Insightsba. Az idősorozat-központ beállításához hajtsa végre az alábbi lépéseket:

  1. Az idősorozat-központ létrehozása
  2. Engedélyezési szabály létrehozása a központ engedélyeinek szabályozásához
  3. Az idősorozat-központ kapcsolati sztring lekérése

Később a Time Series Insights-példány létrehozásakor ezt az idősor-központot fogja csatlakoztatni a Time Series Insights-példány eseményforrásaként.

Hozza létre az idősorozat-központot a következő paranccsal. Adja meg az idősorközpont nevét.

 az eventhubs eventhub create --name <name-for-your-time-series-hub> --resource-group <your-resource-group> --namespace-name <your-Event-Hub-namespace-from-earlier>

Idősorközpont engedélyezési szabályának létrehozása

Hozzon létre egy engedélyezési szabályt küldési és fogadási engedélyekkel. Adja meg az idősorközpont hitelesítési szabályának nevét.

az eventhubs eventhub authorization-rule create --rights Listen Send --name <name-for-your-time-series-hub-auth-rule> --resource-group <your-resource-group> --namespace-name <your-Event-Hub-namespace-from-earlier> --eventhub-name <your-time-series-hub-name-from-earlier>

Idősorozat-központ kapcsolati sztring lekérése

Szerezze be az idősorozat-központ kapcsolati sztring az idősorközponthoz fent létrehozott engedélyezési szabályokkal:

az eventhubs eventhub authorization-rule keys list --resource-group <your-resource-group> --namespace-name <your-Event-Hub-namespace-from-earlier> --eventhub-name <your-time-series-hub-name-from-earlier> --name <your-time-series-hub-auth-rule-from-earlier>

Jegyezze fel az eredmény primaryConnectionString értékét az idősorozat-központ alkalmazásbeállításának konfigurálásához a cikk későbbi részében.

Emellett jegyezze fel az alábbi értékeket, hogy később felhasználja őket egy Time Series Insights-példány létrehozásához.

  • Eseményközpont-névtér
  • Idősorozat-központ neve
  • Idősorozat-központ hitelesítési szabálya

Függvény létrehozása

Ebben a szakaszban egy Azure-függvényt fog létrehozni, amely az ikerpéldányok frissítési eseményeit az eredeti űrlapjukról JSON Patch-dokumentumokká alakítja olyan JSON-objektumokká, amelyek csak az ikerpéldányok frissített és hozzáadott értékeit tartalmazzák.

  1. Először hozzon létre egy új függvényalkalmazás-projektet.

    Ehhez használhatja a Visual Studiót (útmutatásért lásd: Azure Functions fejlesztése a Visual Studio használatával), Visual Studio Code (útmutatásért lásd: C#-függvény létrehozása az Azure-ban a Visual Studio Code használatával) vagy az Azure CLI használatával (útmutatásért lásd: C#-függvény létrehozása az Azure-ban a parancssorból).

  2. Hozzon létre egy új Azure-függvényt ProcessDTUpdatetoTSI.cs néven az eszköz telemetriai eseményeinek a Time Series Insightsra való frissítéséhez. A függvény típusa Event Hub-eseményindító lesz.

    Képernyőkép a Visual Studióról egy új, eseményközpont-eseményindító típusú Azure-függvény létrehozásához.

  3. Adja hozzá a következő csomagokat a projekthez (használhatja a Visual Studio NuGet-csomagkezelőt vagy a dotnet add package parancsot egy parancssori eszközben).

  4. Cserélje le a ProcessDTUpdatetoTSI.cs fájlban lévő kódot a következő kódra:

    using System.Collections.Generic;
    using System.Threading.Tasks;
    using System.Text;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Extensions.Logging;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    using Azure.Messaging.EventHubs;
    
    namespace UpdateTSI
    {
        public static class ProcessDTUpdatetoTSI
        { 
            [FunctionName("ProcessDTUpdatetoTSI")]
            public static async Task Run(
                [EventHubTrigger("twins-event-hub", Connection = "EventHubAppSetting-Twins")]EventData myEventHubMessage,
                [EventHub("tsi-event-hub", Connection = "EventHubAppSetting-TSI")]IAsyncCollector<string> outputEvents,
                ILogger log)
            {
                JObject message = (JObject)JsonConvert.DeserializeObject(Encoding.UTF8.GetString(myEventHubMessage.Body));
                log.LogInformation($"Reading event: {message}");
    
                // Read values that are replaced or added
                var tsiUpdate = new Dictionary<string, object>();
                foreach (var operation in message["patch"])
                {
                    if (operation["op"].ToString() == "replace" || operation["op"].ToString() == "add")
                    {
                        //Convert from JSON patch path to a flattened property for TSI
                        //Example input: /Front/Temperature
                        //        output: Front.Temperature
                        string path = operation["path"].ToString().Substring(1);
                        path = path.Replace("/", ".");
                        tsiUpdate.Add(path, operation["value"]);
                    }
                }
                // Send an update if updates exist
                if (tsiUpdate.Count > 0)
                {
                    tsiUpdate.Add("$dtId", myEventHubMessage.Properties["cloudEvents:subject"]);
                    await outputEvents.AddAsync(JsonConvert.SerializeObject(tsiUpdate));
                }
            }
        }
    }
    

    Mentse a függvénykódot.

  5. Tegye közzé a projektet a ProcessDTUpdatetoTSI.cs függvénnyel egy Azure-beli függvényalkalmazásban.

    A függvény Visual Studio használatával történő közzétételére vonatkozó utasításokért lásd: Azure Functions fejlesztése a Visual Studióval. A függvény Visual Studio Code használatával történő közzétételére vonatkozó utasításokért lásd: C#-függvény létrehozása az Azure-ban a Visual Studio Code használatával. A függvény Azure CLI használatával történő közzétételére vonatkozó utasításokért lásd: C#-függvény létrehozása az Azure-ban a parancssorból.

Mentse a függvényalkalmazás nevét, hogy később a két eseményközpont alkalmazásbeállításait konfigurálja.

A függvényalkalmazás konfigurálása

Ezután rendeljen hozzá egy hozzáférési szerepkört a függvényhez, és konfigurálja az alkalmazásbeállításokat, hogy hozzáférhessen az erőforrásokhoz.

Futtassa az alábbi parancsokat az Azure Cloud Shell vagy egy helyi Azure CLI-ben.

Megjegyzés

Ezt a szakaszt egy Olyan Azure-felhasználónak kell kitöltenie, aki jogosult az Azure-erőforrásokhoz való felhasználói hozzáférés kezelésére, beleértve az engedélyek megadását és delegálását. A követelménynek megfelelő gyakori szerepkörök a tulajdonos, a fiókadminisztrátor vagy a felhasználói hozzáférés-rendszergazda és a közreműködő kombinációja. További információ az Azure Digital Twins-szerepkörök engedélykövetelményeiről: Példány és hitelesítés beállítása.

Hozzáférési szerepkör hozzárendelése

Az Azure-függvénynek egy tulajdonosi jogkivonatot kell átadnia. A tulajdonosi jogkivonat átadásának biztosításához adja meg a függvényalkalmazásnak az Azure Digital Twins-adattulajdonos szerepkört az Azure Digital Twins-példányhoz, amely engedélyt ad a függvényalkalmazásnak adatsík-tevékenységek végrehajtására a példányon.

  1. Az alábbi paranccsal hozzon létre egy rendszer által felügyelt identitást a függvényhez (ha a függvény már rendelkezik ilyenvel, ez a parancs kinyomtatja annak részleteit). Jegyezze fel a principalId kimenet mezőjét. Ezzel az azonosítóval hivatkozhat a függvényre, így a következő lépésben engedélyeket adhat neki.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>	
    
  2. principalId Az alábbi parancs értékével adja meg a függvénynek az Azure Digital Twins-példány Azure Digital Twins-adattulajdonosi szerepkörét.

    az dt role-assignment create --dt-name <your-Azure-Digital-Twins-instance> --assignee "<principal-ID>" --role "Azure Digital Twins Data Owner"
    

Alkalmazásbeállítások konfigurálása

Ezután egy környezeti változó beállításával tegye elérhetővé az Azure Digital Twins-példány URL-címét a függvény számára.

Tipp

Az Azure Digital Twins-példány URL-címe úgy jön létre, hogy hozzáadja https:// a példány gazdagépnevének elejéhez. A gazdagép nevének és a példány összes tulajdonságának megtekintéséhez futtassa a következőt az dt show --dt-name <your-Azure-Digital-Twins-instance>: .

A következő parancs beállít egy környezeti változót a példány URL-címéhez, amelyet a függvény minden alkalommal használni fog, amikor hozzá kell férnie a példányhoz.

az functionapp config appsettings set --resource-group <your-resource-group> --name <your-function-app-name> --settings "ADT_SERVICE_URL=https://<your-Azure-Digital-Twins-instance-host-name>"

Ezután adja hozzá a környezeti változókat a függvényalkalmazás beállításaihoz, amelyek lehetővé teszik az ikerpéldány-központ és az idősorozat-központ elérését.

A korábban mentett twins hub primaryConnectionString érték használatával hozzon létre egy alkalmazásbeállítást a függvényalkalmazásban, amely tartalmazza az ikerpéldány-központot kapcsolati sztring:

az functionapp config appsettings set --settings "EventHubAppSetting-Twins=<your-twins-hub-primaryConnectionString>" --resource-group <your-resource-group> --name <your-function-app-name>

Használja az idősorközpont primaryConnectionString értékét, amelyet korábban mentett, és hozzon létre egy alkalmazásbeállítást a függvényalkalmazásban, amely tartalmazza az idősorközpontot kapcsolati sztring:

az functionapp config appsettings set --settings "EventHubAppSetting-TSI=<your-time-series-hub-primaryConnectionString>" --resource-group <your-resource-group> --name <your-function-app-name>

Time Series Insights-példány létrehozása és összekapcsolása

Ebben a szakaszban beállítja a Time Series Insights-példányt, hogy adatokat fogadjon az idősorközpontból. További információ erről a folyamatról: Azure Time Series Insights Gen2 PAYG-környezet beállítása. Kövesse az alábbi lépéseket egy Time Series Insights-környezet létrehozásához.

  1. A Azure Portal keresse meg a Time Series Insights-környezeteket, és válassza a Létrehozás gombot. Az idősor-környezet létrehozásához válassza az alábbi beállításokat.

    • Előfizetés – Válassza ki az előfizetését.
      • Erőforráscsoport – Válassza ki az erőforráscsoportot.
    • Környezet neve – Adja meg az idősor-környezet nevét.
    • Hely – Válasszon egy helyet.
    • Szint – Válassza ki a Gen2(L1) tarifacsomagot.
    • Tulajdonságnév – Adja meg a $dtId (Az id érték kiválasztásáról az Idősor-azonosító kiválasztásának ajánlott eljárásai című témakörben olvashat bővebben).
    • Tárfiók neve – Adjon meg egy tárfióknevet.
    • Meleg tároló engedélyezése – Hagyja ezt a mezőt Igen értékre állítva.

    Ezen a lapon más tulajdonságok alapértelmezett értékeit is meghagyhatja. Válassza a Tovább: Eseményforrás > gombot.

    A Time Series Insights-környezet létrehozását bemutató Azure Portal képernyőképe (1/3. rész).

    Képernyőkép a Azure Portal a Time Series Insights-környezet létrehozásáról (2/3. rész).

  2. Az Eseményforrás lapon válassza ki a következő mezőket:

    • Hozzon létre egy eseményforrást? – Válassza az Igen lehetőséget.
    • Forrás típusa – Válassza az Eseményközpont lehetőséget.
    • Név – Adja meg az eseményforrás nevét.
    • Előfizetés – Válassza ki az Azure-előfizetését.
    • Event Hub-névtér – Válassza ki a cikk korábbi részében létrehozott névteret.
    • Eseményközpont neve – Válassza ki a cikk korábbi részében létrehozott idősor-központ nevét.
    • Event Hub hozzáférési szabályzat neve – Válassza ki a cikk korábbi részében létrehozott idősor-központ hitelesítési szabályát.
    • Event Hub fogyasztói csoport – Válassza az Új lehetőséget, és adja meg az eseményközpont fogyasztói csoportjának nevét. Ezután válassza a Hozzáadás lehetőséget.
    • Tulajdonság neve – Hagyja üresen ezt a mezőt.

    Az összes részlet áttekintéséhez válassza a Véleményezés + Létrehozás gombot. Ezután kattintson ismét a Véleményezés + Létrehozás gombra az idősoros környezet létrehozásához.

    Képernyőkép a Azure Portal a Time Series Insights-környezet létrehozásáról (3/3. rész).

IoT-adatok küldése az Azure Digital Twinsbe

A Time Series Insightsba való adatküldés megkezdéséhez el kell kezdenie az Azure Digital Twins digitális ikertulajdonságainak frissítését az adatértékek módosításával.

Az az dt twin update CLI paranccsal frissítheti az előfeltételek szakaszban hozzáadott ikerpéldány egyik tulajdonságát. Ha a IoT Hub-ből származó telemetriai adatok ikerpéldány-létrehozási utasításait használta), a következő paranccsal frissítheti a termosztát67 ikerpéldány hőmérsékleti tulajdonságát a helyi parancssori felületen vagy a Cloud Shell bash terminálon. Az Azure Digital Twins-példány gazdagépneve egyetlen helyőrzővel rendelkezik (a példány felhasználóbarát nevét is használhatja a teljesítmény kismértékű csökkenésével).

az dt twin update --dt-name <your-Azure-Digital-Twins-instance-hostname-or-name> --twin-id thermostat67 --json-patch '{"op":"replace", "path":"/Temperature", "value": 20.5}'

Ismételje meg a parancsot legalább 4 alkalommal különböző tulajdonságértékekkel, hogy több olyan adatpontot hozzon létre, amelyek később megfigyelhetők a Time Series Insights-környezetben.

Tipp

Ha a digitális ikerpéldányok értékeinek manuális frissítése helyett élő szimulált adatokkal szeretné kiegészíteni ezt a cikket, először győződjön meg arról, hogy az Előfeltételek szakaszban található TIPP-t elvégezte egy olyan Azure-függvény beállításához, amely egy szimulált eszközről frissíti az ikerpéldányokat. Ezután most futtathatja az eszközt, hogy megkezdje a szimulált adatok küldését és a digitális ikerpéldány frissítését ezen az adatfolyamon keresztül.

Az adatok vizualizálása a Time Series Insightsban

Most az adatoknak a Time Series Insights-példányba kell áramlani, készen áll az elemzésre. Kövesse az alábbi lépéseket a beérkező adatok megismeréséhez.

  1. A Azure Portal keresse meg a korábban létrehozott idősor-környezet nevét. A bal oldali menübeállítások között válassza az Áttekintés lehetőséget a Time Series Insights Explorer URL-címének megtekintéséhez. Válassza ki az URL-címet a Time Series Insights-környezetben tükröződő hőmérsékletváltozások megtekintéséhez.

    Képernyőkép a Azure Portal a Time Series Insights explorer URL-címéről a Time Series Insights-környezet áttekintési lapján.

  2. Az Explorerben az ikerpéldányok a bal oldalon látható Azure Digital Twins-példányban jelennek meg. Jelölje ki azt az ikerpéldányt, amelynél módosította a tulajdonságokat, válassza ki a módosított tulajdonságot, majd válassza a Hozzáadás lehetőséget.

    Képernyőkép a Time Series Insights explorerről a termosztát67 kiválasztásának, a tulajdonság hőmérsékletének kiválasztásának és a kiemelés kiválasztásának lépéseivel.

  3. Most már látnia kell a gráfban megjelenített tulajdonságmódosításokat, ahogy az alább látható.

    Képernyőkép a Time Series Insights explorerről a kezdeti hőmérsékleti adatokkal, amely véletlenszerű értékek sorát jeleníti meg 68 és 85 között.

Ha hosszabb ideig engedélyezi a szimuláció futtatását, a vizualizáció a következőképpen fog kinézni:

Képernyőkép a Time Series Insights explorerről, ahol az egyes ikerpéldányok hőmérsékletadatai három különböző színű párhuzamos vonalban vannak ábrázolva.

Következő lépések

Az Azure Digital Twinsből a Time Series Insightsba idősorozat-adatokat küldő adatfolyam létrehozása után érdemes átgondolni, hogyan fordíthatja át az Azure Digital Twinshez tervezett eszközmodelleket a Time Series Insights eszközmodelljeibe. Az integrációs folyamat következő lépésével kapcsolatos oktatóanyagért lásd: Modellszinkronizálás az Azure Digital Twins és a Time Series Insights Gen2 között.