Samouczek: tworzenie kompleksowego rozwiązania

W tym samouczku usługi Azure Digital Twins opisano sposób tworzenia kompleksowego rozwiązania, które demonstruje funkcjonalność usługi. Aby skonfigurować kompleksowe rozwiązanie oparte na danych na żywo ze środowiska, możesz połączyć wystąpienie usługi Azure Digital Twins z innymi usługami platformy Azure na potrzeby zarządzania urządzeniami i danymi.

W tym samouczku wykonasz...

  • Konfigurowanie wystąpienia usługi Azure Digital Twins
  • Dowiedz się więcej o przykładowym scenariuszu tworzenia i tworzeniu wystąpień wstępnie napisanych składników
  • Używanie aplikacji usługi Azure Functions do kierowania symulowanych danych telemetrycznych z urządzenia usługi IoT Hub do właściwości cyfrowej reprezentacji bliźniaczej
  • Propagacja zmian za pomocą grafu reprezentacji bliźniaczej przez przetwarzanie powiadomień cyfrowych reprezentacji bliźniaczych za pomocą usługi Azure Functions, punktów końcowych i tras

Wymagania wstępne

Przed rozpoczęciem tego samouczka zacznij od następujących wymagań wstępnych:

  • Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
  • W tym samouczku jest używana platforma .NET. Najnowszą wersję zestawu .NET SDK dla wielu platform można pobrać z witryny Pobierz platformę .NET.

Następnie przejdź do pozostałej części tej sekcji, aby skonfigurować pozostałe wymagania wstępne.

Pobieranie przykładowych zasobów

Samouczek jest oparty na kompleksowej wersji przykładowego projektu usługi Azure Digital Twins napisanego w języku C#. Pobierz przykładowy projekt na maszynie, przechodząc do przykładowego linku i wybierając przycisk Przeglądaj kod pod tytułem.

Spowoduje to przejście do repozytorium GitHub dla przykładów, które można pobrać jako plik zip, wybierając przycisk Kod , a następnie pobierz plik ZIP.

Screenshot of the digital-twins-samples repo on GitHub, highlighting the steps to download it as a zip.

Spowoduje to pobranie folderu zip na maszynę jako digital-twins-samples-main.zip. Rozpakuj folder i wyodrębnij pliki.

Przygotowywanie wystąpienia usługi Azure Digital Twins

Aby pracować z usługą Azure Digital Twins w tym artykule, musisz mieć wystąpienie usługi Azure Digital Twins i wymagane uprawnienia do korzystania z niego. Jeśli masz już skonfigurowane wystąpienie usługi Azure Digital Twins, możesz użyć tego wystąpienia i przejść do następnej sekcji. W przeciwnym razie postępuj zgodnie z instrukcjami w temacie Konfigurowanie wystąpienia i uwierzytelniania. Instrukcje zawierają informacje ułatwiające sprawdzenie, czy każdy krok został ukończony pomyślnie.

Po skonfigurowaniu wystąpienia zanotuj nazwę hosta wystąpienia. Nazwę hosta można znaleźć w witrynie Azure Portal.

Przygotowywanie środowiska dla interfejsu wiersza polecenia platformy Azure

Konfigurowanie sesji interfejsu wiersza polecenia

Aby rozpocząć pracę z usługą Azure Digital Twins w interfejsie wiersza polecenia, najpierw należy się zalogować i ustawić kontekst interfejsu wiersza polecenia na subskrypcję dla tej sesji. Uruchom następujące polecenia w oknie interfejsu wiersza polecenia:

az login
az account set --subscription "<your-Azure-subscription-ID>"

Napiwek

Możesz również użyć nazwy subskrypcji zamiast identyfikatora w powyższym poleceniu.

Jeśli po raz pierwszy użyto tej subskrypcji z usługą Azure Digital Twins, uruchom to polecenie, aby zarejestrować się w przestrzeni nazw usługi Azure Digital Twins. (Jeśli nie masz pewności, możesz uruchomić go ponownie, nawet jeśli zrobiłeś to kiedyś w przeszłości).

az provider register --namespace 'Microsoft.DigitalTwins'

Następnie dodasz rozszerzenie Microsoft Azure IoT dla interfejsu wiersza polecenia platformy Azure, aby umożliwić interakcję z usługą Azure Digital Twins i innymi usługami IoT. Uruchom to polecenie, aby upewnić się, że masz najnowszą wersję rozszerzenia:

az extension add --upgrade --name azure-iot

Teraz możesz przystąpić do pracy z usługą Azure Digital Twins w interfejsie wiersza polecenia platformy Azure.

Możesz to sprawdzić, uruchamiając polecenie az dt --help w dowolnym momencie, aby wyświetlić listę dostępnych poleceń usługi Azure Digital Twins najwyższego poziomu.

Konfigurowanie przykładowego projektu

Następnie skonfiguruj przykładową aplikację kliencką, która będzie współdziałać z wystąpieniem usługi Azure Digital Twins.

Przejdź na maszynę do folderu pobranego wcześniej z przykładów usługi Azure Digital Twins (i rozpakuj go, jeśli jeszcze tego nie zrobiono).

W folderze przejdź do folderu digital-twins-samples-main\AdtSampleApp\SampleClientApp i otwórz plik appsettings.json . Ten plik JSON zawiera zmienną konfiguracji, która jest niezbędna do uruchomienia projektu.

W treści pliku zmień instanceUrl wartość na adres URL nazwy hosta wystąpienia usługi Azure Digital Twins (dodając https:// przed nazwą hosta, jak pokazano poniżej).

{
  "instanceUrl": "https://<your-Azure-Digital-Twins-instance-host-name>"
}

Zapisz i zamknij plik.

Konfigurowanie lokalnych poświadczeń platformy Azure

W tym przykładzie użyto wartości DefaultAzureCredential (część Azure.Identity biblioteki) do uwierzytelniania użytkowników przy użyciu wystąpienia usługi Azure Digital Twins podczas uruchamiania go na komputerze lokalnym. Aby uzyskać więcej informacji na temat różnych sposobów uwierzytelniania aplikacji klienckiej za pomocą usługi Azure Digital Twins, zobacz Pisanie kodu uwierzytelniania aplikacji.

W programie DefaultAzureCredentialprzykład wyszuka poświadczenia w środowisku lokalnym, takie jak logowanie się platformy Azure w lokalnym interfejsie wiersza polecenia platformy Azure lub w programie Visual Studio lub Visual Studio Code. Z tego powodu należy zalogować się do platformy Azure lokalnie za pomocą jednego z tych mechanizmów, aby skonfigurować poświadczenia dla przykładu.

Jeśli używasz programu Visual Studio lub Visual Studio Code do uruchamiania przykładów kodu, upewnij się, że zalogowaliśmy się do tego edytora przy użyciu tych samych poświadczeń platformy Azure, których chcesz użyć do uzyskania dostępu do wystąpienia usługi Azure Digital Twins. Jeśli używasz lokalnego okna interfejsu wiersza polecenia, uruchom az login polecenie , aby zalogować się do konta platformy Azure. Następnie po uruchomieniu przykładowego kodu powinno nastąpić automatyczne uwierzytelnienie.

Wprowadzenie do scenariusza tworzenia

Przykładowy projekt używany w tym samouczku reprezentuje rzeczywisty scenariusz budynku zawierający podłogę, pomieszczenie i urządzenie termostatu. Te składniki będą reprezentowane cyfrowo w wystąpieniu usługi Azure Digital Twins, które zostanie następnie połączone z usługą IoT Hub, usługą Event Grid i dwiema funkcjami platformy Azure w celu umożliwienia przenoszenia danych.

Poniżej znajduje się diagram przedstawiający pełny scenariusz.

Najpierw utworzysz wystąpienie usługi Azure Digital Twins (sekcja A na diagramie), a następnie skonfigurujesz przepływ danych telemetrycznych urządzenia do cyfrowych reprezentacji bliźniaczych (strzałka B), a następnie skonfiguruj propagację danych za pomocą grafu bliźniaczej reprezentacji bliźniaczej (strzałka C).

Diagram of the full building scenario, which shows the data flowing from a device into and out of Azure Digital Twins through various Azure services.

Aby pracować w scenariuszu, będziesz korzystać ze składników wstępnie napisanej przykładowej aplikacji pobranej wcześniej.

Oto składniki zaimplementowane przez przykładową aplikację AdtSampleApp w scenariuszu kompilacji:

  • Uwierzytelnianie urządzeń
  • Przykłady użycia zestawu .NET (C#) SDK (znaleziono w pliku CommandLoop.cs)
  • Interfejs konsoli do wywoływania interfejsu API usługi Azure Digital Twins
  • SampleClientApp — przykładowe rozwiązanie usługi Azure Digital Twins
  • SampleFunctionsApp — aplikacja usługi Azure Functions, która aktualizuje graf usługi Azure Digital Twins na podstawie danych telemetrycznych urządzeń ze zdarzeń usługi IoT Hub i Azure Digital Twins

Tworzenie wystąpienia wstępnie utworzonego grafu bliźniaczej reprezentacji

Najpierw użyjesz rozwiązania AdtSampleApp z przykładowego projektu, aby skompilować fragment scenariusza usługi Azure Digital Twins (sekcja A):

Diagram of an excerpt from the full building scenario diagram highlighting the Azure Digital Twins instance section.

Otwórz okno konsoli lokalnej i przejdź do folderu digital-twins-samples-main\AdtSampleApp\SampleClientApp. Uruchom projekt SampleClientApp za pomocą tego polecenia dotnet:

dotnet run

Projekt rozpocznie działanie, przeprowadzi uwierzytelnianie i zaczeka na polecenie. W tej konsoli uruchom następne polecenie, aby utworzyć wystąpienie przykładowego rozwiązania usługi Azure Digital Twins.

Ważne

Jeśli masz już cyfrowe reprezentacje bliźniacze i relacje w wystąpieniu usługi Azure Digital Twins, uruchomienie tego polecenia spowoduje usunięcie ich i zastąpienie ich reprezentacjami bliźniaczymi i relacjami w przykładowym scenariuszu.

SetupBuildingScenario

Dane wyjściowe tego polecenia to seria komunikatów potwierdzenia, ponieważ trzy cyfrowe reprezentacje bliźniacze są tworzone i połączone w wystąpieniu usługi Azure Digital Twins: podłoga o nazwie floor1, pomieszczenie o nazwie room21 i czujnik temperatury o nazwie termostat67. Te cyfrowe reprezentacje bliźniacze reprezentują jednostki, które mogłyby istnieć w środowisku rzeczywistym.

Są one połączone za pośrednictwem relacji z następującym grafem bliźniaczej reprezentacji. Wykres bliźniaczej reprezentacji reprezentuje środowisko jako całość, w tym sposób interakcji jednostek i ich relacji ze sobą.

Diagram showing that floor1 contains room21, and room21 contains thermostat67.

Możesz sprawdzić utworzone bliźniacze reprezentacje bliźniacze, uruchamiając następujące polecenie, które wysyła zapytanie do połączonego wystąpienia usługi Azure Digital Twins dla wszystkich zawartych w nim cyfrowych reprezentacji bliźniaczych:

Query

Teraz możesz przestać uruchamiać projekt. Pozostaw otwarte okno konsoli w tej lokalizacji, ponieważ ta aplikacja zostanie ponownie użyta w dalszej części tego samouczka.

Konfigurowanie przykładowej aplikacji funkcji

Następnym krokiem jest skonfigurowanie aplikacji usługi Azure Functions, która będzie używana w tym samouczku do przetwarzania danych. Aplikacja funkcji SampleFunctionsApp zawiera dwie funkcje:

  • ProcessHubToDTEvents: przetwarza przychodzące dane usługi IoT Hub i aktualizuje odpowiednio usługę Azure Digital Twins
  • ProcessDTRoutedData: przetwarza dane z cyfrowych reprezentacji bliźniaczych i aktualizuje odpowiednio nadrzędne reprezentacje bliźniacze w usłudze Azure Digital Twins

W tej sekcji opublikujesz wstępnie napisaną aplikację funkcji i upewnisz się, że aplikacja funkcji będzie mogła uzyskać dostęp do usługi Azure Digital Twins, przypisując jej tożsamość firmy Microsoft Entra.

Aplikacja funkcji jest częścią pobranego przykładowego projektu znajdującego się w folderze digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp .

Opublikuj aplikację

Aby opublikować aplikację funkcji na platformie Azure, musisz utworzyć konto magazynu, a następnie utworzyć aplikację funkcji na platformie Azure, a następnie opublikować funkcje w aplikacji funkcji platformy Azure. W tej sekcji wykonasz te akcje przy użyciu interfejsu wiersza polecenia platformy Azure. W każdym poleceniu zastąp wszystkie symbole zastępcze w nawiasach kątowych szczegółami dla własnych zasobów.

  1. Utwórz konto usługi Azure Storage, uruchamiając następujące polecenie:

    az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
    
  2. Utwórz aplikację funkcji platformy Azure, uruchamiając następujące polecenie:

    az functionapp create --name <name-for-new-function-app> --storage-account <name-of-storage-account-from-previous-step> --functions-version 4 --consumption-plan-location <location> --runtime dotnet-isolated --runtime-version 7 --resource-group <resource-group>
    
  3. Następnie spakujesz funkcje i opublikujesz je w nowej aplikacji funkcji platformy Azure.

    1. Otwórz okno konsoli na maszynie i przejdź do folderu digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp wewnątrz pobranego przykładowego projektu.

    2. W konsoli uruchom następujące polecenie, aby opublikować projekt lokalnie:

      dotnet publish -c Release -o publish
      

      To polecenie publikuje projekt w katalogu digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish .

    3. Korzystając z preferowanej metody, utwórz plik zip opublikowanych plików znajdujących się wkatalogu digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish . Nadaj spakowanej nazwie folder publish.zip.

      Ważne

      Upewnij się, że folder zipped nie zawiera dodatkowej warstwy dla samego folderu publikowania. Powinna zawierać tylko zawartość, która znajdowała się w folderze publikowania.

      Oto obraz przedstawiający wygląd zawartości zip (może się to zmienić w zależności od używanej wersji platformy .NET).

      Screenshot of File Explorer in Windows showing the contents of the publish zip folder.

    Teraz możesz zamknąć okno konsoli lokalnej użyte do przygotowania projektu. Ostatni krok zostanie wykonany w interfejsie wiersza polecenia platformy Azure.

  4. W interfejsie wiersza polecenia platformy Azure uruchom następujące polecenie, aby wdrożyć opublikowane i spakowane funkcje w aplikacji funkcji platformy Azure:

    az functionapp deployment source config-zip --resource-group <resource-group> --name <name-of-your-function-app> --src "<full-path-to-publish.zip>"
    

    Napiwek

    Jeśli używasz interfejsu wiersza polecenia platformy Azure lokalnie, możesz uzyskać dostęp do pliku ZIP na komputerze bezpośrednio przy użyciu jego ścieżki na maszynie.

    Jeśli używasz usługi Azure Cloud Shell, przed uruchomieniem polecenia przekaż plik ZIP do usługi Cloud Shell za pomocą tego przycisku:

    Screenshot of the Azure Cloud Shell highlighting how to upload files.

    W takim przypadku plik zostanie przekazany do katalogu głównego magazynu usługi Cloud Shell, aby można było odwołać się bezpośrednio do pliku pod nazwą --src parametru polecenia (jak w pliku --src publish.zip).

    Pomyślne wdrożenie odpowie kodem stanu 202 i zwróci obiekt JSON zawierający szczegóły nowej funkcji. Wdrożenie zakończyło się pomyślnie, wyszukując to pole w wyniku:

    "provisioningState": "Succeeded",
    

Funkcje powinny być teraz publikowane w aplikacji funkcji na platformie Azure. Aby sprawdzić, czy obie funkcje zostały pomyślnie opublikowane, możesz użyć następujących poleceń interfejsu wiersza polecenia. Każde polecenie zawiera symbole zastępcze dla grupy zasobów i nazwę aplikacji funkcji. Polecenia będą wyświetlać informacje o funkcjach ProcessDTRoutedData i ProcessHubToDTEvents , które zostały opublikowane.

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

Następnie aplikacja funkcji będzie musiała mieć odpowiednie uprawnienia dostępu do wystąpienia usługi Azure Digital Twins. Skonfigurujesz ten dostęp w następnej sekcji.

Konfigurowanie uprawnień dla aplikacji funkcji

Istnieją dwa ustawienia, które należy ustawić dla aplikacji funkcji w celu uzyskania dostępu do wystąpienia usługi Azure Digital Twins. Oba te ustawienia można wykonać przy użyciu interfejsu wiersza polecenia platformy Azure.

Przypisywanie roli dostępu

Pierwsze ustawienie udostępnia aplikacji funkcji rolę Właściciela danych usługi Azure Digital Twins w wystąpieniu usługi Azure Digital Twins. Ta rola jest wymagana dla każdego użytkownika lub funkcji, która chce wykonywać wiele działań płaszczyzny danych w wystąpieniu. Więcej informacji na temat przypisań zabezpieczeń i ról można uzyskać w temacie Security for Azure Digital Twins solutions (Zabezpieczenia dla rozwiązań usługi Azure Digital Twins).

  1. Użyj następującego polecenia, aby utworzyć tożsamość przypisaną przez system dla funkcji. W danych wyjściowych zostaną wyświetlone szczegóły utworzonej tożsamości. Zanotuj pole principalId w danych wyjściowych, które ma być używane w następnym kroku.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
    
  2. Użyj wartości principalId w poniższym poleceniu, aby przypisać tożsamość aplikacji funkcji do roli Właściciel danych usługi Azure Digital Twins dla wystąpienia usługi Azure Digital Twins.

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

Wynikiem tego polecenia są dane wyjściowe dotyczące utworzonego przypisania roli. Aplikacja funkcji ma teraz uprawnienia dostępu do danych w wystąpieniu usługi Azure Digital Twins.

Konfigurowanie ustawienia aplikacji

Drugie ustawienie tworzy zmienną środowiskową dla funkcji z adresem URL wystąpienia usługi Azure Digital Twins. Kod funkcji użyje wartości tej zmiennej, aby odwołać się do wystąpienia. Aby uzyskać więcej informacji na temat zmiennych środowiskowych, zobacz Zarządzanie aplikacją funkcji.

Uruchom poniższe polecenie, wypełniając symbole zastępcze szczegółami zasobów.

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

Dane wyjściowe to lista ustawień funkcji platformy Azure, która powinna teraz zawierać wpis o nazwie ADT_SERVICE_URL.

Przetwarzanie symulowanych danych telemetrycznych z urządzenia usługi IoT Hub

Wykres usługi Azure Digital Twins ma być oparty na telemetrii z rzeczywistych urządzeń.

W tym kroku połączysz symulowane urządzenie termostatu zarejestrowane w usłudze IoT Hub z cyfrową reprezentacją bliźniaczą reprezentującą ją w usłudze Azure Digital Twins. Gdy symulowane urządzenie emituje dane telemetryczne, dane będą kierowane przez funkcję platformy Azure ProcessHubToDTEvents , która wyzwala odpowiednią aktualizację w cyfrowej reprezentacji bliźniaczej. W ten sposób cyfrowy bliźniak pozostaje na bieżąco z danymi rzeczywistego urządzenia. W usłudze Azure Digital Twins proces kierowania danych zdarzeń z jednego miejsca do drugiego jest nazywany zdarzeniami routingu.

Przetwarzanie symulowanych danych telemetrycznych odbywa się w tej części kompleksowego scenariusza (strzałka B):

Diagram of an excerpt from the full building scenario diagram highlighting the section that shows elements before Azure Digital Twins.

Poniżej przedstawiono akcje, które należy wykonać w celu skonfigurowania tego połączenia urządzenia:

  1. Tworzenie centrum IoT, które będzie zarządzać symulowanym urządzeniem
  2. Połączenie centrum IoT hub do odpowiedniej funkcji platformy Azure, konfigurując subskrypcję zdarzeń
  3. Rejestrowanie symulowanego urządzenia w centrum IoT
  4. Uruchamianie symulowanego urządzenia i generowanie danych telemetrycznych
  5. Wykonywanie zapytań dotyczących usługi Azure Digital Twins w celu wyświetlenia wyników na żywo

Tworzenie wystąpienia usługi IoT Hub

Usługa Azure Digital Twins jest przeznaczona do współpracy z usługą IoT Hub, usługą platformy Azure służącą do zarządzania urządzeniami i ich danymi. W tym kroku skonfigurujesz centrum IoT Hub, które będzie zarządzać przykładowym urządzeniem w tym samouczku.

W interfejsie wiersza polecenia platformy Azure użyj tego polecenia, aby utworzyć nowe centrum IoT:

az iot hub create --name <name-for-your-IoT-hub> --resource-group <your-resource-group> --sku S1

Dane wyjściowe tego polecenia to informacje o utworzonym centrum IoT.

Zapisz nazwę nadaną centrum IoT Hub. Użyjesz go później.

Połączenie centrum IoT hub do funkcji platformy Azure

Następnie połącz centrum IoT z funkcją Platformy Azure ProcessHubToDTEvents w opublikowanej wcześniej aplikacji funkcji, aby dane mogły przepływać z urządzenia w usłudze IoT Hub za pośrednictwem funkcji, która aktualizuje usługę Azure Digital Twins.

W tym celu utworzysz subskrypcję zdarzeń w usłudze IoT Hub z funkcją platformy Azure jako punktem końcowym. To "subskrybuje" funkcję zdarzeń dzieje się w usłudze IoT Hub.

Użyj następującego polecenia interfejsu wiersza polecenia, aby utworzyć subskrypcję zdarzeń. Istnieje symbol zastępczy umożliwiający wprowadzenie nazwy subskrypcji zdarzeń, a także symbole zastępcze umożliwiające wprowadzenie identyfikatora subskrypcji, grupy zasobów, nazwy centrum IoT oraz nazwy aplikacji funkcji.

az eventgrid event-subscription create --name <name-for-hub-event-subscription> --event-delivery-schema eventgridschema --source-resource-id /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Devices/IotHubs/<your-IoT-hub> --included-event-types Microsoft.Devices.DeviceTelemetry --endpoint-type azurefunction --endpoint /subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group>/providers/Microsoft.Web/sites/<your-function-app>/functions/ProcessHubToDTEvents

Dane wyjściowe będą zawierać informacje o utworzonej subskrypcji zdarzeń. Możesz potwierdzić, że operacja została ukończona pomyślnie, sprawdzając provisioningState wartość w wyniku:

"provisioningState": "Succeeded",

Napiwek

Jeśli polecenie zwróci błąd dostawcy zasobów, dodaj usługę Microsoft.EventGrid jako dostawcę zasobów do subskrypcji. Możesz to zrobić w witrynie Azure Portal, postępując zgodnie z instrukcjami w temacie Rejestrowanie dostawcy zasobów.

Rejestrowanie symulowanego urządzenia w usłudze IoT Hub

W tej sekcji zostanie utworzona reprezentacja urządzenia w usłudze IoT Hub z identyfikatorem termostat67. Symulowane urządzenie połączy się z tą reprezentacją, czyli w jaki sposób zdarzenia telemetrii będą przechodzić z urządzenia do usługi IoT Hub. Centrum IoT to miejsce, w którym subskrybowana funkcja platformy Azure z poprzedniego kroku nasłuchuje, gotowa do pobrania zdarzeń i kontynuowania przetwarzania.

W interfejsie wiersza polecenia platformy Azure utwórz urządzenie w usłudze IoT Hub za pomocą następującego polecenia:

az iot hub device-identity create --device-id thermostat67 --hub-name <your-IoT-hub-name> --resource-group <your-resource-group>

Dane wyjściowe to informacje o utworzonym urządzeniu.

Konfigurowanie i uruchamianie symulacji

Skonfiguruj symulator urządzenia, aby wysyłał dane do wystąpienia centrum IoT.

Zacznij od pobrania parametry połączenia centrum IoT Hub za pomocą następującego polecenia. Wartość parametry połączenia rozpocznie się od HostName=.

az iot hub connection-string show --hub-name <your-IoT-hub-name>

Następnie pobierz parametry połączenia urządzenia za pomocą tego polecenia:

az iot hub device-identity connection-string show --device-id thermostat67 --hub-name <your-IoT-hub-name>

Następnie podłącz te wartości do kodu symulatora urządzenia w projekcie lokalnym, aby połączyć symulator z tym urządzeniem usługi IoT Hub i centrum IoT.

Przejdź na komputerze lokalnym do pobranego folderu przykładowego i przejdź do folderu digital-twins-samples-main\DeviceSimulator\DeviceSimulator\DeviceSimulator . Otwórz plik AzureIoTHub.cs do edycji. Zmień następujące wartości parametry połączenia na wartości zebrane powyżej:

private const string iotHubConnectionString = "<your-hub-connection-string>";
//...
private const string deviceConnectionString = "<your-device-connection-string>";

Zapisz plik.

Teraz, aby wyświetlić wyniki skonfigurowanej symulacji danych, otwórz nowe okno konsoli lokalnej i przejdź do pozycji digital-twins-samples-main\DeviceSimulator\DeviceSimulator.

Uwaga

Teraz powinny istnieć dwa otwarte okna konsoli: jeden otwarty w folderze DeviceSimulator\DeviceSimulator , a drugi z wcześniejszego , który jest nadal otwarty w folderze AdtSampleApp\SampleClientApp .

Użyj następującego polecenia dotnet, aby uruchomić projekt symulatora urządzenia:

dotnet run

Projekt rozpocznie działanie i rozpocznie wyświetlanie symulowanych komunikatów telemetrycznych dotyczących temperatury. Te komunikaty są wysyłane do usługi IoT Hub, gdzie są następnie pobierane i przetwarzane przez funkcję platformy Azure.

Screenshot of the console output of the device simulator showing temperature telemetry being sent.

Nie musisz wykonywać żadnych innych czynności w tej konsoli, ale pozostaw ją uruchomioną podczas wykonywania następnych kroków.

Wyświetlanie wyników w usłudze Azure Digital Twins

Opublikowana wcześniej funkcja ProcessHubToDTEvents nasłuchuje danych usługi IoT Hub i wywołuje interfejs API usługi Azure Digital Twins w celu zaktualizowania Temperature właściwości bliźniaczej reprezentacji termostat67.

Aby wyświetlić dane po stronie usługi Azure Digital Twins, przejdź do innego okna konsoli, które jest otwarte dla folderu AdtSampleApp\SampleClientApp . Uruchom projekt SampleClientApp za pomocą polecenia dotnet run.

dotnet run

Po uruchomieniu projektu i zaakceptowaniu poleceń uruchom następujące polecenie, aby uzyskać temperatury zgłaszane przez termostat cyfrowej reprezentacji bliźniaczej67:

ObserveProperties thermostat67 Temperature

Co dwie sekundy powinno zostać wyświetlone zaktualizowane temperatury z wystąpienia usługi Azure Digital Twins rejestrowanego w konsoli. Powinny one odzwierciedlać wartości generowane przez symulator danych (można umieścić okna konsoli obok siebie, aby sprawdzić, czy wartości są współrzędne).

Uwaga

Propagacja danych z urządzenia do bliźniaczej reprezentacji może potrwać kilka sekund. Pierwsze kilka odczytów temperatury może być wyświetlanych jako 0 przed rozpoczęciem nadejścia danych.

Screenshot of the console output showing log of temperature messages from digital twin thermostat67.

Po sprawdzeniu, czy rejestrowanie temperatury na żywo działa pomyślnie, możesz zatrzymać uruchamianie obu projektów. Pozostaw otwarte okna konsoli, ponieważ będą one ponownie używane w dalszej części samouczka.

Propagacja zdarzeń usługi Azure Digital Twins za pomocą grafu

Do tej pory w tym samouczku pokazano, jak można aktualizować usługę Azure Digital Twins na podstawie danych urządzeń zewnętrznych. Następnie zobaczysz, jak zmiany w jednej cyfrowej reprezentacji bliźniaczej mogą być propagowane za pomocą grafu usługi Azure Digital Twins — innymi słowy, jak aktualizować bliźniacze reprezentacje bliźniacze z danych wewnętrznych usługi.

W tym celu użyjesz funkcji ProcessDTRoutedData Azure, aby zaktualizować bliźniacze reprezentację pokoju po zaktualizowaniu połączonej bliźniaczej reprezentacji termostatu. Funkcja aktualizacji odbywa się w tej części kompleksowego scenariusza (strzałka C):

Diagram of an excerpt from the full building scenario diagram highlighting the section that shows the elements after Azure Digital Twins.

Poniżej przedstawiono akcje, które należy wykonać w celu skonfigurowania tego przepływu danych:

  1. Tworzenie tematu usługi Event Grid w celu umożliwienia przenoszenia danych między usługami platformy Azure
  2. Tworzenie punktu końcowego w usłudze Azure Digital Twins łączącego wystąpienie z tematem usługi Event Grid
  3. Konfigurowanie trasy w usłudze Azure Digital Twins, która wysyła zdarzenia zmiany właściwości bliźniaczej reprezentacji do punktu końcowego
  4. Konfigurowanie funkcji platformy Azure, która nasłuchuje tematu usługi Event Grid w punkcie końcowym, odbiera wysyłane tam zdarzenia zmiany właściwości bliźniaczej reprezentacji i aktualizuje odpowiednio inne reprezentacje bliźniacze na grafie

Tworzenie tematu usługi Event Grid

Event Grid to usługa platformy Azure, która ułatwia kierowanie i dostarczanie zdarzeń z usług platformy Azure do innych miejsc na platformie Azure. Możesz utworzyć temat usługi Event Grid w celu zbierania określonych zdarzeń ze źródła, a następnie subskrybenci mogą nasłuchiwać tematu w celu odbierania zdarzeń w miarę ich przechodzenia.

W interfejsie wiersza polecenia platformy Azure uruchom następujące polecenie, aby utworzyć temat usługi Event Grid:

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

Dane wyjściowe tego polecenia to informacje o utworzonym temacie usługi Event Grid. Zapisz nazwę nadaną tematowi usługi Event Grid, ponieważ będzie on używany później.

Tworzenie punktu końcowego

Następnie utwórz punkt końcowy usługi Event Grid w usłudze Azure Digital Twins, który połączy wystąpienie z tematem usługi Event Grid. Użyj poniższego polecenia, wypełniając nazwę tematu usługi Event Grid z poprzedniego kroku i inne pola symboli zastępczych zgodnie z potrzebami.

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>

Dane wyjściowe tego polecenia to informacje o utworzonym punkcie końcowym.

provisioningState Wyszukaj pole w danych wyjściowych i sprawdź, czy wartość to "Powodzenie".

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

Może również powiedzieć "Aprowizowanie", co oznacza, że punkt końcowy jest nadal tworzony. Jeśli tak, zaczekaj kilka sekund i uruchom następujące polecenie, aby sprawdzić stan punktu końcowego. Powtarzaj, dopóki nie provisioningState zostanie wyświetlony komunikat "Powodzenie".

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

Zapisz nazwę punktu końcowego, ponieważ będzie on używany później.

Tworzenie trasy

Następnie utwórz trasę usługi Azure Digital Twins, która wysyła zdarzenia do utworzonego punktu końcowego usługi Event Grid.

Użyj następującego polecenia interfejsu wiersza polecenia, wypełniając nazwę punktu końcowego z poprzedniego kroku i inne pola symboli zastępczych zgodnie z potrzebami. To polecenie przekazuje wszystkie zdarzenia występujące na grafie bliźniaczej reprezentacji.

Napiwek

Zdarzenia można ograniczyć tylko do określonych, jeśli chcesz, używając filtrów.

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>

Dane wyjściowe tego polecenia to niektóre informacje o utworzonej trasie.

Uwaga

Punkty końcowe (z poprzedniego kroku) muszą zostać zakończone aprowizację, zanim będzie można skonfigurować trasę zdarzeń, która z nich korzysta. Jeśli tworzenie trasy zakończy się niepowodzeniem, ponieważ punkty końcowe nie są gotowe, zaczekaj kilka minut, a następnie spróbuj ponownie.

Połączenie funkcji platformy Azure

Następnie zasubskrybuj funkcję Platformy Azure ProcessDTRoutedData do utworzonego wcześniej tematu usługi Event Grid, aby dane telemetryczne mogły przepływać z bliźniaczej reprezentacji termostat67 za pośrednictwem tematu usługi Event Grid do funkcji, która odpowiednio przechodzi do usługi Azure Digital Twins i aktualizuje bliźniaczą reprezentację room21.

W tym celu utworzysz subskrypcję usługi Event Grid, która wysyła dane z tematu usługi Event Grid utworzonego wcześniej do funkcji Platformy Azure ProcessDTRoutedData .

Użyj następującego polecenia interfejsu wiersza polecenia, aby utworzyć subskrypcję zdarzeń. Istnieje symbol zastępczy umożliwiający wprowadzenie nazwy dla tej subskrypcji zdarzeń, a także symbole zastępcze umożliwiające wprowadzenie identyfikatora subskrypcji, grupy zasobów, nazwy tematu usługi Event Grid oraz nazwy aplikacji funkcji.

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

Uruchamianie symulacji i wyświetlanie wyników

Teraz zdarzenia powinny mieć możliwość przepływu z symulowanego urządzenia do usługi Azure Digital Twins oraz za pośrednictwem grafu usługi Azure Digital Twins w celu zaktualizowania reprezentacji bliźniaczych zgodnie z potrzebami. W tej sekcji ponownie uruchomisz symulator urządzenia, aby uruchomić skonfigurowany pełny przepływ zdarzeń i wykonać zapytanie dotyczące usługi Azure Digital Twins, aby wyświetlić wyniki na żywo

Przejdź do okna konsoli, które jest otwarte w folderze DeviceSimulator\DeviceSimulator , a następnie uruchom projekt symulatora urządzenia za pomocą polecenia dotnet run.

Podobnie jak podczas pierwszego uruchomienia symulatora urządzenia, projekt rozpocznie działanie i wyświetli symulowane komunikaty telemetryczne dotyczące temperatury. Te zdarzenia przechodzą przez przepływ skonfigurowany wcześniej w celu zaktualizowania bliźniaczej reprezentacji termostat67, a następnie przechodząc przez przepływ skonfigurowany niedawno w celu zaktualizowania bliźniaczej reprezentacji room21 w celu dopasowania.

Screenshot of the console output of the device simulator showing temperature telemetry being sent.

Nie musisz wykonywać żadnych innych czynności w tej konsoli, ale pozostaw ją uruchomioną podczas wykonywania następnych kroków.

Aby wyświetlić dane po stronie usługi Azure Digital Twins, przejdź do innego okna konsoli, które jest otwarte w folderze AdtSampleApp\SampleClientApp, a następnie uruchom projekt SampleClientApp za pomocą polecenia dotnet run.

Po uruchomieniu i zaakceptowaniu poleceń w projekcie uruchom następujące polecenie, aby uzyskać temperatury zgłaszane zarówno przez cyfrowy termostat twin67, jak i cyfrowy pokój bliźniaczej reprezentacji bliźniaczej21.

ObserveProperties thermostat67 Temperature room21 Temperature

Co dwie sekundy powinno zostać wyświetlone zaktualizowane temperatury z wystąpienia usługi Azure Digital Twins rejestrowanego w konsoli. Zwróć uwagę, że temperatura pomieszczenia21 jest aktualizowana w celu dopasowania aktualizacji do termostatu67.

Screenshot of the console output showing a log of temperature messages, from a thermostat and a room.

Po zweryfikowaniu, że rejestrowanie temperatury na żywo z wystąpienia działa pomyślnie, możesz zatrzymać uruchamianie obu projektów. Możesz również zamknąć oba okna konsoli, ponieważ samouczek został ukończony.

Wykonaj przegląd

Poniżej przedstawiono przegląd scenariusza utworzonego w tym samouczku.

  1. Wystąpienie usługi Azure Digital Twins cyfrowo reprezentuje podłogę, pomieszczenie i termostat (reprezentowany przez sekcję A na poniższym diagramie)
  2. Symulowane dane telemetryczne urządzenia są wysyłane do usługi IoT Hub, gdzie funkcja ProcessHubToDTEvents platformy Azure nasłuchuje zdarzeń telemetrii. Funkcja Platformy Azure ProcessHubToDTEvents używa informacji w tych zdarzeniach, aby ustawić Temperature właściwość na termostat67 (strzałka B na diagramie).
  3. Zdarzenia zmiany właściwości w usłudze Azure Digital Twins są kierowane do tematu usługi Event Grid, w którym funkcja Platformy Azure ProcessDTRoutedData nasłuchuje zdarzeń. Funkcja ProcessDTRoutedData platformy Azure używa informacji w tych zdarzeniach, aby ustawić Temperature właściwość na room21 (strzałka C na diagramie).

Diagram from the beginning of the article showing the full building scenario.

Czyszczenie zasobów

Po ukończeniu tego samouczka możesz wybrać zasoby, które chcesz usunąć, w zależności od tego, co chcesz zrobić dalej.

  • Jeśli nie potrzebujesz żadnych zasobów utworzonych w tym samouczku, możesz usunąć wystąpienie usługi Azure Digital Twins i wszystkie inne zasoby z tego artykułu za pomocą polecenia az group delete interfejsu wiersza polecenia. Spowoduje to usunięcie wszystkich zasobów platformy Azure w grupie zasobów, a także samej grupy zasobów.

    Ważne

    Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów oraz wszystkie zawarte w niej zasoby zostaną trwale usunięte. Uważaj, aby nie usunąć przypadkowo niewłaściwych zasobów lub niewłaściwej grupy zasobów.

    Otwórz usługę Azure Cloud Shell lub lokalne okno interfejsu wiersza polecenia, a następnie uruchom następujące polecenie, aby usunąć grupę zasobów i wszystko, co zawiera.

    az group delete --name <your-resource-group>
    
  • Jeśli chcesz nadal korzystać z wystąpienia usługi Azure Digital Twins skonfigurowanego w tym artykule, ale wyczyścić niektóre lub wszystkie jego modele, reprezentacje bliźniacze i relacje, możesz użyć poleceń az dt interfejsu wiersza polecenia, aby usunąć elementy, które chcesz usunąć.

    Ta opcja nie spowoduje usunięcia żadnych innych zasobów platformy Azure utworzonych w tym samouczku (usługa IoT Hub, aplikacja usługi Azure Functions itd.). Można je usunąć indywidualnie przy użyciu poleceń dt odpowiednich dla każdego typu zasobu.

Możesz również usunąć folder projektu z komputera lokalnego.

Następne kroki

W tym samouczku utworzono kompleksowe scenariusze pokazujące, że usługa Azure Digital Twins jest sterowana danymi urządzenia na żywo.

Następnie zapoznaj się z dokumentacją koncepcji, aby dowiedzieć się więcej o elementach, z których pracowaliśmy w samouczku: