Delen via


Verwerking van dubbel-naar-dubbelgebeurtenissen instellen

In dit artikel wordt beschreven hoe u gebeurtenissen van dubbel naar dubbel verzendt, zodat wanneer één digitale dubbel in de grafiek wordt bijgewerkt, gerelateerde tweelingen in de grafiek die door deze informatie worden beïnvloed, ook kunnen worden bijgewerkt. Deze gebeurtenisafhandeling helpt u bij het maken van een volledig verbonden Azure Digital Twins-grafiek, waarbij gegevens die binnenkomen in Azure Digital Twins van externe bronnen, zoals IoT Hub, worden doorgegeven via de hele grafiek.

Als u deze verwerking van dubbel-naar-dubbelgebeurtenissen wilt instellen, maakt u een Azure-functie die kijkt naar levenscyclusgebeurtenissen van dubbels. De functie herkent welke gebeurtenissen van invloed moeten zijn op andere tweelingen in de grafiek en gebruikt de gebeurtenisgegevens om de betrokken tweelingen dienovereenkomstig bij te werken.

Vereisten

Als u twin-to-twin-verwerking wilt instellen, hebt u een Azure Digital Twins-exemplaar nodig om mee te werken. Zie Een Azure Digital Twins-exemplaar en -verificatie instellen voor instructies over het maken van een exemplaar. Het exemplaar moet ten minste twee tweelingen bevatten waartussen u gegevens wilt verzenden.

U kunt desgewenst ook automatische telemetrieopname instellen via IoT Hub voor uw tweelingen. Dit proces is niet vereist om gegevens van dubbel naar dubbel te verzenden, maar het is een belangrijk onderdeel van een volledige oplossing waarbij de tweelinggrafiek wordt aangestuurd door telemetrie van liveapparaten.

Dubbel-gebeurtenissen verzenden naar een eindpunt

Als u de verwerking van dubbel-naar-dubbelgebeurtenissen wilt instellen, begint u met het maken van een eindpunt in Azure Digital Twins en een route naar dat eindpunt. Tweelingen die een update ondergaan, gebruiken de route om informatie over hun update-gebeurtenissen naar het eindpunt te verzenden (waar Event Grid ze later kan ophalen en doorgeven aan een Azure-functie voor verwerking).

Het Event Grid-onderwerp maken

Event Grid is een Azure-service waarmee gebeurtenissen van Azure-services naar andere locaties in Azure kunnen worden gerouteerd en geleverd. U kunt een Event Grid-onderwerp maken om bepaalde gebeurtenissen van een bron te verzamelen en vervolgens kunnen abonnees luisteren naar het onderwerp om de gebeurtenissen te ontvangen wanneer ze binnenkomen.

Voer in de Azure CLI de volgende opdracht uit om een Event Grid-onderwerp te maken:

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

De uitvoer van deze opdracht is informatie over het Event Grid-onderwerp dat u hebt gemaakt. Sla de naam op die u aan uw Event Grid-onderwerp hebt gegeven, omdat u deze later gaat gebruiken.

Het eindpunt maken

Maak vervolgens een Event Grid-eindpunt in Azure Digital Twins, waarmee uw exemplaar wordt verbonden met uw Event Grid-onderwerp. Gebruik de onderstaande opdracht om de naam van uw Event Grid-onderwerp in te vullen uit de vorige stap en de andere tijdelijke aanduidingenvelden, indien nodig.

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>

De uitvoer van deze opdracht is informatie over het eindpunt dat u hebt gemaakt.

Zoek naar het provisioningState veld in de uitvoer en controleer of de waarde geslaagd is.

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

Het kan ook zijn dat er 'Inrichten' staat, wat betekent dat het eindpunt nog wordt gemaakt. Zo ja, wacht u een paar seconden en voert u de volgende opdracht uit om de status van het eindpunt te controleren. Herhaal dit totdat ' provisioningState Geslaagd' wordt weergegeven.

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

Sla de naam van uw eindpunt op, omdat u het later gaat gebruiken.

De route maken

Maak vervolgens een Azure Digital Twins-route waarmee gebeurtenissen worden verzonden naar het Event Grid-eindpunt dat u hebt gemaakt.

Gebruik de volgende CLI-opdracht om de naam van uw eindpunt in te vullen uit de vorige stap en de andere tijdelijke aanduidingen( indien nodig). Met deze opdracht worden alle gebeurtenissen doorgestuurd die in de tweelinggrafiek voorkomen.

Tip

U kunt de gebeurtenissen beperken tot alleen specifieke gebeurtenissen als u wilt, met behulp van filters.

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>

De uitvoer van deze opdracht is informatie over de route die u hebt gemaakt.

Notitie

Eindpunten (uit de vorige stap) moeten klaar zijn met inrichten voordat u een gebeurtenisroute kunt instellen die deze gebruikt. Als de route niet kan worden gemaakt omdat de eindpunten niet klaar zijn, dan wacht u een paar minuten en probeert u het opnieuw.

Een Azure-functie maken om tweelingen bij te werken

Maak vervolgens een Azure-functie die luistert op het eindpunt en dubbel-gebeurtenissen ontvangt die daar via de route worden verzonden. De logica van de functie moet de informatie in de gebeurtenissen gebruiken om te bepalen welke andere tweelingen moeten worden bijgewerkt en vervolgens de updates uit te voeren.

  1. Maak eerst een nieuw Azure Functions-project.

    U kunt dit doen met Behulp van Visual Studio (zie Azure Functions ontwikkelen met Visual Studio), Visual Studio Code (zie Een C#-functie maken in Azure met behulp van Visual Studio Code) of de Azure CLI (zie Een C#-functie maken in Azure vanaf de opdrachtregel) voor instructies.

  2. Voeg de volgende pakketten toe aan uw project (u kunt Visual Studio NuGet-pakketbeheer gebruiken of de dotnet-opdracht pakket toevoegen in een opdrachtregelprogramma).

  3. Vul de logica van uw functie in. U kunt voorbeeldfunctiecode bekijken voor verschillende scenario's in de opslagplaats azure-digital-twins-getting-started om u te helpen aan de slag te gaan.

  4. Publiceer de functie naar Azure met behulp van uw voorkeursmethode.

    Zie Azure Functions ontwikkelen met Behulp van Visual Studio voor instructies over het publiceren van de functie met behulp van Visual Studio. Zie Een C#-functie maken in Azure met behulp van Visual Studio Code voor instructies over het publiceren van de functie met behulp van Visual Studio Code. Zie Een C#-functie maken in Azure vanaf de opdrachtregel voor instructies over het publiceren van de functie met behulp van de Azure CLI.

Zodra het publiceren van de functie is voltooid, kunt u deze Azure CLI-opdracht gebruiken om te controleren of het publiceren is geslaagd. Er zijn tijdelijke aanduidingen voor uw resourcegroep, de naam van uw functie-app en de naam van uw specifieke functie. Met de opdracht wordt informatie over uw functie afgedrukt.

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

De functie-app configureren

Voordat uw functie toegang heeft tot Azure Digital Twins, heeft deze informatie over het exemplaar en de machtiging nodig om deze te openen. In deze sectie wijst u een toegangsrol toe voor de functie en configureert u de toepassingsinstellingen, zodat deze het exemplaar kan vinden en openen.

Voer de volgende opdrachten uit in Azure Cloud Shell of een lokale Azure CLI.

Notitie

Deze sectie moet worden voltooid door een Azure-gebruiker met machtigingen voor het beheren van gebruikerstoegang tot Azure-resources, waaronder het verlenen en delegeren van machtigingen. Algemene rollen die aan deze vereiste voldoen, zijn Eigenaar, Accountbeheerder of de combinatie van Gebruikerstoegang Beheer istrator en Inzender. Zie Een exemplaar en verificatie instellen voor meer informatie over machtigingsvereisten voor Azure Digital Twins-rollen.

Een toegangsrol toewijzen

Voor de Azure-functie moet een Bearer-token worden doorgegeven. Om ervoor te zorgen dat het Bearer-token wordt doorgegeven, verleent u de functie-app de rol Azure Digital Twins-gegevenseigenaar voor uw Azure Digital Twins-exemplaar, waarmee de functie-app toestemming geeft om activiteiten in het gegevensvlak op het exemplaar uit te voeren.

  1. Gebruik de volgende opdracht om een door het systeem beheerde identiteit voor uw functie te maken (als de functie al een identiteit heeft, worden de details van deze opdracht afgedrukt). Noteer het principalId veld in de uitvoer. U gebruikt deze id om naar de functie te verwijzen, zodat u deze in de volgende stap machtigingen kunt verlenen.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>	
    
  2. Gebruik de principalId waarde in de volgende opdracht om de functie de rol Azure Digital Twins-gegevenseigenaar te geven voor uw Azure Digital Twins-exemplaar.

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

Toepassingsinstellingen configureren

Maak vervolgens de URL van uw Azure Digital Twins-exemplaar toegankelijk voor uw functie door er een omgevingsvariabele voor in te stellen.

Tip

De URL van het Azure Digital Twins-exemplaar wordt gemaakt door https:// toe te voegen aan het begin van de hostnaam van uw exemplaar. Als u de hostnaam, samen met alle eigenschappen van uw exemplaar, wilt zien, voert u deze uit az dt show --dt-name <your-Azure-Digital-Twins-instance>.

Met de volgende opdracht wordt een omgevingsvariabele ingesteld voor de URL van uw exemplaar die door uw functie wordt gebruikt wanneer deze toegang nodig heeft tot het exemplaar.

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

Verbinding maken de functie naar het eindpunt

Abonneer vervolgens uw Azure-functie op het Event Grid-eindpunt dat u eerder hebt gemaakt. Als u dit doet, zorgt u ervoor dat gegevens van een bijgewerkte dubbel via het Event Grid-onderwerp naar de functie kunnen stromen, waardoor de gebeurtenisgegevens zo nodig kunnen worden gebruikt om andere tweelingen bij te werken.

Als u uw Azure-functie wilt abonneren, maakt u een Event Grid-abonnement waarmee gegevens worden verzonden van het Event Grid-onderwerp dat u eerder hebt gemaakt naar uw Azure-functie.

Gebruik de volgende CLI-opdracht, waarbij u tijdelijke aanduidingen invult voor uw abonnements-id, resourcegroep, functie-app en functienaam.

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> 

Uw functie kan nu gebeurtenissen ontvangen via uw Event Grid-onderwerp. De installatie van de gegevensstroom is voltooid.

Resultaten testen en verifiëren

De laatste stap is om te controleren of de stroom werkt door een dubbel bij te werken en te controleren of gerelateerde tweelingen worden bijgewerkt volgens de logica in uw Azure-functie.

Als u het proces wilt starten, werkt u de tweeling bij die de bron van de gebeurtenisstroom is. U kunt de Azure CLI, Azure Digital Twins SDK of Azure Digital Twins REST API's gebruiken om de update uit te voeren.

Voer vervolgens een query uit op uw Azure Digital Twins-exemplaar voor de gerelateerde dubbel. U kunt de Azure CLI of de Azure Digital Twins REST API's en SDK gebruiken. Controleer of de tweeling de gegevens heeft ontvangen en bijgewerkt zoals verwacht.

Volgende stappen

In dit artikel stelt u de verwerking van dubbel-naar-dubbelgebeurtenissen in Azure Digital Twins in. Stel vervolgens een Azure-functie in om deze stroom automatisch te activeren op basis van binnenkomende telemetrie van IoT Hub-apparaten: Telemetrie opnemen vanuit IoT Hub.