Konfigurera hantering av tvilling-till-tvilling-händelser

Den här artikeln visar hur du skickar händelser från tvilling till tvilling, så att när en digital tvilling i diagrammet uppdateras kan även relaterade tvillingar i diagrammet som påverkas av den här informationen uppdateras. Den här händelsehanteringen hjälper dig att skapa en helt ansluten Azure Digital Twins-graf, där data som kommer till Azure Digital Twins från externa källor som IoT Hub sprids via hela diagrammet.

Om du vill konfigurera den här tvilling-till-tvilling-händelsehanteringen skapar du en Azure-funktion som bevakar dubbla livscykelhändelser. Funktionen identifierar vilka händelser som ska påverka andra tvillingar i diagrammet och använder händelsedata för att uppdatera de berörda tvillingarna i enlighet med detta.

Förutsättningar

För att konfigurera hantering av tvilling till tvilling behöver du en Azure Digital Twins-instans att arbeta med. Anvisningar om hur du skapar en instans finns i Konfigurera en Azure Digital Twins-instans och autentisering. Instansen bör innehålla minst två tvillingar som du vill skicka data mellan.

Du kan också konfigurera automatisk telemetriinmatning via IoT Hub för dina tvillingar. Den här processen krävs inte för att skicka data från tvilling till tvilling, men det är en viktig del av en komplett lösning där tvillingdiagrammet drivs av telemetri för liveenheter.

Skicka tvillinghändelser till en slutpunkt

Om du vill konfigurera händelsehantering mellan två och två börjar du med att skapa en slutpunkt i Azure Digital Twins och en väg till slutpunkten. Tvillingar som genomgår en uppdatering använder vägen för att skicka information om sina uppdateringshändelser till slutpunkten (där Event Grid kan hämta dem senare och skicka dem till en Azure-funktion för bearbetning).

Skapa Event Grid-ämnet

Event Grid är en Azure-tjänst som hjälper till att dirigera och leverera händelser från Azure-tjänster till andra platser i Azure. Du kan skapa ett Event Grid-ämne för att samla in vissa händelser från en källa och sedan kan prenumeranter lyssna på ämnet för att ta emot händelserna när de kommer igenom.

I Azure CLI kör du följande kommando för att skapa ett Event Grid-ämne:

az eventgrid topic create --resource-group <your-resource-group> --name <name-for-your-event-grid-topic> --location <region>

Utdata från det här kommandot är information om det Event Grid-ämne som du har skapat. Spara namnet som du gav till event grid-ämnet eftersom du kommer att använda det senare.

Skapa slutpunkten

Skapa sedan en Event Grid-slutpunkt i Azure Digital Twins, som ansluter din instans till event grid-ämnet. Använd kommandot nedan och fyll i namnet på eventrutnätet från föregående steg och de andra platshållarfälten efter behov.

az dt endpoint create eventgrid --dt-name <Azure-Digital-Twins-instance> --eventgrid-resource-group <your-resource-group> --eventgrid-topic <your-event-grid-topic> --endpoint-name <name-for-your-Azure-Digital-Twins-endpoint>

Utdata från det här kommandot är information om slutpunkten som du har skapat.

Leta efter fältet provisioningState i utdata och kontrollera att värdet är "Lyckades".

Screenshot of the result of the endpoint query in the Cloud Shell of the Azure portal, showing the endpoint with a provisioningState of Succeeded.

Det kan också stå "Etablering", vilket innebär att slutpunkten fortfarande skapas. I så fall väntar du några sekunder och kör följande kommando för att kontrollera slutpunktens status. Upprepa tills visar provisioningState "Lyckades".

az dt endpoint show --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> 

Spara namnetslutpunkten eftersom du kommer att använda den senare.

Skapa vägen

Skapa sedan en Azure Digital Twins-väg som skickar händelser till Event Grid-slutpunkten som du skapade.

Använd följande CLI-kommando och fyll i namnet på slutpunkten från föregående steg och de andra platshållarfälten efter behov. Det här kommandot vidarebefordrar alla händelser som inträffar i tvillingdiagrammet.

Dricks

Du kan begränsa händelserna till endast specifika händelser om du vill med hjälp av filter.

az dt route create --dt-name <your-Azure-Digital-Twins-instance> --endpoint-name <your-Azure-Digital-Twins-endpoint> --route-name <name-for-your-Azure-Digital-Twins-route>

Utdata från det här kommandot är viss information om den väg som du har skapat.

Kommentar

Slutpunkter (från föregående steg) måste vara slutförda etablering innan du kan konfigurera en händelseväg som använder dem. Om vägen inte kan skapas på grund av att slutpunkterna inte är klara väntar du några minuter och försöker sedan igen.

Skapa Azure-funktion för att uppdatera tvillingar

Skapa sedan en Azure-funktion som lyssnar på slutpunkten och tar emot tvillinghändelser som skickas dit via vägen. Funktionens logik bör använda informationen i händelserna för att avgöra vilka andra tvillingar som behöver uppdateras och sedan utföra uppdateringarna.

  1. Skapa först ett nytt Azure Functions-projekt.

    Du kan göra detta med Visual Studio (anvisningar finns i Utveckla Azure Functions med Visual Studio), Visual Studio Code (anvisningar finns i Skapa en C#-funktion i Azure med Visual Studio Code) eller Azure CLI (instruktioner finns i Skapa en C#-funktion i Azure från kommandoraden).

  2. Lägg till följande paket i projektet (du kan använda Visual Studio NuGet-pakethanteraren eller kommandot dotnet add package i ett kommandoradsverktyg).

  3. Fyll i logiken i funktionen. Du kan visa exempelfunktionskod för flera scenarier på lagringsplatsen azure-digital-twins-getting-started för att hjälpa dig att komma igång.

  4. Publicera funktionen till Azure med den metod du föredrar.

    Anvisningar om hur du publicerar funktionen med Visual Studio finns i Utveckla Azure Functions med Visual Studio. Anvisningar om hur du publicerar funktionen med Visual Studio Code finns i Skapa en C#-funktion i Azure med Hjälp av Visual Studio Code. Anvisningar om hur du publicerar funktionen med hjälp av Azure CLI finns i Skapa en C#-funktion i Azure från kommandoraden.

När publiceringsprocessen har slutförts kan du använda det här Azure CLI-kommandot för att kontrollera att publiceringen lyckades. Det finns platshållare för resursgruppen, namnet på funktionsappen och namnet på din specifika funktion. Kommandot skriver ut information om din funktion.

az functionapp function show --resource-group <your-resource-group> --name <your-function-app> --function-name <your-function>

Konfigurera funktionsappen

Innan funktionen kan komma åt Azure Digital Twins behöver den viss information om instansen och behörighet att komma åt den. I det här avsnittet tilldelar du en åtkomstroll för funktionen och konfigurerar programinställningarna så att den kan hitta och komma åt instansen.

Kör följande kommandon i Azure Cloud Shell eller ett lokalt Azure CLI.

Kommentar

Det här avsnittet måste slutföras av en Azure-användare som har behörighet att hantera användaråtkomst till Azure-resurser, inklusive beviljande och delegering av behörigheter. Vanliga roller som uppfyller detta krav är ägare, kontoadministratör eller kombinationen av administratör och deltagare för användaråtkomst. Mer information om behörighetskrav för Azure Digital Twins-roller finns i Konfigurera en instans och autentisering.

Tilldela en åtkomstroll

Azure-funktionen kräver att en ägartoken skickas till den. För att se till att ägartoken skickas beviljar du funktionsappen rollen Azure Digital Twins-dataägare för din Azure Digital Twins-instans, vilket ger funktionsappen behörighet att utföra dataplansaktiviteter på instansen.

  1. Använd följande kommando för att skapa en systemhanterad identitet för din funktion (om funktionen redan har en kommer det här kommandot att skriva ut sin information). Anteckna fältet principalId i utdata. Du använder det här ID:t för att referera till funktionen så att du kan ge den behörighet i nästa steg.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>	
    
  2. principalId Använd värdet i följande kommando för att ge funktionen rollen Azure Digital Twins-dataägare för din Azure Digital Twins-instans.

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

Konfigurera programinställningar

Gör sedan URL:en för din Azure Digital Twins-instans tillgänglig för din funktion genom att ange en miljövariabel för den.

Dricks

Azure Digital Twins-instansens URL skapas genom att https:// läggs till i början av instansens värdnamn. Om du vill se värdnamnet, tillsammans med alla egenskaper för din instans, kör du az dt show --dt-name <your-Azure-Digital-Twins-instance>.

Följande kommando anger en miljövariabel för instansens URL som funktionen ska använda när den behöver komma åt instansen.

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>"

Anslut funktionen till slutpunkten

Prenumerera sedan din Azure-funktion på Event Grid-slutpunkten som du skapade tidigare. Detta säkerställer att data kan flöda från en uppdaterad tvilling via Event Grid-ämnet till funktionen, som kan använda händelseinformationen för att uppdatera andra tvillingar efter behov.

Om du vill prenumerera på din Azure-funktion skapar du en Event Grid-prenumeration som skickar data från Event Grid-ämnet som du skapade tidigare till din Azure-funktion.

Använd följande CLI-kommando och fyll i platshållare för ditt prenumerations-ID, resursgrupp, funktionsapp och funktionsnamn.

az eventgrid event-subscription create --name <name-for-your-event-subscription> --source-resource-id /subscriptions/<subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.EventGrid/topics/<your-event-grid-topic> --endpoint-type azurefunction --endpoint /subscriptions/<subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Web/sites/<your-function-app-name>/functions/<function-name> 

Nu kan din funktion ta emot händelser via event grid-ämnet. Dataflödeskonfigurationen är klar.

Testa och verifiera resultat

Det sista steget är att kontrollera att flödet fungerar genom att uppdatera en tvilling och kontrollera att relaterade tvillingar uppdateras enligt logiken i din Azure-funktion.

Om du vill starta processen uppdaterar du tvillingen som är källan till händelseflödet. Du kan använda AZURE CLI, Azure Digital Twins SDK eller Azure Digital Twins REST API:er för att göra uppdateringen.

Fråga sedan din Azure Digital Twins-instans efter den relaterade tvillingen. Du kan använda Azure CLI eller Azure Digital Twins REST API:er och SDK. Kontrollera att tvillingen tog emot data och uppdaterades som förväntat.

Nästa steg

I den här artikeln konfigurerar du händelsehantering mellan två och två i Azure Digital Twins. Konfigurera sedan en Azure-funktion för att utlösa det här flödet automatiskt baserat på inkommande telemetri från IoT Hub-enheter: Mata in telemetri från IoT Hub.