Kullanmaya başlayın ikizleri (Node.js)

Cihaz ikizleri; meta veriler, yapılandırmalar ve koşullar gibi cihaz durumu bilgilerini depolayan JSON belgelerdir. IoT Hub, kendisine bağlanan her cihaz için bir cihaz ikizi devam ettirir.

Not

Bu makalede açıklanan özellikler yalnızca IoT Hub standart katmanında kullanılabilir. Temel ve standart/ücretsiz IoT Hub katmanları hakkında daha fazla bilgi için bkz. doğru IoT Hub katmanını seçme.

Cihaz ikizlerini şu şekilde kullan:

  • Çözüm arka ucundan cihaz meta verilerini depolayın.

  • Kullanılabilir yetenekler ve koşullar gibi geçerli durum bilgilerini (örneğin, kullanılan bağlantı yöntemi) cihaz uygulamanızdan bildirin.

  • Üretici yazılımı ve yapılandırma güncelleştirmeleri gibi uzun süre çalışan iş akışlarının durumunu bir cihaz uygulaması ile arka uç uygulaması arasında eşitler.

  • Cihazınızın meta verilerini, yapılandırmasını veya durumunu sorgulayın.

Cihaz TWINS, eşitleme için ve cihaz yapılandırmalarının ve koşullarının sorgulanması için tasarlanmıştır. Cihaz TWINS 'in ne zaman kullanılacağı hakkında daha fazla bilgi için bkz. cihaz ikizlerini anlama.

Cihaz ikizleri bir IoT Hub 'ında depolanır ve aşağıdaki öğeleri içerir:

  • Etiketler. Cihaz meta verileri yalnızca çözüm arka ucu tarafından erişilebilir.

  • İstenen özellikler. Çözüm arka ucu tarafından değiştirilebilen JSON nesneleri ve cihaz uygulaması tarafından Observable.

  • Bildirilen özellikler. Cihaz uygulaması tarafından değiştirilebilen ve çözüm arka ucu tarafından okunabilen JSON nesneleri.

Etiketler ve Özellikler diziler içeremez, ancak nesneler iç içe olabilir.

Aşağıdaki çizimde Device ikizi organizasyonu gösterilmektedir:

İşlevselliği gösteren cihaz ikizi resmi

Ayrıca, çözüm arka ucu, yukarıdaki tüm verileri temel alan cihaz TWINS 'i sorgulayabilir. Cihaz TWINS hakkında daha fazla bilgi için bkz. cihaz ikizlerini anlama. Sorgulama hakkında daha fazla bilgi için IoT Hub sorgu dili' ne bakın.

Bu öğretici şunların nasıl yapıldığını gösterir:

  • Bir cihaz ikizi 'e Etiketler ekleyen bir arka uç uygulaması oluşturun ve bağlantı kanalını cihazda bildirilen bir özellik olarak raporlayan bir sanal cihaz uygulamasına ikizi.

  • Daha önce oluşturulan Etiketler ve özelliklerde filtreler kullanarak arka uç uygulamanızdaki cihazları sorgulayın.

Bu öğreticinin sonunda iki farklı konsol Node.js sahip oluruz:

  • AddTagsAndQuery.js, Node.js ve sorgu cihaz ikizleri ekleyen bir arka uç uygulamasıdır.

  • TwinSimulatedDevice.js, Node.js oluşturulan cihaz kimliğiyle IoT hub'ınıza bağlanan bir cihazın benzetimini yapılan ve bağlantı koşulunu raporan bir Node.js uygulamasıdır.

Not

Azure IoT SDK'ları makalesi, hem cihaz hem de arka uç uygulamaları oluşturmak için kullanabileceğiniz Azure IoT SDK'ları hakkında bilgi sağlar.

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdakiler gerekir:

  • Node.js 10.0.x veya sonraki bir sürümü.

  • Etkin bir Azure hesabı. (Hesabınız yoksa yalnızca birkaç dakika içinde ücretsiz bir hesap oluşturabilirsiniz.)

  • Güvenlik duvarında 8883 bağlantı noktasının açık olduğundan emin olun. Bu makaledeki cihaz örneği, 8883 bağlantı noktası üzerinden iletişim kuran MQTT protokolünü kullanır. Bu bağlantı noktası bazı kurumsal ve eğitim ağı ortamlarında engellenmiş olabilir. Daha fazla bilgi ve bu sorunu gidermek için bkz. IoT Hub (MQTT) bağlantısı.

IoT hub oluşturma

Bu bölümde Azure Portalkullanarak IoT Hub 'ı oluşturma açıklanmaktadır.

  1. Azure Portal oturum açın.

  2. Azure giriş sayfasından + kaynak oluştur düğmesini seçin ve ardından Market 'te ara alanına IoT Hub girin.

  3. Arama sonuçlarından IoT Hub seçin ve ardından Oluştur' u seçin.

  4. Temel bilgiler sekmesinde, alanları aşağıdaki gibi doldurun:

    • Abonelik: hub 'ınız için kullanılacak aboneliği seçin.

    • Kaynak grubu: bir kaynak grubu seçin veya yeni bir tane oluşturun. Yeni bir tane oluşturmak için Yeni oluştur ' u seçin ve kullanmak istediğiniz adı girin. Var olan bir kaynak grubunu kullanmak için bu kaynak grubunu seçin. Daha fazla bilgi için bkz. Azure Resource Manager kaynak gruplarını yönetme.

    • Bölge: hub 'ınızın bulunmasını istediğiniz bölgeyi seçin. Size en yakın konumu seçin. IoT Hub cihaz akışlarıgibi bazı özellikler yalnızca belirli bölgelerde kullanılabilir. Bu sınırlı Özellikler için desteklenen bölgelerden birini seçmeniz gerekir.

    • IoT Hub adı: hub 'ınız için bir ad girin. Bu ad, 3 ila 50 alfasayısal karakter uzunluğunda olan, genel olarak benzersiz olmalıdır. Ad ayrıca Dash () karakterini de içerebilir '-' .

    Önemli

    IoT Hub 'ı bir DNS uç noktası olarak herkese açık olacağı için, bu dosyayı adlandırdığınızda hassas veya kişisel olarak tanımlanabilir bilgiler girmemeye özen gösterin.

    Azure portal hub oluşturun.

  5. Ileri ' yi seçin: hub 'ınızı oluşturmaya devam etmek için ağ iletişimi .

    Cihazların IoT Hub bağlanmak için kullanabileceği uç noktaları seçin. Varsayılan genel uç nokta (tüm ağlar) ayarını seçebilir veya genel uç nokta (seçili IP aralıkları) veya Özel uç nokta seçeneğini belirleyebilirsiniz. Bu örnek için varsayılan ayarı kabul edin.

    Bağlanabilecek uç noktaları seçin.

  6. Hub 'ınızı oluşturmaya devam etmek için İleri: yönetim ' i seçin.

    Azure portal kullanarak yeni bir hub için boyut ve ölçek ayarlayın.

    Varsayılan ayarları burada kabul edebilirsiniz. İsterseniz, aşağıdaki alanlardan herhangi birini değiştirebilirsiniz:

    • Fiyatlandırma ve ölçek katmanı: seçtiğiniz katman. İstediğiniz sayıda özelliğe ve her gün çözümünüz aracılığıyla kaç tane ileti gönderdiğinize bağlı olarak çeşitli katmanlardan seçim yapabilirsiniz. Ücretsiz katman, test ve değerlendirme için tasarlanmıştır. 500 cihazların hub 'a ve günde en fazla 8.000 iletiye bağlanmasını sağlar. Her Azure aboneliği ücretsiz katmanda bir IoT Hub 'ı oluşturabilir.

      IoT Hub cihaz akışları için bir hızlı başlangıç üzerinden çalışıyorsanız, ücretsiz katmanı seçin.

    • IoT Hub birimler: günlük birim başına izin verilen ileti sayısı, hub 'ın fiyatlandırma katmanına bağlıdır. Örneğin, hub 'ın 700.000 ileti girişini desteklemesini istiyorsanız iki adet S1 katmanı birimi seçersiniz. Diğer katman seçenekleri hakkında daha fazla bilgi için, bkz. doğru IoT Hub katmanını seçme.

    • IoT Için Defender: IoT ve cihazlarınıza ek bir tehdit koruması katmanı eklemek için bunu etkinleştirin. Bu seçenek ücretsiz katmanda hub 'lar için kullanılamaz. Bu özellik hakkında daha fazla bilgi için bkz. IoT Için Microsoft Defender.

    • cihazdan buluta bölümleri gelişmiş Ayarlar: bu özellik cihazdan buluta iletileri, iletilerin eşzamanlı okuyucu sayısıyla ilişkilendirir. Çoğu hub 'da yalnızca dört bölüm gereklidir.

  7. Sonraki ekrana devam etmek için İleri: Etiketler ' i seçin.

    Etiketler ad/değer çiftleridir. Kaynakları kategorilere ayırarak ve faturalandırmayı birleştirmek için birden fazla kaynağa ve kaynak grubuna aynı etiketi atayabilirsiniz. Bu belgede hiçbir etiket eklememezsiniz. Daha fazla bilgi için bkz. Azure kaynaklarınızı düzenlemek için etiketleri kullanma.

    Azure portal kullanarak hub için Etiketler atayın.

  8. İleri ' yi seçin: seçimlerinizi gözden geçirmek için ve Oluştur ' a tıklayın. Bu ekrana benzer bir şey görürsünüz, ancak hub 'ı oluştururken seçtiğiniz değerler vardır.

    Yeni hub oluşturma bilgilerini gözden geçirin.

  9. Yeni hub 'ınızın dağıtımını başlatmak için Oluştur ' u seçin. Dağıtım, hub oluşturulurken birkaç dakika sürer. Dağıtım tamamlandıktan sonra, yeni hub 'ı açmak için Kaynağa Git ' i seçin.

IoT hub'a yeni bir cihaz kaydetme

Bu bölümde, bu makale için bir cihaz kimliği oluşturmak üzere Azure CLI'sini kullanırsiniz. Cihaz Kimlikleri büyük/küçük harfe duyarlıdır.

  1. Azure Cloud Shell’i açın.

  2. Azure AZURE CLOUD SHELL için IoT Uzantısı'Microsoft Azure yüklemek için aşağıdaki komutu çalıştırın:

    az extension add --name azure-iot
    
  3. adlı yeni bir cihaz kimliği oluşturun myDeviceId ve şu komutlarla cihaz bağlantı dizesini alın:

    az iot hub device-identity create --device-id myDeviceId --hub-name {Your IoT Hub name}
    az iot hub device-identity connection-string show --device-id myDeviceId --hub-name {Your IoT Hub name} -o table
    

    Önemli

    Cihaz kimliği; müşteri desteği ve sorun giderme için toplanan günlüklerde görünüyor olabilir, bu nedenle adlandırırken herhangi bir önemli bilgi vermekten kaçının.

Sonuçtan cihaz bağlantı dizesini not edin. Bu cihaz bağlantı dizesi, cihaz uygulaması tarafından cihaz olarak IoT Hub için kullanılır.

IoT hub bağlantı dizesini alır

Bu makalede, istenen özellikleri bir cihaz ikizi ekleyen bir arka uç hizmeti oluşturun ve ardından kimlik kayıt defterini sorgular. Hizmetiniz bir cihaz ikizi istenen özelliklerini değiştirmek için hizmet Connect iznine ihtiyaç duyuyor ve kimlik kayıt defterini sorgulamak için kayıt defteri okuma izninin olması gerekir. Yalnızca bu iki izni içeren bir varsayılan paylaşılan erişim ilkesi yoktur, bu nedenle bir tane oluşturmanız gerekir.

Hizmet Connect ve kayıt defteri okuma izinleri veren ve bu ilke için bir bağlantı dizesi alan bir paylaşılan erişim ilkesi oluşturmak için şu adımları izleyin:

  1. Azure Portal kaynak grupları' nı seçin. Hub 'ınızın bulunduğu kaynak grubunu seçin ve ardından kaynak listesinden hub 'ınızı seçin.

  2. Hub 'ınızın sol tarafındaki bölmede paylaşılan erişim ilkeleri' ni seçin.

  3. İlke listesinin üstündeki en üstteki menüden Ekle' yi seçin.

  4. Paylaşılan erişim Ilkesi Ekle' nin altında, Ilkeniz Için Serviceandregistryread gibi açıklayıcı bir ad girin. İzinler altında, kayıt defteri okuma ve hizmet Connect' i seçin ve ardından Ekle' yi seçin.

    Yeni bir paylaşılan erişim ilkesinin nasıl ekleneceğini gösteren ekran yakalama

  5. İlke listesinden yeni ilkenizi seçin.

  6. Birincil bağlantı dizesi için Kopyala simgesini seçin ve değeri kaydedin.

    Bağlantı dizesinin nasıl alınacağını gösteren ekran yakalama

IoT Hub paylaşılan erişim ilkeleri ve izinleri hakkında daha fazla bilgi için bkz. erişim denetimi ve izinleri.

Hizmet uygulamasını oluşturma

Bu bölümde, myDeviceId ile Node.js cihaz ikizi için konum meta verileri ekleyen bir konsol uygulaması oluştururuz. Ardından IoT hub'larında depolanan cihaz ikizlerini sorgular, ABD'de bulunan cihazları seçer ve hücresel bağlantı bildirenleri seçer.

  1. addtagsandqueryapp adlı yeni bir boş klasör oluşturun. Addtagsandqueryapp klasöründe, komut isteminde aşağıdaki komutu package.jsyeni bir dosya oluşturun. parametresi --yes tüm varsayılanları kabul eder.

    npm init --yes
    
  2. addtagsandqueryapp klasöründeki komut isteminde, azure-iothub paketini yüklemek için aşağıdaki komutu çalıştırın:

    npm install azure-iothub --save
    
  3. Metin düzenleyicisi kullanarak addtagsandqueryapp AddTagsAndQuery.js yeni bir dosya oluşturun.

  4. Aşağıdaki koduAddTagsAndQuery.js ekleyin. yerine IoT hub IoT Hub dizesini al içinde kopyalanan bağlantı {iot hub connection string} dizesini kullanın.

         'use strict';
         var iothub = require('azure-iothub');
         var connectionString = '{iot hub connection string}';
         var registry = iothub.Registry.fromConnectionString(connectionString);
    
         registry.getTwin('myDeviceId', function(err, twin){
             if (err) {
                 console.error(err.constructor.name + ': ' + err.message);
             } else {
                 var patch = {
                     tags: {
                         location: {
                             region: 'US',
                             plant: 'Redmond43'
                       }
                     }
                 };
    
                 twin.update(patch, function(err) {
                   if (err) {
                     console.error('Could not update twin: ' + err.constructor.name + ': ' + err.message);
                   } else {
                     console.log(twin.deviceId + ' twin updated successfully');
                     queryTwins();
                   }
                 });
             }
         });
    

    Registry nesnesi, hizmetten cihaz ikizleriyle etkileşim kurmak için gereken tüm yöntemleri gösterir. Önceki kod önce Registry nesnesini başlatıyor, ardından myDeviceId için cihaz ikizini aldı ve son olarak etiketlerini istenen konum bilgileriyle günceller.

    Etiketleri güncelleştirdikten sonra queryTwins işlevini çağırıyor.

  5. queryTwins işlevini uygulamak içinAddTagsAndQuery.js sonuna aşağıdaki kodu ekleyin:

         var queryTwins = function() {
             var query = registry.createQuery("SELECT * FROM devices WHERE tags.location.plant = 'Redmond43'", 100);
             query.nextAsTwin(function(err, results) {
                 if (err) {
                     console.error('Failed to fetch the results: ' + err.message);
                 } else {
                     console.log("Devices in Redmond43: " + results.map(function(twin) {return twin.deviceId}).join(','));
                 }
             });
    
             query = registry.createQuery("SELECT * FROM devices WHERE tags.location.plant = 'Redmond43' AND properties.reported.connectivity.type = 'cellular'", 100);
             query.nextAsTwin(function(err, results) {
                 if (err) {
                     console.error('Failed to fetch the results: ' + err.message);
                 } else {
                     console.log("Devices in Redmond43 using cellular network: " + results.map(function(twin) {return twin.deviceId}).join(','));
                 }
             });
         };
    

    Önceki kod iki sorgu yürütür: birincisi yalnızca Redmond43 tesisinde bulunan cihazların cihaz ikizlerini seçer ve ikincisi ise sorguyu yalnızca hücresel ağ üzerinden de bağlanan cihazları seçerek iyiler.

    Kod sorgu nesnesini oluşturduğunda, ikinci parametrede döndürülen en fazla belge sayısını belirtir. Sorgu nesnesi, tüm sonuçları almak için nextAsTwin yöntemlerini birden çok kez çağırmak için kullanabileceğiniz bir hasMoreResults boole özelliği içerir. Next adlı yöntem, örneğin toplama sorgularının sonuçları gibi cihaz ikizleri olmayan sonuçlar için kullanılabilir.

  6. Uygulamayı şu şekilde çalıştırın:

        node AddTagsAndQuery.js
    

    Sonuçlarda Redmond43'te bulunan tüm cihazları isteyen ve sonuçları hücresel ağ kullanan cihazlarla kısıtlayan sorgu için hiçbir cihaz görmeyebilirsiniz.

    Sorgu sonuçlarında tek cihazı görme

Sonraki bölümde, bağlantı bilgilerini rapor alan ve önceki bölümde sorgunun sonucunda değişiklik yapılan bir cihaz uygulaması oluşturabilirsiniz.

Cihaz uygulamasını oluşturma

Bu bölümde, hub'ınıza myDeviceId olarak bağlanan bir Node.js konsol uygulaması oluştur ve ardından cihaz ikizlerinin bildirilen özelliklerini hücresel ağ kullanarak bağlandığı bilgileri içermesi için güncelleştirmeler oluştur.

  1. reportconnectivity adlı yeni bir boş klasör oluşturun. komut isteminde aşağıdaki komutu kullanarak reportconnectivity package.jsyeni bir dosya oluşturun. parametresi --yes tüm varsayılanları kabul eder.

    npm init --yes
    
  2. komut isteminde reportconnectivity klasöründe azure-iot-device ve azure-iot-device-mqtt paketlerini yüklemek için aşağıdaki komutu çalıştırın:

    npm install azure-iot-device azure-iot-device-mqtt --save
    
  3. Metin düzenleyicisi kullanarak reportconnectivity klasöründeReportConnectivity.js yeni bir dosya oluşturun.

  4. Aşağıdaki koduReportConnectivity.js ekleyin. yerine IoT hub'a yeni bir cihaz kaydetme içinde myDeviceId cihaz kimliğini oluşturulduğunda kopyalanan cihaz {device connection string} bağlantı dizesiyle değiştirin.

        'use strict';
        var Client = require('azure-iot-device').Client;
        var Protocol = require('azure-iot-device-mqtt').Mqtt;
    
        var connectionString = '{device connection string}';
        var client = Client.fromConnectionString(connectionString, Protocol);
    
        client.open(function(err) {
        if (err) {
            console.error('could not open IotHub client');
        }  else {
            console.log('client opened');
    
            client.getTwin(function(err, twin) {
            if (err) {
                console.error('could not get twin');
            } else {
                var patch = {
                    connectivity: {
                        type: 'cellular'
                    }
                };
    
                twin.properties.reported.update(patch, function(err) {
                    if (err) {
                        console.error('could not update twin');
                    } else {
                        console.log('twin state reported');
                        process.exit();
                    }
                });
            }
            });
        }
        });
    

    Client nesnesi, cihazdan cihaz ikizleriyle etkileşim kurmak için gereken tüm yöntemleri gösterir. Önceki kod, Client nesnesini başlatıldıktan sonra myDeviceId için cihaz ikizini alın ve bildirilen özelliğini bağlantı bilgileriyle günceller.

  5. Cihaz uygulamasını çalıştırma

        node ReportConnectivity.js
    

    İletiyi görüyor twin state reported gerekir.

  6. Cihaz bağlantı bilgilerini rapor ettiğine göre, her iki sorguda da görüntü gerekir. Geri dön addtagsandqueryapp klasörüne gidin ve sorguları yeniden çalıştırın:

        node AddTagsAndQuery.js
    

    Bu kez myDeviceId her iki sorgu sonuçlarında da görüntü gerekir.

    Her iki sorgu sonuçlarında myDeviceId'i gösterme

Sonraki adımlar

Bu öğreticide, Azure portalında yeni bir IoT hub'ı yapılandırdınız ve ardından IoT hub'ının kimlik kayıt defterinde bir cihaz kimliği oluşturdunuz. Cihaz meta verilerini bir arka uç uygulamasından etiketler olarak eklediniz ve cihaz ikizi içinde cihaz bağlantı bilgilerini rapor etmek için bir sanal cihaz uygulaması yazdınız. Ayrıca bu bilgileri sorgu diline benzer SQL sorgulamayı IoT Hub öğrendiniz.

Nasıl yapmayı öğrenmek için aşağıdaki kaynakları kullanın:

  • veri öğreticisi ile Kullanmaya başlayın cihazlardan telemetri IoT Hub gönderme,

  • Cihazları yapılandırmak için istenen özellikleri kullanma öğreticisi, Cihaz ikizi istenen özelliklerini kullanarak cihazları yapılandırma,

  • Doğrudan yöntemleri kullanma hızlı başlangıç ile cihazları etkileşimli olarak denetleme (örneğin, kullanıcı denetimindeki bir uygulamanın fanı açma).