Öğretici: IoT Hub ileti yönlendirmeyi kullanarak cihaz verilerini Azure Depolama gönderme

IoT cihazlarınızdan blob depolama, Service Bus Kuyrukları, Service Bus Konuları ve Event Hubs gibi Azure hizmetlerine telemetri verileri göndermek için Azure IoT Hub'da ileti yönlendirmeyi kullanın. Her IoT hub'ında Event Hubs ile uyumlu varsayılan bir yerleşik uç nokta vardır. Ayrıca yönlendirme sorguları tanımlayarak özel uç noktalar oluşturabilir ve iletileri diğer Azure hizmetlerine yönlendirebilirsiniz. IoT hub'ına ulaşan her ileti, yönlendirme sorguları eşleşen tüm uç noktalara yönlendirilir. İleti tanımlı yönlendirme sorgularından hiçbirine uymuyorsa, varsayılan uç noktaya yönlendirilir.

Bu öğreticide, aşağıdaki görevleri gerçekleştireceksiniz:

  • Bir IoT hub'ı oluşturun ve bu hub'a cihaz iletileri gönderin.
  • Depolama hesabı oluşturma.
  • Depolama hesabı için özel bir uç nokta oluşturun ve iletileri IoT hub'ından bu hesaba yönlendirin.
  • Depolama hesabı blobunda cihaz iletilerini görüntüleyin.

Önkoşullar

  • Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

  • Azure aboneliğinizde bir IoT hub'ı. Henüz bir hub'ına sahip değilseniz IoT hub'ı oluşturma makalesindeki adımları izleyebilirsiniz.

  • Bu öğreticide C# için Azure IoT SDK'sından alınan örnek kod kullanılır.

    • SDK depoyu geliştirme makinenize indirin veya kopyalayın.
    • Geliştirme makinenizde .NET Core 3.0.0 veya üzerini kullanın. Komutunu çalıştırarak dotnet --version sürümünüzü denetleyin ve gerekirse .NET'i indirin.
  • Güvenlik duvarınızda 8883 numaralı bağlantı noktasının açık olduğundan emin olun. Bu öğreticideki örnek, 8883 numaralı bağlantı noktası üzerinden iletişim kuran MQTT protokollerini kullanır. Bu bağlantı noktası bazı kurumsal ve eğitim ağı ortamlarında engellenebilir. Bu sorunu çözmenin daha fazla bilgi ve yolları için bkz. IoT Hub'a (MQTT) Bağlan.

  • İsteğe bağlı olarak Azure IoT Gezgini'ni yükleyin. Bu araç, IoT hub'ınıza ulaşan iletileri gözlemlemenize yardımcı olur. Bu makalede Azure IoT Gezgini kullanılır.

Azure portalı için başka önkoşul yoktur.

Cihazı kaydetme ve IoT Hub'a ileti gönderme

IoT hub'ınıza yeni bir cihaz kaydedin.

  1. Azure portalında oturum açın ve IoT hub'ınıza gidin.

  2. Menünün Cihaz yönetimi bölümünden Cihazlar'ı seçin.

  3. Cihaz ekle'yi seçin.

    Screenshot that shows adding a new device in the Azure portal.

  4. Bir cihaz kimliği girin ve Kaydet'i seçin.

  5. Yeni cihaz artık cihaz listesinde olmalıdır. Değilse sayfayı yenileyin. Cihaz ayrıntıları sayfasını açmak için cihaz kimliğini seçin.

  6. Cihaz anahtarlarından birini kopyalayın ve kaydedin. Sanal cihaz telemetri iletileri oluşturan örnek kodu yapılandırmak için bu değeri kullanacaksınız.

    Screenshot that shows copying the primary key from the device details page.

Artık bir cihaz kimliğiniz ve anahtarınız olduğuna göre örnek kodu kullanarak IoT Hub'a cihaz telemetri iletileri göndermeye başlayın.

İpucu

Bu öğretici için Azure CLI adımlarını izliyorsanız, örnek kodu ayrı bir oturumda çalıştırın. Bu şekilde, CLI adımlarının geri kalanını izlerken örnek kodun çalışmaya devam etmesi için izin vekleyebilirsiniz.

  1. Önkoşulların bir parçası olarak yapmadıysanız şimdi GitHub'dan C# için Azure IoT SDK deposunu indirin veya kopyalayın.

  2. SDK'yı indirdiğiniz veya kopyaladığınız klasörden klasöre azure-iot-sdk-csharp\iothub\device\samples\how to guides\HubRoutingSample gidin.

  3. Azure IoT C# SDK'sını HubRoutingSample.csproj ve dosyada belirtilen gerekli bağımlılıkları yükleyin:

    dotnet restore
    
  4. Seçtiğiniz bir düzenleyicide Parameters.cs dosyayı açın. Bu dosya, örnek tarafından desteklenen parametreleri gösterir. PrimaryConnectionString Bu makalede örneği çalıştırırken yalnızca parametresi kullanılacaktır. Bu dosyadaki kodu gözden geçirin. Değişiklik gerekmez.

  5. Aşağıdaki komutu kullanarak örnek kodu derleyin ve çalıştırın:

    değerini IoT hub'ınızdaki cihazınızdaki birincil bağlantı dizesi ile değiştirin<myDevicePrimaryConnectionString>.

    dotnet run --PrimaryConnectionString <myDevicePrimaryConnectionString>
    
  6. IoT Hub'a gönderilirken çıktıya yazdırılan iletileri görmeye başlamanız gerekir. Öğretici sırasında bu programı çalışır durumda bırakın.

IoT Explorer'ı iletileri görüntülemek için yapılandırma

IoT Gezgini'ni IoT hub'ınıza bağlanacak ve yerleşik uç noktaya ulaşan iletileri okuyacak şekilde yapılandırın.

İlk olarak IoT hub'ınızın bağlantı dizesi alın.

  1. Azure portalında IoT Hub'ınıza gidin.

  2. Menünün Güvenlik ayarları bölümünde Paylaşılan erişim ilkeleri'ni seçin.

  3. iothubowner ilkesini seçin.

    Open the iothubowner shared access policy.

  4. Birincil bağlantı dizesi kopyalayın.

    Copy the iothubowner primary connection string.

Şimdi bu bağlantı dizesi kullanarak IoT hub'ınız için IoT Gezgini'ni yapılandırın.

  1. Geliştirme makinenizde IoT Explorer'ı açın.

  2. Bağlantı ekle'yi seçin.

    Screenshot that shows adding an IoT hub connection in IoT Explorer.

  3. Hub'ınızın bağlantı dizesi metin kutusuna yapıştırın.

  4. Kaydet'i seçin.

  5. IoT hub'ınıza bağlandıktan sonra cihazların listesini görmeniz gerekir. Bu öğretici için oluşturduğunuz cihaz kimliğini seçin.

  6. Telemetri'yi seçin.

  7. Cihazınız çalışmaya devam ettiyse Başlat'ı seçin. Cihazınız çalışmıyorsa telemetriyi görmezsiniz.

    Start monitoring device telemetry in IoT Explorer.

  8. Cihazınızdan gelen ve en son iletilerin en üstte görüntülendiği iletileri görmeniz gerekir.

    View messages arriving at IoT hub on the built-in endpoint.

    Normal, depolama ve kritik olmak üzere üç farklı ileti türü gördüğünüzden emin olmak için gelen iletileri birkaç dakika izleyin. Bunu gördükten sonra cihazınızı durdurabilirsiniz.

Bu iletilerin tümü IoT hub'ınız için varsayılan yerleşik uç noktaya geliyor. Sonraki bölümlerde özel bir uç nokta oluşturacak ve bu iletilerin bazılarını ileti özelliklerine göre depolama alanına yönlendireceğiz. İletiler yalnızca IoT hub'ında diğer yollarla eşleşmediğinde yerleşik uç noktaya gittiği için bu iletiler IoT Gezgini'nde görüntülenmez.

İleti yönlendirmeyi ayarlama

simülasyon cihazı tarafından iletiye eklenen özelliklere göre iletileri farklı kaynaklara yönlendireceksiniz. Özel yönlendirilmeyen iletiler varsayılan uç noktaya (iletiler/olaylar) gönderilir.

Bu öğreticinin örnek uygulaması, IoT hub'ına gönderdiği her iletiye bir düzey özelliği atar. Her iletiye rastgele bir normal, depolama veya kritik düzeyi atanır.

İlk adım, verilerin yönlendirileceği uç noktayı ayarlamaktır. İkinci adım, bu uç noktayı kullanan ileti yolunu ayarlamaktır. Yönlendirmeyi ayarladıktan sonra portalda uç noktaları ve ileti yollarını görüntüleyebilirsiniz.

Depolama hesabı oluşturma

Bir Azure Depolama hesabı ve bu hesapta, bu hesaba yönlendirilen cihaz iletilerini barındıracak bir kapsayıcı oluşturun.

  1. Azure portalında Depolama hesapları arayın.

  2. Oluştur'u belirleyin.

  3. Depolama hesabınız için aşağıdaki değerleri sağlayın:

    Parametre Value
    Abonelik IoT hub'ınızı içeren aboneliği seçin.
    Kaynak grubu IoT hub'ınızı içeren kaynak grubunu seçin.
    Depolama hesabı adı Depolama hesabınız için genel olarak benzersiz bir ad sağlayın.
    Performans Varsayılan Standart değeri kabul edin.

    Screenshot that shows creating a storage account.

  4. Gözden Geçir + oluştur'u seçerek diğer tüm varsayılan değerleri kabul edebilirsiniz.

  5. Doğrulama tamamlandıktan sonra Oluştur'u seçin.

  6. Dağıtım tamamlandıktan sonra, Kaynağa git’i seçin.

  7. Depolama hesabı menüsünde Veri depolama bölümünde Kapsayıcılar'ı seçin.

  8. Yeni bir kapsayıcı oluşturmak için + Kapsayıcı'ya tıklayın.

    Screenshot that shows creating a storage container

  9. Kapsayıcınız için bir ad girin ve Oluştur'u seçin.

Depolama hesabına yönlendirme

Şimdi depolama hesabı için yönlendirmeyi ayarlayın. Bu bölümde, oluşturduğunuz depolama hesabına işaret eden yeni bir uç nokta tanımlarsınız. Ardından, level özelliğinin depolama olarak ayarlandığı iletiler için filtreleyen bir yol oluşturun ve bunları depolama uç noktasına yönlendirin.

Not

Veriler varsayılan olan Apache Avro biçiminde veya JSON biçiminde blob depolamaya yazılabilir.

Kodlama biçimi yalnızca blob depolama uç noktası yapılandırıldığında ayarlanabilir. Zaten ayarlanmış bir uç nokta için biçim değiştirilemez. JSON kodlamasını kullanırken, ileti sistemi özelliklerinde contentType değerini JSON ve contentEncoding değerini UTF-8 olarak ayarlamanız gerekir.

Blob depolama uç noktasını kullanma hakkında daha ayrıntılı bilgi için lütfen depolamaya yönlendirme yönergelerine bakın.

  1. Azure portalında IoT hub'ınıza gidin.

  2. Hub ayarları'nın altındaki kaynak menüsünde İleti yönlendirme'yi ve ardından Ekle'yi seçin.

    Screenshot that shows location of the Add button, to add a new route in your IoT hub.

  3. Uç Nokta sekmesinde, aşağıdaki bilgileri sağlayarak bir Depolama uç noktası oluşturun:

    Parametre Value
    Uç nokta türü Depolama’yı seçin.
    Uç nokta adı Bu uç nokta için benzersiz bir ad sağlayın.
    Azure Depolama kapsayıcısı Kapsayıcı seçin'i seçin. Önceki bölümde oluşturduğunuz depolama hesabını ve kapsayıcıyı seçmek için istemleri izleyin.
    Kodlama JSON'ı seçin. Bu alan griyse depolama hesabı bölgeniz JSON'yi desteklemez. Bu durumda varsayılan AVRO ile devam edin.

    Screenshot that shows the Add a storage endpoint pane with the correct options selected.

  4. Parametrelerin geri kalanı için varsayılan değerleri kabul edin ve Oluştur + İleri'yi seçin.

  5. Yol sekmesinde, oluşturduğunuz Depolama uç noktasına işaret eden bir yol oluşturmak için aşağıdaki bilgileri sağlayın:

    Parametre Value
    Ad Yolunuz için bir ad oluşturun.
    Veri kaynağı Açılan listeden Cihaz Telemetri İletileri'nin seçili olduğunu doğrulayın.
    Yolu etkinleştir Bu alanın işaretli olduğunu doğrulayın.
    Yönlendirme sorgusu Sorgu dizesi olarak girin level="storage" .

    Screenshot that shows adding a route with a routing query.

  6. Oluştur + zenginleştirmeleri atla'yı seçin.

Yönlendirilen iletileri görüntüleme

IoT Hub'da yol oluşturulduktan ve etkinleştirildikten sonra, sorgu koşuluna uyan iletileri depolama uç noktasına yönlendirmeye hemen başlar.

IoT Explorer ile yerleşik uç noktayı izleme

Geliştirme makinenizde IoT Explorer oturumuna dönün. IoT Gezgini'nin IoT hub'ınız için yerleşik uç noktayı izlediğini unutmayın. Bu, artık yalnızca oluşturduğumuz özel yol tarafından yönlendirilmeyen iletileri görüyor olmanız gerektiği anlamına gelir.

Kodu çalıştırarak örneği yeniden başlatın. Gelen iletileri birkaç dakika izleyin ve yalnızca veya criticalolarak ayarlanmış normal iletileri level görmeniz gerekir.

Depolama kapsayıcısında iletileri görüntüleme

İletilerin depolama kapsayıcısında geldiğini doğrulayın.

  1. Azure portalda depolama hesabınıza gidin.

  2. Menünün Veri depolama bölümünden Kapsayıcılar'ı seçin.

  3. Bu öğretici için oluşturduğunuz kapsayıcıyı seçin.

  4. IoT hub'ınızın adını içeren bir klasör olmalıdır. .json bir dosyaya gelene kadar dosya yapısında detaya gidin.

    Screenshot that shows finding routed messages in storage.

  5. JSON dosyasını seçin ve ardından İndir'i seçerek JSON dosyasını indirin. Dosyanın cihazınızdan özelliği olarak ayarlanmış iletiler içerdiğini levelstorageonaylayın.

  6. Örneği çalıştırmayı durdurun.

Kaynakları temizleme

Bu öğreticide kullandığınız tüm Azure kaynaklarını kaldırmak istiyorsanız kaynak grubunu silin. Bu eylem grubun içerdiği tüm kaynakları siler. Kaynak grubunun tamamını silmek istemiyorsanız, tek tek kaynakları bulmak ve silmek için Azure portalını kullanın.

Sonraki öğreticiye devam etmek istiyorsanız, burada oluşturduğunuz kaynakları saklayın.

  1. Azure portalında, bu öğreticinin IoT hub'ını ve depolama hesabını içeren kaynak grubuna gidin.
  2. Hangilerini temizlemek istediğinizi belirlemek için kaynak grubundaki tüm kaynakları gözden geçirin.
    • Tüm kaynağı silmek istiyorsanız Kaynak grubunu sil'i seçin.
    • Yalnızca belirli bir kaynağı silmek istiyorsanız, silmek istediklerinizi seçmek için her kaynak adının yanındaki onay kutularını kullanın. Ardından Sil'i seçin.

Sonraki adımlar

Bu öğreticide bir Azure kaynağı için özel uç nokta oluşturmayı ve ardından bu uç noktaya cihaz iletileri göndermek için bir yol oluşturmayı öğrendiniz. Aşağı akış işlemeyi basitleştirmek için kullanılabilecek ek verilerle iletileri zenginleştirmeyi öğrenmek için sonraki öğreticiye geçin