Öğretici: Uçtan uca çözüm oluşturma

Bu Azure Digital Twins öğreticisi, hizmetin işlevselliğini gösteren uçtan uca bir çözümün nasıl derlendiğini açıklar. Ortamınızdaki canlı veriler tarafından yönetilen tam bir uçtan uca çözüm ayarlamak için, cihaz ve veri yönetimi için Azure Digital Twins örneğinizi diğer Azure hizmetlerine bağlayabilirsiniz.

Bu öğreticide,...

Önkoşullar

Bu öğreticiye başlamadan önce şu önkoşullarla başlayın:

  • Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • Bu öğreticide .NET kullanılır. .NET'i İndir'den birden çok platform için .NET SDK'sının en son sürümünü indirebilirsiniz.

Ardından, kalan önkoşulları ayarlamak için bu bölümün geri kalanından devam edin.

Örnek kaynakları alma

Öğretici, C# dilinde yazılmış bir uçtan uca Azure Digital Twins örnek projesi tarafından yönlendirilir. Örnek bağlantıya gidip başlığın altındaki Koda gözat düğmesini seçerek makinenizdeki örnek projeyi alın.

Bu işlem sizi örnekler için GitHub deposuna götürür. Bu depoyu Kod düğmesini ve ardından ZIP İndir'i seçerek .zip olarak indirebilirsiniz.

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

Bu işlem makinenize digital-twins-samples-main.zip olarak bir .zip klasörü indirir. Klasörün sıkıştırmasını açın ve dosyaları ayıklayın.

Azure Digital Twins örneği hazırlama

Bu makalede Azure Digital Twins ile çalışmak için bir Azure Digital Twins örneğine ve bunu kullanmak için gerekli izinlere sahip olmanız gerekir. Zaten ayarlanmış bir Azure Digital Twins örneğiniz varsa bu örneği kullanabilir ve sonraki bölüme atlayabilirsiniz. Aksi takdirde, Örnek ve kimlik doğrulaması ayarlama başlığındaki yönergeleri izleyin. Yönergeler, her adımı başarıyla tamamladığınızdan emin olmanıza yardımcı olacak bilgiler içerir.

Örneğinizi ayarladıktan sonra, örneğin ana bilgisayar adını not edin. Konak adını Azure portalında bulabilirsiniz.

Ortamınızı Azure CLI’ye hazırlama

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

CLI oturumlarını ayarlama

CLI'da Azure Digital Twins ile çalışmaya başlamak için ilk yapmanız gereken oturum açmak ve cli bağlamını bu oturum için aboneliğinize ayarlamaktır. CLI pencerenizde şu komutları çalıştırın:

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

Bahşiş

Yukarıdaki komutta yer alan kimlik yerine abonelik adınızı da kullanabilirsiniz.

Bu aboneliği Azure Digital Twins ile ilk kez kullanıyorsanız, Azure Digital Twins ad alanına kaydolmak için bu komutu çalıştırın. (Emin değilseniz, geçmişte yapmış olsanız bile yeniden çalıştırmanız sorun değildir.)

az provider register --namespace 'Microsoft.DigitalTwins'

Ardından Azure Digital Twins ve diğer IoT hizmetleriyle etkileşime yönelik komutları etkinleştirmek üzere Azure CLI için Microsoft Azure IoT Uzantısı'nı ekleyeceksiniz. Uzantının en son sürümüne sahip olduğunuzdan emin olmak için şu komutu çalıştırın:

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

Artık Azure CLI'da Azure Digital Twins ile çalışmaya hazırsınız.

Kullanılabilir en üst düzey Azure Digital Twins komutlarının listesini görmek için istediğiniz zaman komutunu çalıştırarak az dt --help bunu doğrulayabilirsiniz.

Örnek projeyi yapılandırma

Ardından, Azure Digital Twins örneğiniz ile etkileşim kuracak örnek bir istemci uygulaması ayarlayın.

Makinenizde daha önce Azure Digital Twins uçtan uca örneklerden indirdiğiniz klasöre gidin (henüz yapmadıysanız sıkıştırmasını açın).

Klasörün içine girdikten sonra digital-twins-samples-main\AdtSampleApp\SampleClientApp dizinine gidin ve appsettings.json dosyasını açın. Bu JSON dosyası, projeyi çalıştırmak için gereken bir yapılandırma değişkeni içerir.

Dosya gövdesinde öğesini Azure Digital Twins örneği ana bilgisayar adı URL'niz olarak değiştirin instanceUrl (aşağıda gösterildiği gibi konak adının önüne https:// ekleyerek).

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

Dosyayı kaydedip kapatın

Yerel Azure kimlik bilgilerini ayarlama

Bu örnek, yerel makinenizde çalıştırdığınızda Azure Digital Twins örneğiyle kullanıcıların kimliğini doğrulamak için DefaultAzureCredential (kitaplığın bir parçasıAzure.Identity) kullanır. bir istemci uygulamasının Azure Digital Twins ile kimlik doğrulaması yapmanın farklı yolları hakkında daha fazla bilgi için bkz . Uygulama kimlik doğrulama kodu yazma.

ileDefaultAzureCredential, örnek yerel ortamınızda yerel Azure CLI'da veya Visual Studio ya da Visual Studio Code'da Azure oturumu açma gibi kimlik bilgilerini arar. Bu nedenle, örneğin kimlik bilgilerini ayarlamak için bu mekanizmalardan biriyle Azure'da yerel olarak oturum açmanız gerekir.

Kod örneklerini çalıştırmak için Visual Studio veya Visual Studio Code kullanıyorsanız, Azure Digital Twins örneğine erişmek için kullanmak istediğiniz Azure kimlik bilgileriyle bu düzenleyicide oturum açtığınızdan emin olun. Yerel CLI penceresi kullanıyorsanız Azure hesabınızda oturum açmak için komutunu çalıştırın az login . Bundan sonra, kod örneğinizi çalıştırdığınızda otomatik olarak kimliğiniz doğrulanmalıdır.

Derleme senaryosuyla çalışmaya başlama

Bu öğreticide kullanılan örnek proje, zemin, oda ve termostat cihazı içeren gerçek bir bina senaryosunu temsil eder. Bu bileşenler bir Azure Digital Twins örneğinde dijital olarak temsil edilir ve bu örnekte verilerin taşınmasına olanak tanımak için IoT Hub, Event Grid ve iki Azure işlevine bağlanılır.

Aşağıda senaryonun tamamını temsil eden bir diyagram yer almaktadır.

Önce Azure Digital Twins örneğini oluşturacaksınız (diyagramda A bölümü), ardından cihaz telemetri veri akışını dijital ikizlere ayarlayacaksınız (B oku), ardından ikiz grafı (ok C) aracılığıyla veri yayma özelliğini ayarlayacaksınız.

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

Senaryoyu çözmek için daha önce indirdiğiniz önceden yazılmış örnek uygulamanın bileşenleriyle etkileşim kuracaksınız.

AdtSampleApp örnek uygulaması derleme senaryosu tarafından uygulanan bileşenler şunlardır:

  • Cihaz kimlik doğrulaması
  • .NET (C#) SDK kullanım örnekleri (CommandLoop.cs'de bulunur)
  • Azure Digital Twins API'sini çağırmak için konsol arabirimi
  • SampleClientApp - Örnek bir Azure Digital Twins çözümü
  • SampleFunctionsApp - IoT Hub ve Azure Digital Twins olaylarından cihaz telemetrisini temel alarak Azure Digital Twins grafınızı güncelleştiren bir Azure İşlevleri uygulaması

Önceden oluşturulmuş ikiz grafiğinin örneğini oluşturma

İlk olarak, uçtan uca senaryonun Azure Digital Twins parçasını derlemek için örnek projeden AdtSampleApp çözümünü kullanacaksınız (bölüm A):

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

Yerel bir konsol penceresi açın ve digital-twins-samples-main\AdtSampleApp\SampleClientApp klasörüne gidin. SampleClientApp projesini şu dotnet komutuyla çalıştırın:

dotnet run

Proje çalışmaya başlar, kimlik doğrulamasını gerçekleştirir ve bir komut bekler. Bu konsolda, örnek Azure Digital Twins çözümünün örneğini oluşturmak için sonraki komutu çalıştırın.

Önemli

Azure Digital Twins örneğinizde zaten dijital ikizleriniz ve ilişkileriniz varsa, bu komutun çalıştırılması bunları siler ve örnek senaryo için ikizler ve ilişkilerle değiştirir.

SetupBuildingScenario

Bu komutun çıktısı, Azure Digital Twins örneğinizde üç dijital ikiz oluşturulup bağlandıkça bir dizi onay iletisidir: floor1 adlı bir kat, room21 adlı bir oda ve thermostat67 adlı sıcaklık sensörü. Bu dijital ikizler, gerçek bir ortamda var olabilecek varlıkları temsil eder.

İlişkiler aracılığıyla aşağıdaki ikiz grafiğine bağlanırlar. İkiz grafı, varlıkların birbirleriyle etkileşim kurması ve birbirleriyle ilişkisi de dahil olmak üzere ortamı bir bütün olarak temsil eder.

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

Aşağıdaki komutu çalıştırarak oluşturulan ikizleri doğrulayabilirsiniz. Bu komut, içerdiği tüm dijital ikizler için bağlı Azure Digital Twins örneğini sorgular:

Query

Artık projeyi çalıştırmayı durdurabilirsiniz. Ancak, öğreticinin ilerleyen bölümlerinde bu uygulamayı yeniden kullanacağınız için konsol penceresini bu konumda açık tutun.

Örnek işlev uygulamasını ayarlama

Sonraki adım, bu öğretici boyunca verileri işlemek için kullanılacak bir Azure İşlevleri uygulaması ayarlamaktır. SampleFunctionsApp işlev uygulaması iki işlev içerir:

  • ProcessHubToDTEvents: Gelen IoT Hub verilerini işler ve Azure Digital Twins'i uygun şekilde güncelleştirir
  • ProcessDTRoutedData: Dijital ikizlerden gelen verileri işler ve Azure Digital Twins'deki üst ikizleri buna göre güncelleştirir

Bu bölümde, önceden yazılmış işlev uygulamasını yayımlayacak ve işlev uygulamasının bir Microsoft Entra kimliği atayarak Azure Digital Twins'e erişebildiğinden emin olacaksınız.

İşlev uygulaması, indirdiğiniz örnek projenin bir parçasıdır ve digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp klasöründe bulunur.

Uygulamayı yayımlayın

İşlev uygulamasını Azure'da yayımlamak için bir depolama hesabı oluşturmanız, ardından işlev uygulamasını Azure'da oluşturmanız ve son olarak işlevleri Azure işlev uygulamasında yayımlamanız gerekir. Bu bölüm, Azure CLI kullanarak bu eylemleri tamamlar. Her komutta köşeli ayraç içindeki yer tutucuları kendi kaynaklarınız için ayrıntılarla değiştirin.

  1. Aşağıdaki komutu çalıştırarak bir Azure depolama hesabı oluşturun:

    az storage account create --name <name-for-new-storage-account> --location <location> --resource-group <resource-group> --sku Standard_LRS
    
  2. Aşağıdaki komutu çalıştırarak bir Azure işlev uygulaması oluşturun:

    az functionapp create --name <name-for-new-function-app> --storage-account <name-of-storage-account-from-previous-step> --functions-version 4 --consumption-plan-location <location> --runtime dotnet-isolated --runtime-version 7 --resource-group <resource-group>
    
  3. Ardından işlevleri sıkıştıracak ve yeni Azure işlev uygulamanızda yayımlayacaksınız.

    1. Makinenizde bir konsol penceresi açın ve indirilen örnek projenizin içindeki digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp klasörüne gidin.

    2. Konsolda aşağıdaki komutu çalıştırarak projeyi yerel olarak yayımlayın:

      dotnet publish -c Release -o publish
      

      Bu komut projeyi digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish dizininde yayımlar.

    3. Tercih ettiğiniz yöntemi kullanarak digital-twins-samples-main\AdtSampleApp\SampleFunctionsApp\publish dizininde bulunan yayımlanmış dosyaların zip'ini oluşturun. Sıkıştırılmış klasörü publish.zip olarak adlandırın.

      Önemli

      Sıkıştırılmış klasörün yayımlama klasörünün kendisi için ek bir katman içermediğinden emin olun. Yalnızca yayımlama klasörünün içindeki içeriği içermelidir.

      Zip içeriklerinin nasıl görünebileceğine ilişkin bir görüntü aşağıdadır (.NET sürümünüze bağlı olarak değişebilir).

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

    Artık projeyi hazırlamak için kullandığınız yerel konsol penceresini kapatabilirsiniz. Son adım Azure CLI'da yapılacaktır.

  4. Azure CLI'da, yayımlanan ve sıkıştırılmış işlevleri Azure işlev uygulamanıza dağıtmak için aşağıdaki komutu çalıştırın:

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

    Bahşiş

    Azure CLI'yı yerel olarak kullanıyorsanız, bilgisayarınızdaki ZIP dosyasına doğrudan makinenizdeki yolunu kullanarak erişebilirsiniz.

    Azure Cloud Shell kullanıyorsanız komutu çalıştırmadan önce şu düğmeyle ZIP dosyasını Cloud Shell'e yükleyin:

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

    Bu durumda, dosya Cloud Shell depolamanızın kök dizinine yüklenir, böylece komutun parametresi için --src dosyaya doğrudan adıyla başvurabilirsiniz (içinde --src publish.zipolduğu gibi).

    Başarılı bir dağıtım 202 durum koduyla yanıt verir ve yeni işlevinizin ayrıntılarını içeren bir JSON nesnesi verir. Sonuç olarak şu alanı arayarak dağıtımın başarılı olduğunu onaylayabilirsiniz:

    "provisioningState": "Succeeded",
    

İşlevler artık Azure'daki bir işlev uygulamasında yayımlanmalıdır. Her iki işlevin de başarıyla yayımlandığını doğrulamak için aşağıdaki CLI komutlarını kullanabilirsiniz. Her komutta kaynak grubunuz için yer tutucular ve işlev uygulamanızın adı bulunur. Komutlar, yayımlanmış olan ProcessDTRoutedData ve ProcessHubToDTEvents işlevleri hakkındaki bilgileri yazdırır.

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

Ardından işlev uygulamanızın Azure Digital Twins örneğine erişmek için doğru izne sahip olması gerekir. Bu erişimi sonraki bölümde yapılandıracaksınız.

İşlev uygulaması için izinleri yapılandırma

İşlev uygulamasının Azure Digital Twins örneğine erişmesi için ayarlanması gereken iki ayar vardır ve her ikisi de Azure CLI kullanılarak yapılabilir.

Erişim rolü atama

İlk ayar işlev uygulamasına Azure Digital Twins örneğindeki Azure Digital Twins Veri Sahibi rolünü verir. Bu rol, örnekte birçok veri düzlemi etkinliği gerçekleştirmek isteyen tüm kullanıcılar veya işlevler için gereklidir. Azure Digital Twins çözümleri için Güvenlik bölümünde güvenlik ve rol atamaları hakkında daha fazla bilgi edinebilirsiniz.

  1. İşlev için sistem tarafından atanan bir kimlik oluşturmak için aşağıdaki komutu kullanın. Çıkış, oluşturulan kimliğin ayrıntılarını görüntüler. Sonraki adımda kullanmak üzere çıktıdaki principalId alanını not alın.

    az functionapp identity assign --resource-group <your-resource-group> --name <your-function-app-name>
    
  2. principalId değerini aşağıdaki komutta kullanarak işlev uygulamasının kimliğini Azure Digital Twins örneğinizin Azure Digital Twins Veri Sahibi rolüne atayın.

    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"
    

Bu komutun sonucu, oluşturduğunuz rol ataması hakkında bilgi elde edilir. İşlev uygulamasının artık Azure Digital Twins örneğinizdeki verilere erişme izinleri vardır.

Uygulama ayarını yapılandırma

İkinci ayar, işlev için Azure Digital Twins örneğinizin URL'sini içeren bir ortam değişkeni oluşturur. İşlev kodu örneğinize başvurmak için bu değişkenin değerini kullanır. Ortam değişkenleri hakkında daha fazla bilgi için bkz . İşlev uygulamanızı yönetme.

Yer tutucuları kaynaklarınızın ayrıntılarıyla doldurarak aşağıdaki komutu çalıştırın.

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

Çıktı, Azure İşlevi ayarlarının listesidir ve artık adlı ADT_SERVICE_URLbir giriş içermelidir.

IoT Hub cihazından sanal telemetriyi işleme

Azure Digital Twins grafı, gerçek cihazlardan alınan telemetri verileriyle yönlendirilmelidir.

Bu adımda IoT Hub'da kayıtlı simülasyon termostat cihazını Azure Digital Twins'de temsil eden dijital ikize bağlayacaksınız. Simülasyon cihazı telemetriyi yaydığı için veriler, dijital ikizde karşılık gelen bir güncelleştirmeyi tetikleyen ProcessHubToDTEvents Azure işlevi aracılığıyla yönlendirilir. Bu şekilde dijital ikiz, gerçek cihazın verileriyle güncel kalır. Azure Digital Twins'de olay verilerini bir yerden diğerine yönlendirme işlemine yönlendirme olayları denir.

Sanal telemetrinin işlenmesi uçtan uca senaryonun bu bölümünde gerçekleşir (B oku):

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

Bu cihaz bağlantısını ayarlamak için tamamladığınız eylemler şunlardır:

  1. Simülasyon cihazını yönetecek bir IoT hub'ı oluşturma
  2. Bir olay aboneliği ayarlayarak IoT hub'ını uygun Azure işlevine Bağlan
  3. Sanal cihazı IoT hub'ına kaydetme
  4. Simülasyon cihazını çalıştırma ve telemetri oluşturma
  5. Canlı sonuçları görmek için Azure Digital Twins'i sorgulama

IoT Hub örneği oluşturma

Azure Digital Twins, cihazları ve verilerini yönetmeye yönelik bir Azure hizmeti olan IoT Hub ile birlikte çalışacak şekilde tasarlanmıştır. Bu adımda, bu öğreticide örnek cihazı yönetecek bir IoT hub'ı ayarlayacaksınız.

Azure CLI'da yeni bir IoT hub'ı oluşturmak için şu komutu kullanın:

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

Bu komutun çıktısı, oluşturulan IoT hub'ı hakkındaki bilgilerdir.

IoT hub'ınıza eklediğiniz adı kaydedin. Bunu daha sonra kullanacaksınız.

IoT hub'ını Azure işlevine Bağlan

Ardından IoT hub'ınızı daha önce yayımladığınız işlev uygulamasındaki ProcessHubToDTEvents Azure işlevine bağlayarak Verilerin IoT Hub'daki cihazdan Azure Digital Twins'i güncelleştiren işlev aracılığıyla akabilmesini sağlayın.

Bunu yapmak için IoT Hub'ınızda Azure işlevi uç nokta olarak bir olay aboneliği oluşturacaksınız. Bu, işlevi IoT Hub'da gerçekleşen olaylara "abone olur".

Olay aboneliğini oluşturmak için aşağıdaki CLI komutunu kullanın. Olay aboneliği için bir ad girmeniz için bir yer tutucu ve ayrıca abonelik kimliğinizi, kaynak grubunuzu, IoT hub adınızı ve işlev uygulamanızın adını girmeniz için yer tutucular da vardır.

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

Çıkışta, oluşturulan olay aboneliğiyle ilgili bilgiler gösterilir. Sonuçtaki değeri doğrulayarak provisioningState işlemin başarıyla tamamlandığını onaylayabilirsiniz:

"provisioningState": "Succeeded",

Bahşiş

Komut bir kaynak sağlayıcısı hatası döndürürse Microsoft.EventGrid'i aboneliğinize kaynak sağlayıcısı olarak ekleyin. Bunu Azure portalında Kaynak sağlayıcısını kaydetme başlığındaki yönergeleri izleyerek yapabilirsiniz.

Sanal cihazı IoT Hub'a kaydetme

Bu bölüm IoT Hub'da termostat67 kimliğiyle bir cihaz gösterimi oluşturur. Simülasyon cihazı, telemetri olaylarının cihazdan IoT Hub'a nasıl gideceğini gösteren bu gösterime bağlanır. IoT hub'ı, önceki adımda abone olunan Azure işlevinin dinlediği, olayları almaya ve işlemeye devam etmeye hazır olduğu yerdir.

Azure CLI'da aşağıdaki komutu kullanarak IoT Hub'da bir cihaz oluşturun:

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

Çıkış, oluşturulan cihazla ilgili bilgilerdir.

Simülasyonu yapılandırma ve çalıştırma

Şimdi cihaz simülatörünü yapılandırın ve IoT Hub örneğinize veri gönderin.

Aşağıdaki komutla IoT hub'ını bağlantı dizesi alarak başlayın. bağlantı dizesi değeri ile HostName=başlar.

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

Ardından şu komutla cihaz bağlantı dizesini alın:

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

Ardından, simülatörü bu IoT hub'a ve IoT hub cihazına bağlamak için bu değerleri yerel projenizdeki cihaz simülatörü koduna takın.

Yerel makinenizde indirilen örnek klasöre ve digital-twins-samples-main\DeviceSimulator\DeviceSimulator klasörüne gidin. Düzenlemek üzere AzureIoTHub.cs dosyasını açın. Aşağıdaki bağlantı dizesi değerlerini yukarıda topladığınız değerlerle değiştirin:

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

Dosyayı kaydedin.

Şimdi, ayarladığınız veri simülasyonunun sonuçlarını görmek için yeni bir yerel konsol penceresi açın ve digital-twins-samples-main\DeviceSimulator\DeviceSimulator adresine gidin.

Dekont

Şimdi iki açık konsol pencereniz olmalıdır: biri DeviceSimulator\DeviceSimulator klasörüne açık ve diğeri de adtSampleApp\SampleClientApp klasörüne açık.

Cihaz simülatörü projesini çalıştırmak için aşağıdaki dotnet komutunu kullanın:

dotnet run

Proje çalışmaya başlar ve sanal sıcaklık telemetri iletilerini görüntülemeye başlar. Bu iletiler IoT Hub'a gönderilir ve burada Azure işlevi tarafından alınır ve işlenir.

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

Bu konsolda başka bir şey yapmanız gerekmez, ancak sonraki adımları tamamlarken bu işlemi çalışır durumda bırakın.

Azure Digital Twins'de sonuçları görme

Daha önce yayımladığınız ProcessHubToDTEvents işlevi IoT Hub verilerini dinler ve termostat67 ikizinde Temperature özelliği güncelleştirmek için bir Azure Digital Twins API'sini çağırır.

Azure Digital Twins tarafındaki verileri görmek için AdtSampleApp\SampleClientApp klasörüne açık olan diğer konsol pencerenize geçin. SampleClientApp projesini ile dotnet runçalıştırın.

dotnet run

Proje çalıştırılıp komutları kabul ettikten sonra, dijital ikiz termostat67 tarafından bildirilen sıcaklıkları almak için aşağıdaki komutu çalıştırın:

ObserveProperties thermostat67 Temperature

Azure Digital Twins örneğinizdeki canlı güncelleştirilmiş sıcaklıkların konsola iki saniyede bir günlüğe kaydedildiğini görmeniz gerekir. Veri simülatörünün oluşturduğu değerleri yansıtmalıdır (değerlerin eşgüdümlü olduğunu doğrulamak için konsol pencerelerini yan yana yerleştirebilirsiniz).

Dekont

Cihazdan verilerin ikize yayılması birkaç saniye sürebilir. İlk birkaç sıcaklık okuması, veriler gelmeye başlamadan önce 0 olarak görünebilir.

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

Canlı sıcaklık günlüğünün başarıyla çalıştığını doğruladıktan sonra her iki projenin de çalıştırılmasını durdurabilirsiniz. Öğreticinin ilerleyen bölümlerinde yeniden kullanacağınız için konsol pencerelerini açık tutun.

Azure Digital Twins olaylarını grafik aracılığıyla yayma

Bu öğreticide, Azure Digital Twins'in dış cihaz verilerinden nasıl güncelleştirilebileceğini gördünüz. Ardından, bir dijital ikizdeki değişikliklerin Azure Digital Twins grafı aracılığıyla nasıl yayılabildiğini, başka bir deyişle hizmet içi verilerden ikizleri nasıl güncelleştirebileceğinizi göreceksiniz.

Bunu yapmak için, bağlı Thermostat ikizi güncelleştirildiğinde bir Oda ikizini güncelleştirmek için ProcessDTRoutedData Azure işlevini kullanacaksınız. Güncelleştirme işlevi, uçtan uca senaryonun bu bölümünde gerçekleşir (ok C):

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

Bu veri akışını ayarlamak için tamamladığınız eylemler şunlardır:

  1. Azure hizmetleri arasında veri taşımayı etkinleştirmek için Event Grid konusu oluşturma
  2. Azure Digital Twins'de örneği Event Grid konusuna bağlayan bir uç nokta oluşturma
  3. Azure Digital Twins içinde uç noktaya ikiz özelliği değişiklik olayları gönderen bir yol ayarlama
  4. Uç noktadaki Event Grid konusunu dinleyen, buraya gönderilen ikiz özelliği değişiklik olaylarını alan ve grafikteki diğer ikizleri uygun şekilde güncelleştiren bir Azure işlevi ayarlama

Event Grid konusunu oluşturma

Event Grid , Olayları Azure hizmetlerinden Azure içindeki diğer yerlere yönlendirmeye ve teslim etmeye yardımcı olan bir Azure hizmetidir. Bir kaynaktan belirli olayları toplamak için bir Event Grid konusu oluşturabilirsiniz ve ardından aboneler olayları almak için konuyu dinleyebilir.

Azure CLI'da aşağıdaki komutu çalıştırarak bir Event Grid konusu oluşturun:

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

Bu komutun çıktısı, oluşturduğunuz Event Grid konusu hakkındaki bilgilerdir. Event Grid konu başlığınıza girdiğiniz adı kaydedin çünkü daha sonra kullanacaksınız.

Uç noktayı oluşturma

Ardından Azure Digital Twins'de örneğinizi Event Grid konunuza bağlayacak bir Event Grid uç noktası oluşturun. Önceki adımdaki Event Grid konunuzun adını ve gerektiğinde diğer yer tutucu alanlarını doldurarak aşağıdaki komutu kullanın.

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>

Bu komutun çıktısı, oluşturduğunuz uç nokta hakkında bilgidir.

Çıktıdaki provisioningState alanı arayın ve değerin "Başarılı" olup olmadığını denetleyin.

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

"Sağlama" da diyebilir, yani uç nokta hala oluşturulmakta. Öyleyse, birkaç saniye bekleyin ve uç noktanın durumunu denetlemek için aşağıdaki komutu çalıştırın. "Başarılı" ifadesini gösterene provisioningState kadar yineleyin.

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

Uç noktanızın adını kaydedin çünkü daha sonra kullanacaksınız.

Yolu oluşturma

Ardından, olayları oluşturduğunuz Event Grid uç noktasına gönderen bir Azure Digital Twins yolu oluşturun.

Önceki adımdaki uç noktanızın adını ve gerektiğinde diğer yer tutucu alanlarını doldurarak aşağıdaki CLI komutunu kullanın. Bu komut, ikiz grafiğinde gerçekleşen tüm olayları iletir.

Bahşiş

Filtreleri kullanarak, isterseniz olayları yalnızca belirli olaylarla sınırlayabilirsiniz.

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>

Bu komutun çıkışı, oluşturduğunuz yol hakkında bazı bilgilerdir.

Dekont

Bunları kullanan bir olay yolu ayarlayabilmeniz için önce uç noktaların (önceki adımdaki) sağlama işleminin tamamlanmış olması gerekir. Uç noktalar hazır olmadığı için yol oluşturma işlemi başarısız olursa, birkaç dakika bekleyip yeniden deneyin.

Azure işlevini Bağlan

Ardından ProcessDTRoutedData Azure işlevini daha önce oluşturduğunuz Event Grid konusuna abone edin; böylece telemetri verileri Termostat67 ikizinden Event Grid konu başlığından Azure Digital Twins'e geri dönen ve oda21 ikizini uygun şekilde güncelleştiren işleve akabilir.

Bunu yapmak için, daha önce oluşturduğunuz Event Grid konusundan ProcessDTRoutedData Azure işlevinize veri gönderen bir Event Grid aboneliği oluşturacaksınız.

Olay aboneliğini oluşturmak için aşağıdaki CLI komutunu kullanın. Bu olay aboneliği için bir ad girmeniz için bir yer tutucu ve ayrıca abonelik kimliğinizi, kaynak grubunuzu, Event Grid konunuzun adını ve işlev uygulamanızın adını girmeniz için yer tutucular da vardır.

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

Simülasyonu çalıştırın ve sonuçları görün

Artık olayların sanal cihazdan Azure Digital Twins'e ve Azure Digital Twins grafı aracılığıyla ikizleri uygun şekilde güncelleştirme özelliğine sahip olması gerekir. Bu bölümde, ayarladığınız tüm olay akışını başlatmak için cihaz simülatörünü yeniden çalıştıracak ve canlı sonuçları görmek için Azure Digital Twins'i sorgulayacaksınız

DeviceSimulator\DeviceSimulator klasörüne açık olan konsol pencerenize gidin ve ile dotnet runcihaz simülatörü projesini çalıştırın.

Cihaz simülatörünü ilk kez çalıştırdığınızda olduğu gibi proje de çalışmaya başlar ve sanal sıcaklık telemetri iletilerini görüntüler. Bu olaylar, termostat67 ikizini güncelleştirmek için daha önce ayarladığınız akışın üzerinden geçer ve ardından yakın zamanda oda21 ikizini eşleşecek şekilde güncelleştirmek için ayarladığınız akışın üzerinden geçer.

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

Bu konsolda başka bir şey yapmanız gerekmez, ancak sonraki adımları tamamlarken bu işlemi çalışır durumda bırakın.

Azure Digital Twins tarafındaki verileri görmek için AdtSampleApp\SampleClientApp klasörüne açık olan diğer konsol pencerenize gidin ve ile dotnet runSampleClientApp projesini çalıştırın.

Proje çalıştırılıp komutları kabul ettikten sonra, hem dijital ikiz termostat67 hem de dijital ikiz odası tarafından bildirilen sıcaklıkları almak için aşağıdaki komutu çalıştırın21.

ObserveProperties thermostat67 Temperature room21 Temperature

Azure Digital Twins örneğinizdeki canlı güncelleştirilmiş sıcaklıkların konsola iki saniyede bir günlüğe kaydedildiğini görmeniz gerekir. Oda21'in sıcaklığının termostat67 güncelleştirmelerine uyacak şekilde güncelleştirildiğini unutmayın.

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

Örneğinizden canlı sıcaklık günlüğünün başarıyla çalıştığını doğruladıktan sonra her iki projenin de çalıştırılmasını durdurabilirsiniz. Öğretici artık tamamlandığından her iki konsol penceresini de kapatabilirsiniz.

İnceleyin

Burada, bu öğreticide oluşturduğunuz senaryoyu gözden geçirebilirsiniz.

  1. Azure Digital Twins örneği bir katı, odayı ve termostatı dijital olarak temsil eder (aşağıdaki diyagramda A bölümüyle gösterilir)
  2. Sanal cihaz telemetrisi, ProcessHubToDTEvents Azure işlevinin telemetri olaylarını dinlediği IoT Hub'a gönderilir. ProcessHubToDTEvents Azure işlevi, termostat67'de özelliğini ayarlamak Temperature için bu olaylardaki bilgileri kullanır (diyagramdaki B oku).
  3. Azure Digital Twins'deki özellik değişikliği olayları, ProcessDTRoutedData Azure işlevinin olayları dinlediği bir Event Grid konusuna yönlendirilir. ProcessDTRoutedData Azure işlevi, bu olaylardaki bilgileri kullanarak room21'deki (diyagramdaki C oku) özelliğini ayarlarTemperature.

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

Kaynakları temizleme

Bu öğreticiyi tamamladıktan sonra, bundan sonra ne yapmak istediğinize bağlı olarak hangi kaynakları kaldırmak istediğinizi seçebilirsiniz.

  • Bu öğreticide oluşturduğunuz kaynaklardan herhangi birine ihtiyacınız yoksa az group delete CLI komutuyla Azure Digital Twins örneğini ve diğer tüm kaynakları bu makaleden silebilirsiniz . Bu işlem, kaynak grubundaki tüm Azure kaynaklarının yanı sıra kaynak grubunun kendisini de siler.

    Önemli

    Silinen kaynak grupları geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun.

    Azure Cloud Shell'i veya yerel cli penceresini açın ve kaynak grubunu ve içerdiği her şeyi silmek için aşağıdaki komutu çalıştırın.

    az group delete --name <your-resource-group>
    
  • Bu makalede ayarladığınız Azure Digital Twins örneğini kullanmaya devam etmek, ancak modellerinin, ikizlerinin ve ilişkilerinin bazılarını veya tümünü temizlemek istiyorsanız, kaldırmak istediğiniz öğeleri silmek için az dt CLI komutlarını kullanabilirsiniz.

    Bu seçenek, bu öğreticide oluşturulan diğer Azure kaynaklarını (IoT Hub, Azure İşlevleri uygulaması vb.) kaldırmaz. Her kaynak türü için uygun dt komutlarını kullanarak bunları tek tek silebilirsiniz.

Proje klasörünü yerel makinenizden de silmek isteyebilirsiniz.

Sonraki adımlar

Bu öğreticide, Azure Digital Twins'in canlı cihaz verileri tarafından yönlendirildiğini gösteren uçtan uca bir senaryo oluşturdunuz.

Ardından, öğreticide çalıştığınız öğeler hakkında daha fazla bilgi edinmek için kavram belgelerine bakmaya başlayın: