Samouczek: tworzenie kompleksowego rozwiązania

W tym samouczku dotyczącym 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...

  • 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 Azure Functions do kierowania symulowanych danych telemetrycznych z urządzenia 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ą Azure Functions, punktów końcowych i tras

Wymagania wstępne

Przed rozpoczęciem tego samouczka zacznij od spełnienia wymagań wstępnych w tej sekcji.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Uzyskiwanie wymaganych 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 linku przykładowego 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 .zip, wybierając przycisk Kod , a następnie pozycję Pobierz plik ZIP.

Zrzut ekranu repozytorium digital-twins-samples w witrynie GitHub z wyróżnionymi krokami pobierania ich jako pliku 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, potrzebujesz wystąpienia usługi Azure Digital Twins i wymaganych uprawnień 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 następujące wartości. Te wartości będą potrzebne do nawiązania połączenia z wystąpieniem później:

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, należy najpierw zalogować się 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>"

Porada

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

Jeśli po raz pierwszy użyto tej subskrypcji w usłudze 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 zrobiono to kiedyś w przeszłości).

az provider register --namespace 'Microsoft.DigitalTwins'

Następnie dodasz rozszerzenie Usługi Microsoft Azure IoT dla interfejsu wiersza polecenia platformy Azure, aby włączyć polecenia umożliwiające 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).

Po przejściu do folderu przejdź do pliku digital-twins-samples-main\AdtSampleApp\SampleClientApp i otwórz plik appsettings.json . Ten plik JSON zawiera zmienną konfiguracji niezbędną 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 za pomocą 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 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 do cyfrowych reprezentacji bliźniaczych (strzałka B), a następnie skonfigurujesz propagację danych za pomocą grafu bliźniaczego (strzałka C).

Diagram przedstawiający pełny scenariusz tworzenia, który przedstawia dane przepływające z urządzenia do i z usługi Azure Digital Twins za pośrednictwem różnych usług platformy Azure.

Aby pracować nad scenariuszem, 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ądzenia
  • Przykłady użycia zestawu .NET (C#) SDK ( znaleziono w narzędziu 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 Azure Functions, która aktualizuje graf usługi Azure Digital Twins na podstawie danych telemetrycznych z IoT Hub i zdarzeń usługi 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 w scenariuszu end-to-end (sekcja A):

Diagram przedstawiający fragment diagramu pełnego scenariusza tworzenia z wyróżnioną sekcją wystąpienia usługi Azure Digital Twins.

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 bliźniaczymi reprezentacjami i relacjami w przykładowym scenariuszu.

SetupBuildingScenario

Dane wyjściowe tego polecenia to szereg 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 istniałyby w rzeczywistym środowisku.

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

Diagram przedstawiający, że floor1 zawiera room21, a room21 zawiera termostat67.

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 zatrzymać uruchamianie projektu. Pozostaw jednak 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 Azure Functions, która będzie używana w tym samouczku do przetwarzania danych. Aplikacja funkcji SampleFunctionsApp zawiera dwie funkcje:

  • ProcessHubToDTEvents: przetwarza dane przychodzące IoT Hub i aktualizuje odpowiednio usługę Azure Digital Twins
  • ProcessDTRoutedData: przetwarza dane z cyfrowych reprezentacji bliźniaczych i aktualizuje odpowiednio bliźniacze reprezentacje nadrzędne 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ść usługi Azure Active Directory (Azure AD).

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

Publikowanie aplikacji

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. Ta sekcja wykonuje te akcje przy użyciu interfejsu wiersza polecenia platformy Azure.

  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> --consumption-plan-location <location> --runtime dotnet --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 lokalnie opublikować projekt:

      dotnet publish -c Release
      

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

    3. Utwórz plik zip opublikowanych plików znajdujących się w katalogu digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\bin\Release\netcoreapp3.1\publish . Nazwij spakowany folder publish.zip.

      Porada

      Jeśli używasz programu PowerShell, możesz utworzyć plik zip, kopiując pełną ścieżkę do tego katalogu \publish i wklejając go do następującego polecenia:

      Compress-Archive -Path <full-path-to-publish-directory>\* -DestinationPath .\publish.zip
      

      Polecenie cmdlet utworzy plik publish.zip w lokalizacji katalogu konsoli.

      Plik publish.zip powinien zawierać foldery bin, ProcessDTRoutedData i ProcessHubToDTEvents, a także plik host.json .

      Zrzut ekranu przedstawiający Eksplorator plików w systemie Windows z zawartością folderu zip publikowania.

    Teraz możesz zamknąć okno konsoli lokalnej, które zostało 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>"
    

    Porada

    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 ścieżki na maszynie.

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

    Zrzut ekranu przedstawiający Cloud Shell platformy Azure z wyróżnionym sposobem przekazywania plików.

    W takim przypadku plik zostanie przekazany do katalogu głównego magazynu Cloud Shell, aby można było odwoływać się do pliku bezpośrednio przy użyciu jego nazwy --src parametru polecenia (jak w, --src publish.zip).

    Pomyślne wdrożenie odpowie kodem stanu 202 i wyprowadzi 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. Następujące polecenia interfejsu wiersza polecenia umożliwiają sprawdzenie, czy obie funkcje zostały pomyślnie opublikowane. Każde polecenie ma symbole zastępcze dla grupy zasobów i nazwę aplikacji funkcji. Polecenia będą drukować 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. Ten dostęp zostanie skonfigurowany 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, z których oba można wykonać przy użyciu interfejsu wiersza polecenia platformy Azure.

Przypisywanie roli dostępu

Pierwsze ustawienie daje 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 artykule Security for Azure Digital Twins solutions (Zabezpieczenia dla rozwiązań usługi Azure Digital Twins).

  1. Użyj następującego polecenia, aby wyświetlić szczegóły tożsamości zarządzanej przez system dla funkcji. Zanotuj pole principalId w danych wyjściowych.

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

    Uwaga

    Jeśli wynik jest pusty zamiast pokazywać szczegóły tożsamości, utwórz nową tożsamość zarządzaną przez system dla funkcji przy użyciu następującego polecenia:

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>	
    

    Dane wyjściowe będą następnie wyświetlać szczegóły tożsamości, w tym wartość principalId wymaganą do następnego kroku.

  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 --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 ustawień 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ływać 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 IoT Hub

Wykres usługi Azure Digital Twins ma być sterowany przez dane telemetryczne z rzeczywistych urządzeń.

W tym kroku połączysz symulowane urządzenie termostatu zarejestrowane w 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 cyfrowa reprezentacja bliźniaczy pozostaje aktualna z danymi rzeczywistego urządzenia. W usłudze Azure Digital Twins proces kierowania danych zdarzeń z jednego miejsca do innego jest nazywany zdarzeniami routingu.

Przetwarzanie symulowanej telemetrii odbywa się w tej części kompleksowego scenariusza (strzałka B):

Diagram przedstawiający fragment diagramu pełnego scenariusza konstrukcyjnego z wyróżnioną sekcją przedstawiającą elementy przed usługą Azure Digital Twins.

Poniżej przedstawiono akcje, które należy wykonać, aby skonfigurować to połączenie urządzenia:

  1. Tworzenie centrum IoT, które będzie zarządzać symulowanym urządzeniem
  2. Łączenie centrum IoT z odpowiednią funkcją platformy Azure przez skonfigurowanie subskrypcji zdarzeń
  3. Rejestrowanie symulowanego urządzenia w usłudze IoT Hub
  4. Uruchamianie symulowanego urządzenia i generowanie danych telemetrycznych
  5. Wykonywanie zapytań względem 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 IoT Hub, usługą platformy Azure służącą do zarządzania urządzeniami i ich danymi. W tym kroku skonfigurujesz centrum IoT, 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ą usłudze IoT Hub. Użyjesz go później.

Łączenie centrum IoT z funkcją 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 IoT Hub za pośrednictwem funkcji, która aktualizuje usługę Azure Digital Twins.

W tym celu utworzysz subskrypcję zdarzeń w IoT Hub z funkcją platformy Azure jako punktem końcowym. To "subskrybuje" funkcję zdarzeń dzieje się w 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, weryfikując provisioningState wartość w wyniku:

"provisioningState": "Succeeded",

Rejestrowanie symulowanego urządzenia przy użyciu IoT Hub

Ta sekcja tworzy reprezentację urządzenia w IoT Hub z termostatem ID67. Symulowane urządzenie połączy się z tą reprezentacją, co oznacza, że zdarzenia telemetryczne będą przechodzić z urządzenia do IoT Hub. Centrum IoT jest miejscem, 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 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 parametrów połączenia centrum IoT Hub za pomocą następującego polecenia:

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 centrum IoT i centrum IoT.

Przejdź na maszynie lokalnej do pobranego folderu przykładowego, a następnie do folderu digital-twins-samples-main\DeviceSimulator\DeviceSimulator. Otwórz plik AzureIoTHub.cs do edycji. Zmień następujące wartości parametrów połączenia na wartości zebrane powyżej:

iotHubConnectionString = <your-hub-connection-string>
deviceConnectionString = <your-device-connection-string>

Zapisz plik.

Teraz, aby wyświetlić wyniki skonfigurowanej symulacji danych, przejdź do pozycji digital-twins-samples-main\DeviceSimulator\DeviceSimulator w oknie konsoli lokalnej.

Uwaga

Powinny teraz istnieć dwa otwarte okna konsoli: jeden otwarty w folderze DeviceSimulator\DeviceSimulator , a drugi z wcześniejszych, 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 IoT Hub, gdzie są następnie pobierane i przetwarzane przez funkcję platformy Azure.

Zrzut ekranu przedstawiający dane wyjściowe konsoli symulatora urządzenia z wysyłaną telemetrią temperatury.

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 IoT Hub i wywołuje interfejs API usługi Azure Digital Twins w celu zaktualizowania Temperature właściwości bliźniaczej reprezentacji termostatu67.

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

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

ObserveProperties thermostat67 Temperature

Co dwie sekundy powinny być widoczne 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 odczyty temperatury mogą być wyświetlane jako 0 przed nadejściem danych.

Zrzut ekranu przedstawiający dane wyjściowe konsoli z dziennikiem komunikatów o temperaturze z cyfrowego termostatu bliźniaczej reprezentacji 67.

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.

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

Do tej pory w tym samouczku pokazano, jak można zaktualizować 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 z danych wewnętrznych usługi.

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

Diagram przedstawiający fragment diagramu pełnego scenariusza budynku z wyróżnioną sekcją przedstawiającą elementy po usłudze 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. Skonfiguruj funkcję platformy Azure , która nasłuchuje tematu usługi Event Grid w punkcie końcowym, odbiera zdarzenia zmiany właściwości bliźniaczej reprezentacji, które są tam wysyłane, 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".

Zrzut ekranu przedstawiający wynik zapytania punktu końcowego w Cloud Shell Azure Portal z punktem końcowym z wartością provisioningState o wartości Powodzenie.

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, aż zostanie provisioningState 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.

Porada

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 pewne informacje o utworzonej trasie.

Uwaga

Aby można było skonfigurować trasę zdarzeń, która z nich korzysta, należy zakończyć aprowizację punktów końcowych (z poprzedniego kroku). Jeśli tworzenie trasy zakończy się niepowodzeniem, ponieważ punkty końcowe nie są gotowe, zaczekaj kilka minut, a następnie spróbuj ponownie.

Łą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 i 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ć pełny przepływ zdarzeń, który został skonfigurowany, i wykonać zapytanie względem 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 przy pierwszym uruchomieniu 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 ostatnio w celu zaktualizowania bliźniaczej reprezentacji pokoju21 w celu dopasowania.

Zrzut ekranu przedstawiający dane wyjściowe konsoli symulatora urządzenia z wysyłaną telemetrią temperatury.

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 projektu i zaakceptowaniu poleceń uruchom następujące polecenie, aby uzyskać temperatury zgłaszane przez cyfrowy termostat bliźniaczej reprezentacji 67 i cyfrowy pokój bliźniaczej reprezentacji bliźniaczej21.

ObserveProperties thermostat67 Temperature room21 Temperature

Co dwie sekundy powinny być widoczne zaktualizowane temperatury z wystąpienia usługi Azure Digital Twins rejestrowanego w konsoli. Zwróć uwagę, że temperatura w pomieszczeniu21 jest aktualizowana w celu dopasowania do aktualizacji termostatu67.

Zrzut ekranu przedstawiający dane wyjściowe konsoli z dziennikiem komunikatów temperatury z termostatu i pomieszczenia.

Po sprawdzeniu, czy rejestrowanie temperatur 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.

Przegląd

Oto przegląd scenariusza utworzonego w tym samouczku.

  1. Wystąpienie usługi Azure Digital Twins cyfrowo reprezentuje podłogę, pomieszczenie i termostat (reprezentowane przez sekcję A na poniższym diagramie)
  2. Dane telemetryczne symulowanego urządzenia są wysyłane do IoT Hub, gdzie funkcja platformy Azure ProcessHubToDTEvents nasłuchuje zdarzeń telemetrii. Funkcja Platformy Azure ProcessHubToDTEvents używa informacji w tych zdarzeniach do ustawienia Temperature właściwości 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, gdzie funkcja platformy Azure ProcessDTRoutedData nasłuchuje zdarzeń. Funkcja Platformy Azure ProcessDTRoutedData używa informacji w tych zdarzeniach do ustawiania Temperature właściwości na room21 (strzałka C na diagramie).

Diagram przedstawiający pełny scenariusz tworzenia, który przedstawia dane przepływające z urządzenia do i z usługi Azure Digital Twins za pośrednictwem różnych usług platformy Azure.

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 i uruchom następujące polecenie, aby usunąć grupę zasobów i wszystkie elementy, które 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 (IoT Hub, Azure Functions aplikacji 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 na żywo urządzeń.

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