Aracılığıyla paylaş


Azure portalını ve .NET cihazını kullanarak IoT Hub modül kimliğini ve modül ikizini kullanmaya başlama

Modül kimlikleri ve modül ikizleri, Azure IoT Hub cihaz kimliğine ve cihaz ikizine benzer, ancak daha hassas ayrıntı düzeyi sağlar. Azure IoT Hub cihaz kimliği ve cihaz ikizi, arka uç uygulamasının bir cihazı yapılandırmasına ve cihazın koşullarına görünürlük sağlamasına olanak tanırken, modül kimliği ve modül ikizi bir cihazın tek tek bileşenleri için bu özellikleri sağlar. İşletim sistemi cihazları veya üretici yazılımı cihazları gibi birden çok bileşeni olan yetenekli cihazlarda modül kimlikleri ve modül ikizleri, her bileşen için yalıtılmış yapılandırma ve koşullar sağlar.

Not

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

Bu makalede şunları nasıl yapacağınızı öğreneceksiniz:

  • Portalda bir modül kimliği oluşturun.

  • Modül ikizini cihazınızdan güncelleştirmek için bir .NET cihaz SDK'sı kullanın.

Not

Hem cihaz hem de arka uç uygulamaları oluşturmak için kullanılabilen SDK araçları hakkında daha fazla bilgi için bkz . Azure IoT SDK'ları .

Önkoşullar

Modül kimlik doğrulaması

Modül kimliklerinin kimliğini doğrulamak için simetrik anahtarları veya X.509 sertifikalarını kullanabilirsiniz. X.509 sertifika kimlik doğrulaması için modülün sertifikasının gibi CN=<deviceid>/<moduleid>biçimlendirilmiş ortak adı (CN) olmalıdır. Örneğin:

openssl req -new -key d1m1.key.pem -out d1m1.csr -subj "/CN=device01\/module01"

Portalda bir modül kimliği oluşturma

Tek bir cihaz kimliği içinde en fazla 20 modül kimliği oluşturabilirsiniz. Kimlik eklemek için şu adımları izleyin:

  1. Azure portalındaki mevcut cihazınızdan Modül Kimliği Ekle'yi seçerek ilk modül kimliğinizi oluşturun.

  2. myFirstModule adını girin. Modül kimliğinizi kaydedin.

  3. Yeni modül kimliğiniz ekranın en altında görünür. Modül kimliği ayrıntılarını görmek için seçin.

  4. Bağlantı dizesini (birincil anahtar) kaydedin. Modülünüzü bir konsol uygulamasında cihazda ayarlamak için sonraki bölümde kullanacaksınız.

    Modül Kimliği Ayrıntıları menüsünü gösteren ekran görüntüsü.

.NET cihaz SDK’sını kullanarak modül ikizini güncelleştirme

Şimdi sanal cihazınızdan bulutla iletişim kuralım. Bir modül kimliği oluşturulduktan sonra, IoT Hub’ında örtük olarak bir modül ikizi oluşturulur. Bu bölümde, modül ikizi tarafından raporlanan özelliklerini güncelleştiren simülasyon cihazınızda bir .NET konsol uygulaması oluşturursunuz.

Visual Studio projesi oluşturma

Modül ikizini güncelleştiren ve bildirilen özellikleri güncelleştiren bir uygulama oluşturmak için şu adımları izleyin:

  1. Visual Studio'da Yeni proje oluştur'u ve ardından Konsol Uygulaması (.NET Framework) öğesini ve ardından İleri'yi seçin.

  2. Yeni projenizi yapılandırın bölümünde Proje adı olarak UpdateModuleTwinReportedProperties girin. Devam etmek için İleri'yi seçin.

    'Yeni projenizi yapılandırın' açılan penceresini gösteren ekran görüntüsü.

  3. Varsayılan .NET çerçevesini koruyun ve Oluştur'u seçin.

En son Azure IoT Hub .NET cihaz SDK'sını yükleme

Modül kimliği ve modül ikizi özellikleri yalnızca IoT Hub yayın öncesi cihaz SDK'larında kullanılabilir. Yüklemek için şu adımları izleyin:

  1. Visual Studio'da, Çözüm için NuGet Paketlerini Yönet Paket Yöneticisi> Araçlar>NuGet'i açın.

  2. Gözat'ı ve ardından Ön sürümü dahil et'i seçin. Microsoft.Azure.Devices.Client için arama yapma. En son sürümü seçin ve yükleyin.

    Microsoft.Azure.Devices.Client'ın nasıl yükleneceğini gösteren ekran görüntüsü.

    Şimdi tüm modül özelliklerine erişiminiz vardır.

UpdateModuleTwinReportedProperties konsol uygulaması oluşturma

Önemli

Bu makale, simetrik anahtar kimlik doğrulaması olarak da adlandırılan paylaşılan erişim imzasını kullanarak bir cihazı bağlama adımlarını içerir. Bu kimlik doğrulama yöntemi test ve değerlendirme için uygundur, ancak X.509 sertifikalarını kullanarak bir cihazın kimliğini doğrulamak daha güvenli bir yaklaşımdır. Daha fazla bilgi edinmek için bkz . En iyi güvenlik yöntemleri > Bağlantı güvenliği.

Uygulamanızı oluşturmak için şu adımları izleyin:

  1. Aşağıdaki using deyimlerini Program.cs dosyasının en üst kısmına ekleyin:
using Microsoft.Azure.Devices.Client;
using Microsoft.Azure.Devices.Shared;
using Newtonsoft.Json;
  1. Program sınıfına aşağıdaki alanları ekleyin. Yer tutucu değerini daha önce kaydettiğiniz modül bağlantı dizesi değiştirin.
private const string ModuleConnectionString = "<Your module connection string>";
private static ModuleClient Client = null;
  1. Aşağıdaki OnDesiredPropertyChanged yöntemini Program sınıfına ekleyin:
private static async Task OnDesiredPropertyChanged(TwinCollection desiredProperties, object userContext)
    {
        Console.WriteLine("desired property change:");
        Console.WriteLine(JsonConvert.SerializeObject(desiredProperties));
        Console.WriteLine("Sending current time as reported property");
        TwinCollection reportedProperties = new TwinCollection
        {
            ["DateTimeLastDesiredPropertyChangeReceived"] = DateTime.Now
        };

        await Client.UpdateReportedPropertiesAsync(reportedProperties).ConfigureAwait(false);
    }
  1. Son olarak Main yöntemini aşağıdaki kodla değiştirin:
static void Main(string[] args)
{
    Microsoft.Azure.Devices.Client.TransportType transport = Microsoft.Azure.Devices.Client.TransportType.Amqp;

    try
    {
        Client = ModuleClient.CreateFromConnectionString(ModuleConnectionString, transport);
        Client.SetConnectionStatusChangesHandler(ConnectionStatusChangeHandler);
        Client.SetDesiredPropertyUpdateCallbackAsync(OnDesiredPropertyChanged, null).Wait();

        Console.WriteLine("Retrieving twin");
        var twinTask = Client.GetTwinAsync();
        twinTask.Wait();
        var twin = twinTask.Result;
        Console.WriteLine(JsonConvert.SerializeObject(twin));

        Console.WriteLine("Sending app start time as reported property");
        TwinCollection reportedProperties = new TwinCollection();
        reportedProperties["DateTimeLastAppLaunch"] = DateTime.Now;

        Client.UpdateReportedPropertiesAsync(reportedProperties);
    }
    catch (AggregateException ex)
    {
        Console.WriteLine("Error in sample: {0}", ex);
    }

    Console.WriteLine("Waiting for Events.  Press enter to exit...");
    Console.ReadKey();
    Client.CloseAsync().Wait();
}

private static void ConnectionStatusChangeHandler(ConnectionStatus status, ConnectionStatusChangeReason reason)
{
    Console.WriteLine($"Status {status} changed: {reason}");
}

F5 kullanarak bu uygulamayı derleyebilir ve çalıştırabilirsiniz.

Artık modül ikizini alma ve bildirilen özellikleri AMQP protokolüyle güncelleştirme hakkında bilgi edineceksiniz.

Sonraki adımlar

IoT Hub’ı kullanmaya başlamak ve diğer IoT senaryolarını keşfetmek için bkz: