Aracılığıyla paylaş


Öğretici: Azure Digital Twins Önizlemesi ile derlemenizi sağlama ve çalışma koşullarını izleme

Önemli

Azure Digital Twins hizmetinin yeni bir sürümü yayınlandı. Yeni hizmetin genişletilmiş özellikleri ışığında özgün Azure Digital Twins hizmeti (bu belge kümesinde açıklanmıştır) kullanımdan kaldırılmıştır.

Yeni hizmetin belgelerini görüntülemek için etkin Azure Digital Twins Belgeleri'ni ziyaret edin.

Bu öğreticide, alanlarınızda istenen sıcaklık koşullarını ve konfor düzeyini izlemek için Azure Digital Twins Önizlemesi'nin nasıl kullanılacağı gösterilmektedir. Örnek binanızı yapılandırdıktan sonra, bu öğreticideki adımları kullanarak binanızı sağlayabilir ve algılayıcı verilerinizde özel işlevler çalıştırabilirsiniz.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • İzlenecek koşulları tanımlayın.
  • Kullanıcı tanımlı bir işlev (UDF) oluşturun.
  • Algılayıcı verilerinin simülasyonunu oluşturma.
  • Kullanıcı tanımlı bir işlevin sonuçlarını alma.

Önkoşullar

Bu öğreticide , Azure Digital Twins kurulumunuzu tamamladığınız varsayılır. Devam etmeden önce aşağıdakilere sahip olduğunuzdan emin olun:

İpucu

Yeni bir örnek hazırlarsanız benzersiz bir Digital Twins örneği adı kullanın.

İzleme koşullarını tanımlama

Cihaz veya algılayıcı verilerinde izlemek için eşleştirici olarak adlandırılan belirli koşullar kümesini tanımlayabilirsiniz. Ardından kullanıcı tanımlı işlevler olarak adlandırılan işlevler tanımlayabilirsiniz. Kullanıcı tanımlı işlevler, eşleştiriciler tarafından belirtilen koşullar oluştuğunda alanlarınızdan ve cihazlarınızdan gelen veriler üzerinde özel mantık yürütür. Daha fazla bilgi için bkz. Veri işleme ve kullanıcı tanımlı işlevler.

occupancy-quickstart örnek projesinin src\actions\provisionSample.yaml adlı dosyasını Visual Studio Code'da açın. matchers türü ile başlayan bölümü bulun. Bu türün altındaki her girdi, belirtilen Ada sahip bir eşleştirici oluşturur. Eşleştirici dataTypeValue türünde bir algılayıcıyı izler. Bunun, birkaç algılayıcı içeren bir cihaz düğümüne sahip Olan Odak Odası A1 adlı alanla nasıl ilişkili olduğuna dikkat edin. Bu algılayıcılardan birini izleyecek bir eşleştirici sağlamak için dataTypeValue değerinin algılayıcının dataType değeriyle eşleştiğinden emin olun.

Mevcut eşleştiricilerin altına aşağıdaki eşleştiriciyi ekleyin. Tuşların hizalandığından ve boşlukların sekmelerle değiştirilmediğinden emin olun. Bu satırlar provisionSample.yaml dosyasında açıklama satırı olarak da bulunur. Her satırın # önündeki karakteri kaldırarak bunların açıklamasını kaldırabilirsiniz.

      - name: Matcher Temperature
        dataTypeValue: Temperature

Bu eşleştirici, ilk öğreticideSAMPLE_SENSOR_TEMPERATURE eklediğiniz algılayıcıyı izler.

Kullanıcı tanımlı işlev oluşturma

Algılayıcı verilerinizin işlenmesini özelleştirmek için kullanıcı tanımlı işlevleri kullanabilirsiniz. Bunlar, eşleştiriciler tarafından açıklandığı gibi belirli koşullar oluştuğunda Azure Digital Twins örneğinizde çalışabilen özel JavaScript kodulardır. İzlemek istediğiniz her sensör için farklı eşleştiriciler ve kullanıcı tanımlı işlevler oluşturabilirsiniz. Daha fazla bilgi için bkz. Veri işleme ve kullanıcı tanımlı işlevler.

Örnek provisionSample.yaml dosyasında userdefinedfunctions türüyle başlayan bir bölüm bulun. Bu bölüm, belirli bir Name ile kullanıcı tanımlı bir işlev sağlar. Bu UDF, matcherNames altındaki eşleştiriciler listesinde hareket eder. UDF için kendi JavaScript dosyanızı script bölümünde sağlayabilirsiniz.

Ayrıca roleassignments adlı bölüme de dikkat edin. Kullanıcı tanımlı işleve Alan Yöneticisi rolünü atar. Bu rol, sağlanan alanlardan herhangi birinden gelen olaylara erişmesini sağlar.

  1. provisionSample.yaml adlı dosyanın matcherNames düğümüne aşağıdaki satırı ekleyerek veya var olan satırın açıklamasını kaldırarak UDF'yi sıcaklık eşleştiricisini içerecek şekilde yapılandırın:

            - Matcher Temperature
    
  2. src\actions\userDefinedFunctions\availability.js dosyasını düzenleyicinizde açın. Bu, provisionSample.yamldosyasının betik öğesinde başvuruda bulunılan dosyadır. Bu dosyadaki kullanıcı tanımlı işlev, odada hareket algılanmadığında ve karbondioksit düzeyleri 1.000 ppm'nin altında olduğunda koşulları arar.

    JavaScript dosyasını sıcaklığı ve diğer koşulları izlemek için değiştirin. Odada hareket algılanmamış, karbondioksit düzeyleri 1.000 ppm'nin altında ve sıcaklık 78 Fahrenheit derecenin altında olduğunda koşulları aramak için aşağıdaki kod satırlarını ekleyin.

    Not

    Bu bölüm dosya src\actions\userDefinedFunctions\availability.js değiştirir, böylece kullanıcı tanımlı işlev yazmanın tek bir yolunu ayrıntılı olarak öğrenebilirsiniz. Ancak, kurulumunuzda dosya src\actions\userDefinedFunctions\availabilityForTutorial.js doğrudan kullanmayı seçebilirsiniz. Bu dosya, öğretici için gerekli olan tüm değişikliklere sahiptir. Bunun yerine bu dosyayı kullanıyorsanız, src\actions\provisionSample.yamldosyasındaki betik anahtarı için doğru dosya adını kullandığınızdan emin olun.

    a. Dosyanın en üstünde, // Add your sensor type here açıklamasının altına sıcaklık için şu satırları ekleyin:

        var temperatureType = "Temperature";
        var temperatureThreshold = 78;
    

    b. öğesini tanımlayan var motionSensordeyiminden sonra aşağıdaki satırları açıklamasının // Add your sensor variable herealtına ekleyin:

       var temperatureSensor = otherSensors.find(function(element) {
           return element.DataType === temperatureType;
       });
    

    c. öğesini tanımlayan var carbonDioxideValuedeyiminden sonra aşağıdaki satırı açıklamasının // Add your sensor latest value herealtına ekleyin:

        var temperatureValue = getFloatValue(temperatureSensor.Value().Value);
    

    d. Şu kod satırlarını // Modify this line to monitor your sensor value açıklamasının altından kaldırın:

       if(carbonDioxideValue === null || motionValue === null) {
           sendNotification(telemetry.SensorId, "Sensor", "Error: Carbon dioxide or motion are null, returning");
           return;
       }
    

    Bunları şu satırlarla değiştirin:

        if(carbonDioxideValue === null || motionValue === null || temperatureValue === null){
            sendNotification(telemetry.SensorId, "Sensor", "Error: Carbon dioxide, motion, or temperature are null, returning");
            return;
        }
    

    e. Şu kod satırlarını // Modify these lines as per your sensor açıklamasının altından kaldırın:

        var availableFresh = "Room is available and air is fresh";
        var noAvailableOrFresh = "Room is not available or air quality is poor";
    

    Bunları şu satırlarla değiştirin:

        var alert = "Room with fresh air and comfortable temperature is available.";
        var noAlert = "Either room is occupied, or working conditions are not right.";
    

    f. Şu if-else kod bloğunu // Modify this code block for your sensor açıklamasının altından kaldırın:

        // If carbonDioxide less than threshold and no presence in the room => log, notify and set parent space computed value
        if(carbonDioxideValue < carbonDioxideThreshold && !presence) {
            log(`${availableFresh}. Carbon Dioxide: ${carbonDioxideValue}. Presence: ${presence}.`);
            setSpaceValue(parentSpace.Id, spaceAvailFresh, availableFresh);
        }
        else {
            log(`${noAvailableOrFresh}. Carbon Dioxide: ${carbonDioxideValue}. Presence: ${presence}.`);
            setSpaceValue(parentSpace.Id, spaceAvailFresh, noAvailableOrFresh);
    
            // Set up custom notification for poor air quality
            parentSpace.Notify(JSON.stringify(noAvailableOrFresh));
        }
    

    Sonrasında şu if-else bloğuyla değiştirin:

        // If sensor values are within range and room is available
        if(carbonDioxideValue < carbonDioxideThreshold && temperatureValue < temperatureThreshold && !presence) {
            log(`${alert}. Carbon Dioxide: ${carbonDioxideValue}. Temperature: ${temperatureValue}. Presence: ${presence}.`);
    
            // log, notify and set parent space computed value
            setSpaceValue(parentSpace.Id, spaceAvailFresh, alert);
    
            // Set up notification for this alert
            parentSpace.Notify(JSON.stringify(alert));
        }
        else {
            log(`${noAlert}. Carbon Dioxide: ${carbonDioxideValue}. Temperature: ${temperatureValue}. Presence: ${presence}.`);
    
            // log, notify and set parent space computed value
            setSpaceValue(parentSpace.Id, spaceAvailFresh, noAlert);
        }
    

    Değiştirilen UDF, bir odanın kullanılabilir durumda olması, karbondioksit ve sıcaklık sınırlarının kabul edilen sınırlar içinde olması durumunu izler. Bu koşul yerine getirildiğinde parentSpace.Notify(JSON.stringify(alert)); deyimiyle bir bildirim oluşturur. Sağlanan koşuldan bağımsız olarak izlenen alanın değerini ayarlayacak ve aşağıdaki iletiyi görüntüleyecektir.

    g. Dosyayı kaydedin.

  3. Bir komut penceresi açın ve occupancy-quickstart\src klasörüne gidin. Uzamsal zeka grafınızı ve kullanıcı tanımlı işlevinizi sağlamak için aşağıdaki komutu çalıştırın:

    dotnet run ProvisionSample
    

    Önemli

    Digital Twins Yönetim API'nize yetkisiz erişimi önlemek için , occupancy-quickstart uygulaması Azure hesabı kimlik bilgilerinizle oturum açmanızı gerektirir. Kimlik bilgilerinizi kısa bir süre için kaydeder, bu nedenle her çalıştırdığınızda oturum açmanız gerekmeyebilir. Bu program ilk kez çalıştırıldığında ve bundan sonra kaydedilen kimlik bilgilerinizin süresi dolduğunda, uygulama sizi bir oturum açma sayfasına yönlendirir ve bu sayfaya girmeniz için oturuma özgü bir kod verir. Azure hesabınızda oturum açmak için yönergeleri izleyin.

  4. Hesabınızın kimliği doğrulandıktan sonra uygulama provisionSample.yaml dosyasında yapılandırılan örnek bir uzamsal graf oluşturmaya başlar. Sağlama bitene kadar bekleyin. Birkaç dakika sürer. Bundan sonra komut penceresindeki iletileri gözlemleyin ve uzamsal grafınızın nasıl oluşturulduğuna dikkat edin. Uygulamanın kök düğümde veya üzerinde bir IoT hub'ı oluşturduğuna Venuedikkat edin.

  5. Komut penceresindeki çıktıdan, bölümün altındaki Devices değerini ConnectionStringpanonuza kopyalayın. Sonraki bölümde cihaz bağlantısının benzetimini yapmak için bu değere ihtiyacınız olacak.

    Sağlama örneği

İpucu

Sağlamanın ortasında "İş parçacığı çıkışı veya uygulama isteği nedeniyle G/Ç işlemi durduruldu" gibi bir hata iletisi alırsanız, komutu yeniden çalıştırmayı deneyin. HTTP istemcisi bir ağ sorunundan zaman aşımına uğradıysa bu durum oluşabilir.

Sensör verilerinin simülasyonunu yapma

Bu bölümde örnekte device-connectivity adlı projeyi kullanacaksınız. Hareket, sıcaklık ve karbondioksit algılamak için sensör verilerinin simülasyonunu yapacaksınız. Bu proje, sensörler için rastgele değerler oluşturur ve bunları cihaz bağlantı dizesini kullanarak IoT hub'a gönderir.

  1. Ayrı bir komut penceresinde Azure Digital Twins örneğine ve ardından cihaz bağlantısı klasörüne gidin.

  2. Projenizin bağımlılıklarının doğru olduğundan emin olmak için şu komutu çalıştırın:

    dotnet restore
    
  3. appsettings.json dosyasını düzenleyicinizde açın ve aşağıdaki değerleri düzenleyin:

    a. DeviceConnectionString: Bir önceki bölümde çıktı penceresinde görünen ConnectionString değerini atayın. Simülatörün IoT hub'ına düzgün şekilde bağlanabilmesi için bu dizeyi tırnak içinde tamamen kopyalayın.

    b. Algılayıcılar dizisi içindeki HardwareId: Azure Digital Twins örneğiniz için sağlanan algılayıcılardan olayları benzettiğinizden, donanım kimliği ve bu dosyadaki algılayıcıların adları provisionSample.yaml dosyasının düğümüyle eşleşmelidirsensors.

    Sıcaklık sensörü için yeni bir giriş ekleyin. appsettings.json dosyasındaki Sensors düğümü aşağıdaki gibi görünmelidir:

    "Sensors": [{
      "DataType": "Motion",
      "HardwareId": "SAMPLE_SENSOR_MOTION"
    },{
      "DataType": "CarbonDioxide",
      "HardwareId": "SAMPLE_SENSOR_CARBONDIOXIDE"
    },{
      "DataType": "Temperature",
      "HardwareId": "SAMPLE_SENSOR_TEMPERATURE"
    }]
    
  4. Sıcaklık, hareket ve karbondioksit için cihaz olayı simülasyonunu başlatmak üzere şu komutu çalıştırın:

    dotnet run
    

    Not

    Simülasyon örneği Digital Twins örneğiniz ile doğrudan iletişim kurmadığından kimlik doğrulaması yapmanız gerekmez.

Kullanıcı tanımlı işlevin sonuçlarını alma

Örneğiniz cihaz ve sensör verilerini her aldığında kullanıcı tanımlı işlev çalışır. Bu bölüm, kullanıcı tanımlı işlevin sonuçlarını almak için Azure Digital Twins örneğinizi sorgular. Bir oda kullanılabilir olduğunda, havanın temiz ve sıcaklığın doğru olduğu neredeyse gerçek zamanlı olarak size bildirilir.

  1. Örneği sağlamak için kullandığınız komut penceresini veya yeni bir komut penceresini açın ve örneğin occupancy-quickstart\src klasörüne yeniden gidin.

  2. Aşağıdaki komutu çalıştırın ve istendiğinde oturum açın:

    dotnet run GetAvailableAndFreshSpaces
    

Çıkış penceresi, kullanıcı tanımlı işlevin nasıl çalıştığını ve cihaz benzetiminden gelen olayları nasıl kestiğini gösterir.

UDF için çıkış

İzlenen koşul karşılanırsa, kullanıcı tanımlı işlev daha önce gördüğümüz gibi ilgili iletiyle birlikte alanın değerini ayarlar. İşlev, GetAvailableAndFreshSpaces konsoldaki iletiyi yazdırır.

Kaynakları temizleme

Bu noktada Azure Digital Twins'i keşfetmeyi durdurmak istiyorsanız, bu öğreticide oluşturulan kaynakları silebilirsiniz:

  1. Azure portal soldaki menüden Tüm kaynaklar'ı seçin, Digital Twins kaynak grubunuzu seçin ve Sil'i seçin.

    İpucu

    Digital Twins örneğinizi silerken sorun yaşadıysanız düzeltme ile birlikte bir hizmet güncelleştirmesi kullanıma sunuldu. Lütfen örneğinizi silmeyi yeniden deneyin.

  2. Gerekirse, iş makinenizdeki örnek uygulamaları silin.

Sonraki adımlar

Artık alanlarınızı sağladığınıza ve özel bildirimleri tetikleyen bir çerçeve oluşturduğunuza göre, aşağıdaki öğreticilerden herhangi birini kullanabilirsiniz: