Cihazdan buluta IoT Hub iletileri için ileti zenginleştirmeleri

İleti zenginleştirmeleri , bir IoT hub'ının iletileri belirlenen uç noktaya gönderilmeden önce ek bilgilerle damgalama özelliğidir. İleti zenginleştirmelerini kullanmanın bir nedeni, aşağı akış işlemeyi basitleştirmek için kullanılabilecek verileri dahil etmektir. Örneğin, cihaz telemetri iletilerini bir cihaz ikizi etiketiyle zenginleştirmek, müşterilerin bu bilgiler için cihaz ikizi API çağrıları yapma yükünü azaltabilir.

İleti zenginleştirme akışı

İleti zenginleştirmesi üç temel öğeye sahiptir:

  • Zenginleştirme adı veya anahtarı

  • Değer

  • Zenginleştirmenin uygulanması gereken bir veya daha fazla uç nokta .

Anahtar bir dizedir. Bir anahtar yalnızca alfasayısal karakterler veya şu özel karakterleri içerebilir: kısa çizgi (-), alt çizgi (_ ) ve nokta (.).

Değer aşağıdaki örneklerden biri olabilir:

  • Herhangi bir statik dize. Koşullar, mantık, işlemler ve işlevler gibi dinamik değerlere izin verilmez. Örneğin, birkaç müşteri tarafından kullanılan bir SaaS uygulaması geliştirirseniz, her müşteriye bir tanımlayıcı atayabilir ve bu tanımlayıcının uygulamada kullanılabilir olmasını sağlayabilirsiniz. Uygulama çalıştırıldığında, IoT Hub cihaz telemetri iletilerini müşterinin tanımlayıcısıyla damgalayarak iletilerin her müşteri için farklı işlenmesini sağlar.

  • İletiyi gönderen IoT hub'ının adı. Bu değer $iothubname.

  • Cihaz ikizinden gelen bilgiler, örneğin yolu. Örnek olarak $twin.tags.field ve $twin.tags.latitude verilebilir.

    Not

    Şu anda yalnızca $iothubname, $twin.tags, $twin.properties.desired ve $twin.properties.reported, ileti zenginleştirme için desteklenen değişkenlerdir. Ayrıca, zenginleştirmeler için yalnızca ilkel türler desteklenir. İletiler nesne türleriyle zenginleştirilemez.

İleti Zenginleştirmeleri, seçilen uç noktalara gönderilen iletilere uygulama özellikleri olarak eklenir.

Zenginleştirme uygulama

İletiler, aşağıdaki örnekler de dahil olmak üzere IoT Hub ileti yönlendirme tarafından desteklenen herhangi bir veri kaynağından gelebilir:

  • sıcaklık veya basınç gibi cihaz telemetrisi
  • cihaz ikizi değişiklik bildirimleri -- cihaz ikizindeki değişiklikler
  • cihaz oluşturulduğunda veya silindiğinde olduğu gibi cihaz yaşam döngüsü olayları

IoT hub'ının yerleşik uç noktasına giden iletilere veya Azure Blob depolama, Service Bus kuyruğu veya Service Bus konusu gibi özel uç noktalara yönlendirilen iletilere zenginleştirmeler ekleyebilirsiniz.

Ayrıca, önce cihaz telemetri ileti türüyle bir Event Grid aboneliği oluşturarak Event Grid'de yayımlanan iletilere zenginleştirmeler ekleyebilirsiniz. Bu aboneliğe bağlı olarak, Azure IoT Hub telemetri için varsayılan bir yol oluşturacağız. Bu tek yol tüm Event Grid aboneliklerinizi işleyebilir. Ardından, IoT Hub İleti yönlendirme bölümünün İletileri zenginleştir sekmesini kullanarak uç nokta için zenginleştirmeleri yapılandırabilirsiniz. Event Grid kullanarak olaylara tepki verme hakkında bilgi için bkz. IoT Hub'ı ve Event Grid.

Zenginleştirmeler uç nokta başına uygulanır. Belirli bir uç nokta için damgalanacak beş zenginleştirme belirtirseniz, bu uç noktaya giden tüm iletiler aynı beş zenginleştirmeyle damgalanır.

Zenginleştirmeler aşağıdaki yöntemler kullanılarak yapılandırılabilir:

Yöntem Komut
Portal Azure portalİleti zenginleştirmeleri öğreticisine bakın
Azure CLI az iot hub message-enrichment
Azure PowerShell Add-AzIotHubMessageEnrichment

İleti zenginleştirmeleri eklemek, ileti yönlendirmeye gecikme eklemez.

İleti zenginleştirmelerini denemek için ileti zenginleştirmeleri öğreticisine bakın

Sınırlamalar

  • Standart veya temel katmanda bu hub'lar için IoT hub'ı başına en fazla 10 zenginleştirme ekleyebilirsiniz. Ücretsiz katmandaki IoT hub'ları için en fazla 2 zenginleştirme ekleyebilirsiniz.

  • Bazı durumlarda, bir iletiyi cihaz ikizindeki bir etikete veya özelliğe ayarlanmış bir değerle zenginleştiriyorsanız, değer belirtilen cihaz ikizi yolu ile damgalanır. Örneğin, bir zenginleştirme değeri $twin.tags.field olarak ayarlanırsa, iletiler ikizden bu alanın değeri yerine "$twin.tags.field" dizesiyle damgalanır. Bu davranış aşağıdaki durumlarda gerçekleşir:

    • IoT hub'ınız temel katmandadır. Temel katman IoT hub'ları cihaz ikizlerini desteklemez.

    • IoT hub'ınız standart katmandadır, ancak zenginleştirmenin değeri için kullanılan cihaz ikizi yolu mevcut değildir. Örneğin, zenginleştirme değeri $twin.tags.location olarak ayarlanırsa ve cihaz ikizi etiketler altında bir konum özelliğine sahip değilse, ileti "$twin.tags.location" dizesiyle damgalanır.

    • IoT hub'ınız standart katmandadır, ancak zenginleştirmenin değeri için kullanılan cihaz ikizi yolu basit bir özellik yerine bir nesneye çözümleniyor. Örneğin, zenginleştirme değeri $twin.tags.location olarak ayarlanırsa ve etiketler altındaki location özelliği gibi {"building": 43, "room": 503}alt özellikleri içeren bir nesneyse, ileti "$twin.tags.location" dizesiyle damgalanır.

  • Bir cihaz ikizi için Güncelleştirmeler karşılık gelen zenginleştirme değerine yansıtılması beş dakika kadar sürebilir.

  • Zenginleştirmeler de dahil olmak üzere toplam ileti boyutu 256 KB'ı aşamaz. İleti boyutu 256 KB'ı aşarsa IoT hub'ı iletiyi bırakır. İletiler bırakıldığında hataları belirlemek ve hatalarını ayıklamak için IoT Hub ölçümleri kullanabilirsiniz. Örneğin, yönlendirme ölçümlerindeki telemetri iletileri uyumsuz (d2c.telemetry.egress.invalid) ölçümünü izleyebilirsiniz. Daha fazla bilgi için bkz. İzleme IoT Hub.

  • İleti zenginleştirmeleri dijital ikiz değişiklik olayları için geçerli değildir.

  • Modüller, karşılık gelen cihazlarından ikiz etiketlerini devralamaz. Cihaz modüllerinden (örneğin IoT Edge modüllerden) kaynaklanan iletiler için zenginleştirmeler, modül ikizinde ayarlanan ikiz etiketlerini kullanmalıdır.

Fiyatlandırma

İleti zenginleştirmeleri ek ücret ödemeden kullanılabilir. Şu anda IoT hub'ına ileti gönderdiğinizde ücretlendirilirsiniz. İleti birden çok uç noktaya gitse bile bu ileti için yalnızca bir kez ücretlendirilirsiniz.

Sonraki adımlar

İletileri IoT hub'ına yönlendirme hakkında daha fazla bilgi için şu makalelere göz atın: