Farklı uç noktalara cihazdan buluta iletiler göndermek için IoT Hub ileti yönlendirmeyi kullanma

Not

Bu makalede bahsedilen buluttan cihaza mesajlaşma, cihaz ikizleri ve cihaz yönetimi gibi bazı özellikler yalnızca standart IoT Hub 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ı seçme.

İleti yönlendirme, cihazlarınızdan bulut hizmetlerine otomatik, ölçeklenebilir ve güvenilir bir şekilde ileti göndermenizi sağlar. İleti yönlendirme şu nedenler için kullanılabilir:

  • Yerleşik uç noktaya ve özel uç noktalara cihaz telemetri iletilerinin yanı sıra olaylar, cihaz yaşam döngüsü olayları, cihaz ikizi değişiklik olayları, dijital ikiz değişiklik olayları ve cihaz bağlantı durumu olayları gönderme. Yönlendirme uç noktaları hakkında bilgi edinin. IoT Tak Çalıştır cihazlardan gönderilen olaylar hakkında daha fazla bilgi edinmek için bkz. Dijital ikizleri IoT Tak Çalıştır anlama.

  • Zengin sorgular uygulayarak verileri çeşitli uç noktalara yönlendirmeden önce filtreleme. İleti yönlendirme, ileti özelliklerini ve ileti gövdesini, cihaz ikizi etiketlerini ve cihaz ikizi özelliklerini sorgulamanızı sağlar. İleti yönlendirmede sorguları kullanma hakkında daha fazla bilgi edinin.

IoT Hub ileti yönlendirmenin çalışması için bu hizmet uç noktalarına yazma erişimi gerekir. Uç noktalarınızı Azure portal aracılığıyla yapılandırıyorsanız, sizin için gerekli izinler eklenir. Hizmetlerinizi beklenen aktarım hızını destekleyecek şekilde yapılandırdığınızdan emin olun. Örneğin, Event Hubs'ı özel uç nokta olarak kullanıyorsanız, IoT Hub ileti yönlendirme yoluyla göndermeyi planladığınız olayların girişiyle başa çıkabilmesi için bu olay hub'ının aktarım hızı birimlerini yapılandırmanız gerekir. Benzer şekilde, uç nokta olarak Bir Service Bus Kuyruğu kullanırken, kuyruğun tüketiciler tarafından çıkış yapılana kadar tüm veri girişlerini tutabilmesini sağlamak için en büyük boyutu yapılandırmanız gerekir. IoT çözümünüzü ilk kez yapılandırırken diğer uç noktalarınızı izlemeniz ve gerçek yük için gerekli ayarlamaları yapmanız gerekebilir.

IoT Hub, protokoller arasında birlikte çalışabilirlik için tüm cihazdan buluta mesajlaşma için ortak bir biçim tanımlar. bir ileti aynı uç noktaya işaret eden birden çok yolla eşleşiyorsa, IoT Hub iletiyi bu uç noktaya yalnızca bir kez teslim eder. Bu nedenle, Service Bus kuyruğunuzda veya konu başlığınızda yinelenenleri kaldırmayı yapılandırmanız gerekmez. İleti yönlendirmeyi yapılandırmayı öğrenmek için bu öğreticiyi kullanın.

Yönlendirme uç noktaları

IoT hub'ında Event Hubs ile uyumlu varsayılan yerleşik uç nokta (iletiler/olaylar) vardır. Aboneliğinizdeki diğer hizmetleri IoT hub'ına bağlayarak iletilerin yönlendirilmesi için özel uç noktalar oluşturabilirsiniz.

Her ileti, yönlendirme sorguları eşleşen tüm uç noktalara yönlendirilir. Başka bir deyişle, bir ileti birden çok uç noktaya yönlendirilebilir.

Özel uç noktanızda güvenlik duvarı yapılandırmaları varsa, güvenilen Microsoft birinci taraf özel durumunu kullanmayı göz önünde bulundurun.

IoT Hub şu anda aşağıdaki uç noktaları destekler:

  • Yerleşik uç nokta
  • Depolama kapsayıcıları
  • Service Bus Kuyrukları ve Service Bus Konuları
  • Event Hubs
  • Cosmos DB (önizleme)

Yönlendirme uç noktası olarak yerleşik uç nokta

Yerleşik uç noktadan (iletiler/olaylar) cihazdan buluta iletileri almak için standart Event Hubs tümleştirmesini ve SDK'ları kullanabilirsiniz. Bir yol oluşturulduktan sonra, bu uç noktaya bir yol oluşturulmadığı sürece veriler yerleşik uç noktaya akmayı durdurur. Hiçbir yol oluşturulmasa bile, iletileri yerleşik uç noktaya yönlendirmek için bir geri dönüş yolu etkinleştirilmelidir. Portalı veya CLI'yi kullanarak hub'ınızı oluşturursanız geri dönüş varsayılan olarak etkinleştirilir.

Yönlendirme uç noktası olarak Azure Depolama

İletileri yönlendirebileceğiniz iki depolama hizmeti IoT Hub vardır: Azure Blob Depolama ve Azure Data Lake Storage 2. Nesil (ADLS 2. Nesil) hesapları. Azure Data Lake Storage hesapları, blob depolama üzerine kurulu hiyerarşik ad alanı özellikli depolama hesaplarıdır. Bunların her ikisi de depolama alanları için blobları kullanır.

IoT Hub, Azure Depolama'ya Apache Avro biçiminde ve JSON biçiminde veri yazmayı destekler. Varsayılan değer AVRO'dur. JSON kodlamasını kullanırken, contentType özelliğini application/json ve contentEncoding özelliğini ileti sistemi özelliklerindeUTF-8 olarak ayarlamanız gerekir. Bu değerlerin ikisi de büyük/küçük harfe duyarlı değildir. İçerik kodlaması ayarlı değilse, IoT Hub iletileri 64 tabanında kodlanmış biçimde yazar.

Kodlama biçimi yalnızca blob depolama uç noktası yapılandırıldığında ayarlanabilir; mevcut bir uç nokta için düzenlenemez. Mevcut uç noktanın kodlama biçimlerini değiştirmek için önce uç noktayı silmeniz ve ardından istediğiniz biçimle yeniden oluşturmanız gerekir. Yararlı stratejilerden biri, istediğiniz kodlama biçimine sahip yeni bir özel uç nokta oluşturmak ve bu uç noktaya paralel bir yol eklemek olabilir. Bu şekilde, mevcut uç noktayı silmeden önce verilerinizi doğrulayabilirsiniz.

Kodlama biçimini, özellikle RoutingStorageContainerProperties, Azure portal, Azure CLIveyaAzure PowerShell IoT Hub Oluşturma veya Güncelleştirme REST API'sini kullanarak seçebilirsiniz. Aşağıdaki görüntüde, Azure portal kodlama biçiminin nasıl seç adımları gösterilmektedir.

Blob depolama uç nokta kodlaması.

IoT Hub, toplu iş belirli bir boyuta ulaştığında veya belirli bir süre geçtiğinde iletileri toplu işler ve verileri depolama alanına yazar. IoT Hub varsayılan olarak aşağıdaki dosya adlandırma kuralını kullanır:

{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}

Herhangi bir dosya adlandırma kuralını kullanabilirsiniz, ancak listelenen tüm belirteçleri kullanmanız gerekir. yazılacak veri yoksa IoT Hub boş bir bloba yazar.

Bölüm varsayımlarında bulunmadan tüm blobların veya dosyaların okunmasını sağlamak için blobları veya dosyaları listelemenizi ve sonra bunlar üzerinde yineleme yapmanızı öneririz. Bölüm aralığı, Microsoft tarafından başlatılan bir yük devretme sırasında veya el ile yük devretme IoT Hub değişebilir. Blob listesini listelemek için Blobları Listele API'sini veya dosya listesi için ADLS 2. Nesil API'sini listeleyebilirsiniz . Kılavuz olarak aşağıdaki örne bakın.

public void ListBlobsInContainer(string containerName, string iothub)
{
    var storageAccount = CloudStorageAccount.Parse(this.blobConnectionString);
    var cloudBlobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
    if (cloudBlobContainer.Exists())
    {
        var results = cloudBlobContainer.ListBlobs(prefix: $"{iothub}/");
        foreach (IListBlobItem item in results)
        {
            Console.WriteLine(item.Uri);
        }
    }
}

Azure Data Lake 2. Nesil ile uyumlu bir depolama hesabı oluşturmak için yeni bir V2 depolama hesabı oluşturun ve aşağıdaki görüntüde gösterildiği gibi Gelişmiş sekmesinin Data Lake Storage 2. Nesil bölümünde Hiyerarşik ad alanını etkinleştir'i seçin:

Azure Date Lake 2. Nesil depolama'yı seçin.

Yönlendirme uç noktası olarak Service Bus Kuyrukları ve Service Bus Konuları

IoT Hub uç noktaları olarak kullanılan Service Bus kuyruklarında ve konu başlıklarında Oturumlar veya Yinelenen Algılama etkin olmamalıdır. Bu seçeneklerden biri etkinleştirilirse, uç nokta Azure portal Ulaşılamaz olarak görünür.

Yönlendirme uç noktası olarak Event Hubs

Yerleşik Event Hubs uyumlu uç noktasının dışında, verileri Event Hubs türündeki özel uç noktalara da yönlendirebilirsiniz.

Yönlendirme uç noktası olarak Azure Cosmos DB (önizleme)

Verileri IoT Hub'dan doğrudan Azure Cosmos DB'ye gönderebilirsiniz. Cosmos DB, tam olarak yönetilen bir hiper ölçek çok modelli veritabanı hizmetidir. Düşük gecikme süresi ve yüksek kullanılabilirlik sağlayarak kapsamlı aşağı akış veri analizi gerektiren bağlı çözümler ve üretim gibi senaryolar için harika bir seçimdir.

IoT Hub Cosmos DB'ye JSON (ileti içerik türünde belirtilmişse) veya Base64 kodlu ikili dosya olarak yazmayı destekler. Azure portal aşağıdaki adımları uygulayarak ileti yönlendirme için Cosmos DB uç noktası ayarlayabilirsiniz:

  1. Sağlanan IoT hub'ınıza gidin.

  2. Kaynak menüsünde Hub ayarlarındanİleti yönlendirme'yi seçin.

  3. Çalışma bölmesinde Özel uç noktalar sekmesini seçin, ardından Ekle'yi seçin ve açılan listeden Cosmos DB (önizleme) öğesini seçin.

    Aşağıdaki görüntüde, Azure portal çalışma bölmesindeki uç nokta ekleme seçenekleri gösterilmektedir:

    Cosmos DB uç noktasının nasıl ekleneceğini gösteren ekran görüntüsü.

  4. Uç nokta adı alanına Cosmos DB uç noktanız için bir ad yazın.

  5. Cosmos DB hesabında, seçilebilen Cosmos DB hesapları listesinden mevcut bir Cosmos DB hesabını seçin, ardından sırasıyla Veritabanı ve Koleksiyon'da var olan bir veritabanı ve koleksiyonu seçin.

  6. İletiler için yapay bölüm anahtarı oluştur bölümünde Gerekirse Etkinleştir'i seçin.

    Yüksek ölçekli senaryoları etkili bir şekilde desteklemek için Cosmos DB uç noktası için yapay bölüm anahtarlarını etkinleştirebilirsiniz. Cosmos DB bir hiper ölçek veri deposu olduğundan, ona yazılan tüm veriler/belgeler mantıksal bölümü temsil eden bir alan içermelidir. Her mantıksal bölümün boyutu en fazla 20 GB'tır. Bölüm anahtarı özellik adını Bölüm anahtarı adı bölümünde belirtebilirsiniz. Bölüm anahtarı özellik adı kapsayıcı düzeyinde tanımlanır ve ayarlandıktan sonra değiştirilemez.

    Tahmini veri hacminize göre Bölüm anahtarı şablonunda bir şablon belirterek yapay bölüm anahtarı değerini yapılandırabilirsiniz. Örneğin, üretim senaryolarında mantıksal bölümünüzün bir ay içinde en fazla 20 GB sınırına yaklaşması beklenebilir. Bu durumda yapay bölüm anahtarını cihaz kimliği ve ay birleşimi olarak tanımlayabilirsiniz. Oluşturulan bölüm anahtarı değeri, her yeni Cosmos DB kaydı için bölüm anahtarı özelliğine otomatik olarak eklenir ve her cihaz için her ay mantıksal bölümlerin oluşturulması sağlanır.

  7. Kimlik doğrulama türü bölümünde Cosmos DB uç noktanız için bir kimlik doğrulama türü seçin. Sistem kurulumunuz temelinde veritabanına erişmek için desteklenen kimlik doğrulama türlerinden herhangi birini seçebilirsiniz.

    Dikkat

    Cosmos DB'de kimlik doğrulaması için sistem tarafından atanan yönetilen kimliği kullanıyorsanız, Kimliğe Cosmos DB Yerleşik Veri Katkıda Bulunanı yerleşik rol tanımını atamak için Azure CLI veya Azure PowerShell kullanmanız gerekir. Cosmos DB için rol ataması şu anda Azure portal desteklenmemektedir. Çeşitli roller hakkında daha fazla bilgi için bkz. Azure Cosmos DB için rol tabanlı erişimi yapılandırma. CLI aracılığıyla rol atamayı anlamak için bkz . Azure Cosmos DB SQL rol kaynaklarını yönetme.

  8. Özel uç noktanızın oluşturulmasını tamamlamak için Oluştur'u seçin.

IoT hub'ınız için ileti yolları ve uç noktaları oluşturmak üzere Azure portal kullanma hakkında daha fazla bilgi edinmek için bkz. IoT Hub ile ileti yönlendirme — Azure portal.

Yönlendirilen verileri okuma

Bu öğreticiyi izleyerek bir yol yapılandırabilirsiniz.

Bir uç noktadan gelen iletileri okumayı öğrenmek için aşağıdaki öğreticileri kullanın.

Geri dönüş yolu

Geri dönüş yolu, mevcut yollardan herhangi birinde sorgu koşullarını karşılamayan tüm iletileri Event Hubs ile uyumlu yerleşik uç noktaya (iletiler/olaylar) gönderir. İleti yönlendirme etkinse geri dönüş yolu özelliğini etkinleştirebilirsiniz. Bir yol oluşturulduktan sonra, bu uç noktaya bir yol oluşturulmadığı sürece veriler yerleşik uç noktaya akmayı durdurur. Yerleşik uç noktaya giden yol yoksa ve bir geri dönüş yolu etkinleştirilirse, yalnızca yollardaki sorgu koşullarıyla eşleşmeyen iletiler yerleşik uç noktaya gönderilir. Ayrıca, tüm mevcut yollar silinirse, yerleşik uç noktadaki tüm verileri almak için geri dönüş yolu özelliğinin etkinleştirilmesi gerekir.

geri dönüş yolunu Azure portal İleti yönlendirme dikey penceresinden etkinleştirebilir veya devre dışı bırakabilirsiniz. Geri dönüş yolu için özel bir uç nokta kullanmak üzere FallbackRouteProperties için Azure Resource Manager de kullanabilirsiniz.

Telemetri dışı olaylar

İleti yönlendirme, cihaz telemetrisine ek olarak aşağıdakiler de dahil olmak üzere telemetri dışı olayların gönderilmesini de sağlar:

  • Cihaz ikizi değişiklik olayları
  • Cihaz yaşam döngüsü olayları
  • Cihaz işi yaşam döngüsü olayları
  • Dijital ikiz değişiklik olayları
  • Cihaz bağlantı durumu olayları
  • MQTT aracı iletileri

Örneğin, veri kaynağı Cihaz İkizi Değişiklik Olayları olarak ayarlanmış bir yol oluşturulursa, IoT Hub cihaz ikizindeki değişikliği içeren uç noktaya iletiler gönderir. Benzer şekilde, veri kaynağı Cihaz Yaşam Döngüsü Olayları olarak ayarlanmış bir yol oluşturulursa IoT Hub cihazın veya modülün silindiğini veya oluşturulduğunu belirten bir ileti gönderir. Cihaz yaşam döngüsü olayları hakkında daha fazla bilgi için bkz . Cihaz ve modül yaşam döngüsü bildirimleri. Azure IoT Tak Çalıştır kullanırken, geliştirici veri kaynağı Dijital İkiz Değişiklik Olayları olarak ayarlanmış yollar oluşturabilir ve IoT Hub bir dijital ikiz özelliği ayarlandığında veya değiştirildiğinde, dijital ikiz değiştirildiğinde veya temel alınan cihaz ikizi için bir değişiklik olayı gerçekleştiğinde iletiler gönderir. Son olarak, veri kaynağı Cihaz Bağlantı Durumu Olayları olarak ayarlanmış bir yol oluşturulursa, IoT Hub cihazın bağlı olup olmadığını veya bağlantısının kesildiğini belirten bir ileti gönderir.

IoT Hub ayrıca bu olaylara dayalı gerçek zamanlı tümleştirmeleri ve iş akışlarının otomasyonunu desteklemek üzere cihaz olaylarını yayımlamak için Azure Event Grid ile tümleşir. Senaryonuz için en uygun olan seçeneği öğrenmek için ileti yönlendirme ve Event Grid arasındaki önemli farklara bakın.

Cihaz bağlantı durumu olayları için sınırlamalar

Cihaz bağlantı durumu olayları, MQTT veya AMQP protokolü kullanılarak ya da WebSockets üzerinden bu protokollerden birini kullanarak bağlanan cihazlar için kullanılabilir. Yalnızca HTTPS ile yapılan istekler cihaz bağlantı durumu bildirimlerini tetiklemez. IoT Hub cihaz bağlantı durumu olaylarını göndermeye başlayabilmesi için, bir bağlantı açıldıktan sonra cihazın buluttan cihaza alma iletisi işlemini veya cihazdan buluta telemetri gönderme işlemini çağırması gerekir. Azure IoT SDK'ları dışında, MQTT'de bu işlemler uygun mesajlaşma konularındaki ABONE OL veya YAYIMLA işlemlerine eşit olur. AMQP üzerinden bu işlemler , uygun bağlantı yollarına bir ileti eklemeye veya aktarmaya eşit olur.

IoT Hub, her bir cihazın bağlanıp bağlantısını kesmeyi raporlamaz, bunun yerine düzenli olarak 60 saniyelik anlık görüntüde alınan geçerli bağlantı durumunu yayımlar. Aynı bağlantı durumu olayının farklı sıra numaralarıyla alınması veya farklı bağlantı durumu olaylarının her ikisi de 60 saniyelik pencere sırasında cihaz bağlantı durumunda bir değişiklik olduğu anlamına gelir.

Test yolları

Yeni bir yol oluşturduğunuzda veya mevcut bir yolu düzenlediğinizde, yol sorgusunu örnek bir iletiyle test etmelisiniz. Tek tek yolları test edebilir veya tüm yolları aynı anda test edebilirsiniz ve test sırasında uç noktalara hiçbir ileti yönlendirilmemiştir. test için Azure portal, Azure Resource Manager, Azure PowerShell ve Azure CLI kullanılabilir. Sonuçlar, örnek iletinin sorguyla eşleşip eşleşmediğini ya da örnek ileti veya sorgu söz dizimi yanlış olduğundan testin çalıştırılıp çalıştırılamayacağını belirlemeye yardımcı olur. Daha fazla bilgi edinmek için bkz . Test Yolu ve Tüm Yolları Test Etme.

Gecikme süresi

Yerleşik uç noktaları kullanarak cihazdan buluta telemetri iletilerini yönlendirdiğinizde, ilk yol oluşturulduktan sonra uçtan uca gecikme süresinde küçük bir artış olur.

Çoğu durumda gecikme süresindeki ortalama artış 500 milisaniyeden kısadır. Ancak, karşılaştığınız gecikme süresi IoT hub'ınızın katmanına ve çözüm mimarinize bağlı olarak değişebilir ve daha yüksek olabilir. İletiler/olaylar için Yönlendirme: ileti gecikme süresi veya d2c.endpoints.latency.builtIn.events IoT Hub ölçümlerini kullanarak gecikme süresini izleyebilirsiniz. İlk yoldan sonra herhangi bir yol oluşturulması veya silinmesi, uçtan uca gecikme süresini etkilemez.

İzleme ve sorun giderme

IoT Hub, hub'ınızın ve gönderilen iletilerinizin durumuna genel bir bakış sağlamak için yönlendirme ve uç noktalarla ilgili çeşitli ölçümler sağlar. İşlev kategorisine göre ayrılmış tüm IoT Hub ölçümlerinin listesi için İzleme Azure IoT Hub veri başvurusununÖlçümler bölümüne bakın. IoT Hub’da yönlendirme sorgusunun değerlendirilmesi sırasında ortaya çıkan hataları ve uç nokta durumunu IoT Hub kaynak günlüklerinin yollar kategorisinden takip edebilirsiniz. ölçümleri ve kaynak günlüklerini IoT Hub kullanma hakkında daha fazla bilgi edinmek için bkz. İzleme Azure IoT Hub.

Uç noktaların sistemdurumunu almak için REST API Uç Nokta Durumunu Al'ı kullanabilirsiniz.

Daha fazla ayrıntıya ulaşmak ve yönlendirme sorunlarını giderme konusunda destek almak için bkz. Yönlendirme sorunlarını giderme kılavuzu.

Sonraki adımlar