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.
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:
- Nazwa hosta wystąpienia. Nazwę hosta można znaleźć w Azure Portal.
- Subskrypcja platformy Azure użyta do utworzenia wystąpienia. Jego nazwa lub identyfikator będą działać. Subskrypcję można znaleźć na stronie Przegląd wystąpienia w Azure Portal.
Przygotowywanie środowiska dla interfejsu wiersza polecenia platformy Azure
Użyj środowiska Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Przewodnik Szybki start dotyczący usługi Azure Cloud Shell — Bash.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze platformy Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać informacje o innych opcjach logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
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 DefaultAzureCredential
przykł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).
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):
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ą.
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.
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
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>
Następnie spakujesz funkcje i opublikujesz je w nowej aplikacji funkcji platformy Azure.
Otwórz okno konsoli na maszynie i przejdź do folderu digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp wewnątrz pobranego przykładowego projektu.
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 .
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 .
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.
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:
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).
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.
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):
Poniżej przedstawiono akcje, które należy wykonać, aby skonfigurować to połączenie urządzenia:
- Tworzenie centrum IoT, które będzie zarządzać symulowanym urządzeniem
- Łączenie centrum IoT z odpowiednią funkcją platformy Azure przez skonfigurowanie subskrypcji zdarzeń
- Rejestrowanie symulowanego urządzenia w usłudze IoT Hub
- Uruchamianie symulowanego urządzenia i generowanie danych telemetrycznych
- 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.
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.
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):
Poniżej przedstawiono akcje, które należy wykonać w celu skonfigurowania tego przepływu danych:
- Tworzenie tematu usługi Event Grid w celu umożliwienia przenoszenia danych między usługami platformy Azure
- Tworzenie punktu końcowego w usłudze Azure Digital Twins łączącego wystąpienie z tematem usługi Event Grid
- 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
- 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".
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.
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.
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.
- Wystąpienie usługi Azure Digital Twins cyfrowo reprezentuje podłogę, pomieszczenie i termostat (reprezentowane przez sekcję A na poniższym diagramie)
- 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). - 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).
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: