Udostępnij przez


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ć pełne 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 nauczysz się...

  • Konfigurowanie wystąpienia usługi Azure Digital Twins
  • Dowiedz się więcej o przykładowym scenariuszu kompilowania i tworzeniu wystąpień wstępnie napisanych składników
  • Używanie aplikacji Azure Functions do kierowania symulowanych danych urządzenia z urządzenia IoT Hub do właściwości cyfrowej reprezentacji bliźniaczej
  • Propagowanie zmian za pośrednictwem grafu bliźniaczej reprezentacji przez przetwarzanie powiadomień o cyfrowej reprezentacji bliźniaczej za pomocą 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 Azure, przed rozpoczęciem utwórz darmowe konto.
  • W tym samouczku jest używana platforma .NET. Najnowszą wersję zestawu .NET SDK dla wielu platform można pobrać z witryny Download .NET.

Następnie kontynuuj pracę w pozostałej części tej sekcji, aby skonfigurować pozostałe wymagania wstępne.

Pobierz przykładowe zasoby

Samouczek jest oparty na kompleksowym przykładowym projekcie usługi Azure Digital Twins napisanym w języku C#. Pobierz przykładowy projekt na maszynie, przechodząc do przykładowego linku i wybierając przycisk Przeglądaj kod poniżej tytułu.

Ta akcja spowoduje 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 go jako pliku zip.

Ta czynność spowoduje pobranie folderu .zip na komputer w digital-twins-samples-main.zip. Rozpakuj folder i wyodrębnij pliki.

Przygotuj instancję Azure Digital Twins

Aby pracować z usługą Azure Digital Twins w tym artykule, potrzebujesz instancji usługi Azure Digital Twins i wymaganych uprawnień do korzystania z niej. Jeśli masz już skonfigurowaną instancję Azure Digital Twins, możesz użyć tej instancji i przejść do następnej sekcji. W przeciwnym razie postępuj zgodnie z instrukcjami zawartymi w Konfigurowanie instancji i uwierzytelnianie. Instrukcje zawierają informacje ułatwiające sprawdzenie, czy każdy krok został ukończony pomyślnie.

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

Przygotuj swoje środowisko dla Azure CLI

Konfigurowanie sesji CLI

Aby rozpocząć pracę z Azure Digital Twins w CLI, najpierw należy się zalogować i ustawić kontekst CLI na swoją subskrypcję na tę sesję. Uruchom te polecenia w oknie CLI:

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

Wskazówka

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

Jeśli używasz tej subskrypcji z usługą Azure Digital Twins po raz pierwszy, uruchom następujące 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 uruchomiono go kiedyś w przeszłości).

az provider register --namespace 'Microsoft.DigitalTwins'

Następnie dodaj rozszerzenie Microsoft Azure IoT dla Azure CLI, aby umożliwić korzystanie z poleceń do interakcji z 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 pracować z usługą Azure Digital Twins w interfejsie wiersza polecenia platformy Azure.

Ten stan można 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 wchodzić w interakcje z wystąpieniem usługi Azure Digital Twins.

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

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

W treści pliku zmień adres URL nazwy hosta instanceUrl 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 elementu DefaultAzureCredential (część Azure.Identity biblioteki) do uwierzytelniania w wystąpieniu usługi Azure Digital Twins podczas uruchamiania przykładu na komputerze lokalnym. DefaultAzureCredential jest jedną z wielu opcji uwierzytelniania. 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 DefaultAzureCredentialpróbka wyszukuje poświadczenia w środowisku lokalnym, na przykład logowanie do platformy Azure w lokalnym interfejsie wiersza polecenia platformy Azure lub w programie Visual Studio czy Visual Studio Code. Powinno się zalogować się do platformy Azure lokalnie za pomocą jednego z tych mechanizmów, aby skonfigurować poświadczenia dla przykładowego projektu.

Jeśli używasz programu Visual Studio lub Visual Studio Code do uruchamiania przykładów kodu, upewnij się, że zalogujesz się do tego edytora przy użyciu tych samych poświadczeń platformy Azure, których chcesz użyć do uzyskania dostępu do instancji Azure Digital Twins. Jeśli korzystasz z lokalnego okna interfejsu wiersza poleceń, uruchom polecenie az login, aby zalogować się do swojego konta platformy Azure. Po zalogowaniu przykładowy kod uwierzytelnia Cię automatycznie po uruchomieniu.

Wprowadzenie do scenariusza budowania

Przykładowy projekt używany w tym samouczku reprezentuje rzeczywisty scenariusz budowy zawierający podłogę, pomieszczenie i termostat. Te składniki są cyfrowo reprezentowane w wystąpieniu usługi Azure Digital Twins, które jest połączone z IoT Hub, Event Grid i dwiema funkcjami platformy Azure w celu umożliwienia przenoszenia danych.

Na poniższym diagramie przedstawiono pełny scenariusz.

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

Diagram pełnego scenariusza budowania, 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 przejść przez scenariusz, należy wejść w interakcję ze składnikami wstępnie napisanej przykładowej aplikacji, która została wcześniej pobrana.

Poniżej przedstawiono składniki zaimplementowane przez przykładową aplikację AdtSampleApp scenariusza budowania:

  • Uwierzytelnianie urządzeń
  • Przykłady użycia zestawu .NET (C#) SDK (znalezione w 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 wykres usługi Azure Digital Twins na podstawie danych urządzenia ze zdarzeń IoT Hub i Azure Digital Twins

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

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

Diagram przedstawiający fragment pełnego diagramu scenariusza budowania z wyróżnieniem sekcji 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 dotnet polecenia:

dotnet run

Projekt zostanie uruchomiony, przeprowadzi uwierzytelnianie i czeka 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 dla przykładowego scenariusza.

SetupBuildingScenario

Dane wyjściowe tego polecenia to seria komunikatów potwierdzenia, gdy trzy cyfrowe reprezentacje bliźniacze są tworzone i łączone w wystąpieniu usługi Azure Digital Twins: piętro o nazwie floor1, pomieszczenie o nazwie room21 i czujnik temperatury o nazwie thermostat67. Te cyfrowe bliźniaki reprezentują jednostki, które istniałyby w środowisku świata rzeczywistego.

Są one połączone za pośrednictwem relacji z poniższym grafem bliźniaczej reprezentacji. Graf bliźniaczej reprezentacji reprezentuje środowisko jako całość, w tym sposób, w jaki jednostki wchodzą ze sobą w interakcje i są ze sobą powiązane.

Diagram przedstawiający, że piętro1 zawiera pomieszczenie 21, a pomieszczenie 21 zawiera termostat67.

Utworzone bliźniacze reprezentacje bliźniacze można zweryfikować, 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 bliźniaczych reprezentacji cyfrowych:

Query

Teraz możesz zatrzymać uruchamianie projektu. Pozostaw jednak otwarte okno konsoli w tej lokalizacji, ponieważ ponownie użyjesz tej aplikacji w dalszej części 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 przychodzące dane IoT Hub i odpowiednio aktualizuje usługę Azure Digital Twins
  • ProcessDTRoutedData: przetwarza dane z cyfrowych reprezentacji bliźniaczych i odpowiednio aktualizuje 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 może uzyskiwać dostęp do usługi Azure Digital Twins, przypisując jej tożsamość 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, należy utworzyć konto magazynu, a następnie utworzyć aplikację funkcji na platformie Azure, a na koniec opublikować funkcje w aplikacji funkcji platformy Azure. W tej sekcji wykonano 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 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 --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 (jeśli używasz lokalnego interfejsu wiersza polecenia platformy Azure, może to być to samo okno) i przejdź do folderu digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp w pobranym przykładowym projekcie.

    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 z opublikowanymi plikami, które znajdują się w katalogu digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish . Nazwij spakowany folder publish.zip.

      Ważne

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

      Oto obraz przedstawiający, jak może wyglądać zawartość pliku zip (może się zmienić w zależności od wersji platformy .NET).

      Zrzut ekranu Eksploratora plików w systemie Windows przedstawiający zawartość folderu zip do publikowania.

    Ostatni krok jest wykonywany 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>"
    

    Wskazówka

    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, przekaż plik ZIP do Cloud Shell za pomocą tego przycisku przed uruchomieniem polecenia:

    Zrzut ekranu przedstawiający usługę Azure Cloud Shell przedstawiającą sposób przekazywania plików.

    W takim przypadku plik jest przekazywany do katalogu głównego magazynu Cloud Shell, dzięki czemu można odwoływać się do pliku bezpośrednio za pomocą jego nazwy parametru --src polecenia (jak w przypadku --src publish.zip).

    Pomyślne wdrożenie odpowiada kodem stanu 202 i wyprowadza obiekt JSON zawierający szczegółowe informacje o nowej funkcji. Możesz potwierdzić, że 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. Możesz użyć następujących poleceń interfejsu wiersza polecenia, aby sprawdzić, czy obie funkcje zostały pomyślnie opublikowane. Każde polecenie ma symbole zastępcze dla grupy zasobów i nazwę aplikacji funkcji. Polecenia drukują informacje o opublikowanych funkcjach ProcessDTRoutedData i ProcessHubToDTEvents .

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 musi mieć odpowiednie uprawnienia, aby uzyskać dostęp do wystąpienia usługi Azure Digital Twins. Ten dostęp można skonfigurować w następnej sekcji.

Konfigurowanie uprawnień dla aplikacji funkcji

Istnieją dwa ustawienia, które należy ustawić, aby aplikacja funkcji mogła uzyskać dostęp 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 nadaje 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 zabezpieczeń i przypisań ról można znaleźć w temacie 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. Dane wyjściowe wyświetlają szczegółowe informacje o tożsamości przypisanej przez system. Zanotuj pole principalId w danych wyjściowych, które mają 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ściciela 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 informacji o utworzonym przypisaniu 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żywa wartości tej zmiennej do odwoływania się do wystąpienia. Aby uzyskać więcej informacji na temat zmiennych środowiskowych, zobacz Zarządzanie aplikacją funkcji.

Uruchom następujące 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 urządzenia z urządzenia IoT Hub

Zazwyczaj dane urządzeń z rzeczywistych urządzeń napędzają graf usługi Azure Digital Twins.

W tym kroku połączysz symulowane urządzenie termostatu zarejestrowane w IoT Hub z cyfrową reprezentacją bliźniaczą, która reprezentuje je w usłudze Azure Digital Twins. Gdy symulowane urządzenie emituje dane, dane są kierowane za pośrednictwem funkcji platformy Azure ProcessHubToDTEvents , która wyzwala odpowiednią aktualizację w cyfrowej reprezentacji bliźniaczej. W ten sposób cyfrowy bliźniak jest na bieżąco 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 symulowanych danych urządzenia odbywa się w tej części kompleksowego scenariusza (strzałka B):

Diagram przedstawiający fragment pełnego diagramu scenariusza budowania z wyróżnieniem sekcji, która przedstawia elementy przed usługą Azure Digital Twins.

Poniżej przedstawiono czynności, które należy wykonać, aby skonfigurować to połączenie z urządzeniem:

  1. Tworzenie centrum IoT, które zarządza symulowanym urządzeniem
  2. Połącz centrum IoT Hub z odpowiednią funkcją platformy Azure, konfigurując subskrypcję zdarzeń
  3. Rejestrowanie symulowanego urządzenia w centrum IoT Hub
  4. Uruchamianie symulowanego urządzenia i generowanie danych urządzenia
  5. Wykonywanie zapytań dotyczących usługi Azure Digital Twins w celu wyświetlenia wyników na żywo

Tworzenie wystąpienia IoT Hub

Usługa Azure Digital Twins została zaprojektowana do współpracy z IoT Hub, usługą platformy Azure do zarządzania urządzeniami i ich danymi. W tym kroku skonfigurujesz centrum IoT, które 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ę centrum IoT Hub, aby użyć jej później.

Łączenie centrum IoT Hub z funkcją platformy Azure

Następnie połącz centrum IoT Hub z funkcją platformy Azure ProcessHubToDTEvents w opublikowanej wcześniej aplikacji funkcji. To połączenie umożliwia przepływ danych 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. Spowoduje to "subskrybowanie" funkcji do zdarzeń odbywających się w IoT Hub.

Użyj następującego polecenia interfejsu wiersza polecenia, aby utworzyć subskrypcję zdarzeń. Są dostępne pola do wprowadzenia nazwy dla subskrypcji zdarzeń, a także miejsca do wpisania swojego 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 zawierają informacje o utworzonej subskrypcji zdarzeń. Możesz potwierdzić, że operacja zakończyła się pomyślnie, sprawdzając wartość provisioningState w wyniku.

"provisioningState": "Succeeded",

Wskazówka

Jeśli polecenie zwraca błąd dostawcy zasobów, dodaj Microsoft.EventGrid jako dostawcę zasobów do subskrypcji. Możesz użyć Azure Portal, aby dodać tego dostawcę zasobów do subskrypcji, postępując zgodnie z instrukcjami w temacie Rejestrowanie dostawcy zasobów.

Rejestrowanie symulowanego urządzenia w IoT Hub

W tej sekcji tworzona jest reprezentacja urządzenia w IoT Hub z identyfikatorem thermostat67. Symulowane urządzenie łączy się z tą reprezentacją, czyli sposobem, w jaki dane urządzenia przepływają z urządzenia do IoT Hub. Centrum IoT Hub to miejsce, w którym subskrybowana funkcja platformy Azure z poprzedniego kroku nasłuchuje, jest gotowa do odebrania 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>

Danymi wyjściowymi są informacje o urządzeniu, które zostało utworzone.

Konfigurowanie i uruchamianie symulacji

Ważne

Ten artykuł zawiera kroki łączenia urządzenia przy użyciu sygnatury dostępu współdzielonego, nazywanej również uwierzytelnianiem klucza symetrycznego. Ta metoda uwierzytelniania jest wygodna w przypadku testów i oceny, ale uwierzytelnianie urządzenia za pomocą certyfikatów X.509 jest bardziej bezpiecznym podejściem. Aby dowiedzieć się więcej, zobacz Security best practices for IoT solutions Connection security (Najlepsze rozwiązania w zakresie zabezpieczeń rozwiązań > IoT Connection Security).

Następnie skonfiguruj symulator urządzenia, aby wysyłać dane do wystąpienia IoT Hub.

Zacznij od pobrania parametrów połączenia centrum IoT za pomocą następującego polecenia. Wartość parametrów połączenia zaczyna 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 połącz te wartości z kodem symulatora urządzenia w projekcie lokalnym, aby połączyć symulator z tym centrum IoT Hub i urządzeniem IoT Hub.

Przejdź na komputerze lokalnym do pobranego folderu przykładów, 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 wcześniej zebrane wartości:

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 folderu digital-twins-samples-main\DeviceSimulator\DeviceSimulator.

Uwaga / Notatka

Teraz powinny być otwarte dwa okna konsoli: jedno otwarte dla folderu DeviceSimulator\DeviceSimulator i jedno z wcześniejszych, które są nadal otwarte w folderze AdtSampleApp\SampleClientApp .

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

dotnet run

Projekt zostanie uruchomiony i rozpocznie wyświetlanie komunikatów o symulowanej temperaturze urządzenia do pomiaru. Te komunikaty są wysyłane do IoT Hub, gdzie są następnie odbierane i przetwarzane przez funkcję platformy Azure.

Zrzut ekranu przedstawiający dane wyjściowe konsoli symulatora urządzenia pokazujące wysyłanie danych urządzenia do temperatury.

Nie musisz robić nic więcej w tej konsoli, ale pozostaw ją uruchomioną do czasu wykonania 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 właściwości bliźniaczej Temperature reprezentacji termostatu67.

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

dotnet run

Gdy projekt jest uruchomiony i akceptuje polecenia, uruchom następujące polecenie, aby uzyskać temperatury zgłaszane przez termostat cyfrowej reprezentacji bliźniaczej67:

ObserveProperties thermostat67 Temperature

Powinny być widoczne zaktualizowane na żywo temperatury z wystąpienia usługi Azure Digital Twins rejestrowane w konsoli co dwie sekundy. Powinny one odzwierciedlać wartości generowane przez symulator danych (okna konsoli można umieścić obok siebie, aby sprawdzić, czy wartości są zgodne).

Uwaga / Notatka

Może upłynąć kilka sekund, zanim dane z urządzenia zostaną rozpropagowane do bliźniaczej reprezentacji. Kilka pierwszych odczytów temperatury może być wyświetlanych jako 0, zanim zaczną napływać dane.

Zrzut ekranu przedstawiający dane wyjściowe konsoli przedstawiające dziennik komunikatów o temperaturze z termostatu cyfrowego bliźniaka67.

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

Propagowanie zdarzeń usługi Azure Digital Twins za pośrednictwem grafu

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

W tym celu należy użyć funkcji ProcessDTRoutedData platformy Azure w celu zaktualizowania bliźniaczej reprezentacji pomieszczenia 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 pełnego diagramu scenariusza budowania z wyróżnieniem sekcji, która pokazuje elementy po usłudze Azure Digital Twins.

Oto czynności, które należy wykonać, aby skonfigurować ten przepływ 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, który łączy 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 odpowiednio aktualizuje inne bliźniacze reprezentacje na wykresie

Tworzenie tematu usługi Event Grid

Event Grid to usługa platformy Azure, która pomaga kierować i dostarczać zdarzenia z usług platformy Azure do innych miejsc na platformie Azure. Możesz utworzyć temat usługi Event Grid , aby zbierać określone zdarzenia ze źródła, a następnie subskrybenci mogą nasłuchiwać tematu, aby odbierać zdarzenia w miarę ich nadejścia.

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 ona używana 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 zastępcze 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.

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

Zrzut ekranu przedstawiający wynik zapytania punktu końcowego w Cloud Shell Azure Portal, przedstawiający punkt końcowy z provisioningState wartości Succeeded.

Może również być wyświetlany komunikat "Aprowizacja", co oznacza, że punkt końcowy jest nadal tworzony. Jeśli tak, poczekaj kilka sekund i uruchom następujące polecenie, aby sprawdzić stan punktu końcowego. Powtarzaj tę czynność, aż pojawi się provisioningState 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 ona używana 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, które występują na grafie bliźniaczej reprezentacji.

Wskazówka

Jeśli chcesz, możesz ograniczyć zdarzenia tylko do określonych, 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 informacje o utworzonej trasie.

Uwaga / Notatka

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

Łączenie funkcji platformy Azure

Następnie zasubskrybuj funkcję ProcessDTRoutedData Azure do utworzonego wcześniej tematu usługi Event Grid. Ta subskrypcja umożliwia przepływ danych symulowanego urządzenia z bliźniaczej reprezentacji thermostat67 przez temat usługi Event Grid do funkcji, która wraca do usługi Azure Digital Twins i odpowiednio aktualizuje bliźniaczą reprezentację room21.

W tym celu należy utworzyć subskrypcję usługi Event Grid, która wysyła dane z utworzonego wcześniej tematu usługi Event Grid do funkcji platformy Azure ProcessDTRoutedData .

Użyj następującego polecenia interfejsu wiersza polecenia, aby utworzyć subskrypcję zdarzeń. Istnieje symbol zastępczy, w którym można wprowadzić nazwę tej subskrypcji zdarzenia, a także symbole zastępcze, w których można wprowadzić identyfikator subskrypcji, grupę zasobów, nazwę tematu usługi Event Grid i nazwę 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

Uruchom symulację i zobacz wyniki

Teraz zdarzenia powinny mieć możliwość przepływu z symulowanego urządzenia do usługi Azure Digital Twins i przez graf usługi Azure Digital Twins w celu zaktualizowania bliźniaczych reprezentacji zgodnie z potrzebami. W tej sekcji ponownie uruchomisz symulator urządzenia, aby uruchomić pełny skonfigurowany przepływ zdarzeń, a następnie wykonasz zapytanie dotyczące usługi Azure Digital Twins w celu wyświetlenia wyników na żywo

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

Podobnie jak w przypadku pierwszego uruchomienia symulatora urządzenia, projekt rozpoczyna działanie i wyświetla komunikaty danych symulowanej temperatury urządzenia. Te zdarzenia przechodzą przez przepływ skonfigurowany wcześniej w celu zaktualizowania bliźniaczej reprezentacji termostatu67, a następnie przechodzą przez ostatnio skonfigurowany przepływ w celu zaktualizowania bliźniaczej reprezentacji Room21 w celu dopasowania.

Zrzut ekranu przedstawiający dane wyjściowe konsoli symulatora urządzenia pokazujące wysyłanie danych urządzenia do temperatury.

Nie musisz robić nic więcej w tej konsoli, ale pozostaw ją uruchomioną do czasu wykonania 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ą dotnet runpolecenia .

Gdy projekt jest uruchomiony i akceptuje polecenia, uruchom następujące polecenie, aby uzyskać temperatury zgłaszane zarówno przez termostat cyfrowej reprezentacji bliźniaczej67, jak i pomieszczenie z cyfrową bliźniakiem21.

ObserveProperties thermostat67 Temperature room21 Temperature

Powinny być widoczne zaktualizowane na żywo temperatury z wystąpienia usługi Azure Digital Twins rejestrowane w konsoli co dwie sekundy. Zwróć uwagę, że temperatura w pomieszczeniu 21 jest aktualizowana w celu dopasowania do aktualizacji termostatu67.

Zrzut ekranu wyjścia konsoli pokazującego dziennik komunikatów o temperaturze 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.

Wykonaj przegląd

Oto przegląd scenariusza utworzonego w tym samouczku.

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

Schemat z początku artykułu przedstawiający pełny scenariusz budowy.

Uprzątnij zasoby

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 samouczka za pomocą polecenia w wierszu poleceń az group delete. 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ść niektóre lub wszystkie jego modele, bliźniacze reprezentacje i relacje, możesz użyć poleceń interfejsu wiersza polecenia az dt , aby usunąć elementy, które chcesz usunąć.

    Ta opcja nie powoduje usunięcia żadnych innych zasobów platformy Azure utworzonych w tym samouczku (IoT Hub, aplikacja Azure Functions itd.). Zasoby te można usuwać pojedynczo za pomocą poleceń dt odpowiednich dla każdego typu zasobu.

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

Dalsze kroki

W tym samouczku utworzono kompleksowy scenariusz, który przedstawia usługę Azure Digital Twins opartą na danych urządzenia na żywo.

Następnie zapoznaj się z dokumentacją koncepcyjną, aby dowiedzieć się więcej o elementach, z którymi pracowałeś w samouczku: