Aracılığıyla paylaş


IoT Hub iletilerini oluşturma ve okuma

IoT Hub, protokoller arasında birlikte çalışabilirliği desteklemek için cihaza yönelik tüm protokollerde kullanılabilen yaygın bir mesajlaşma özellikleri kümesi tanımlar. Bu özellikler hem cihazdan buluta iletilerde hem de buluttan cihaza iletilerde kullanılabilir.

Uyarı

Buluttan cihaza mesajlaşma, cihaz ikizleri ve cihaz yönetimi gibi bu makalede bahsedilen özelliklerden bazıları 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 için doğru IoT Hub katmanını ve boyutunu seçme.

IoT Hub, akış mesajlaşma düzeni kullanarak cihazdan buluta mesajlaşmayı uygular. IoT Hub'ın cihazdan buluta iletileri, Service Busiletilerine kıyasla Event Hubsolaylarına benzer; bu nedenle hizmetten birden çok okuyucunun okuyabileceği yüksek hacimli olaylar geçer.

IoT Hub iletisi şunlardan oluşur:

  • Bu makalenin devamında açıklandığı gibi önceden belirlenmiş bir sistem özellikleri kümesi.

  • Uygulama özellikleri kümesi. İleti gövdesinin seri durumdan çıkarılmasına gerek kalmadan uygulamanın tanımlayıp erişebileceği dize özellikleri sözlüğü. IoT Hub bu özellikleri hiçbir zaman değiştirmez.

  • Herhangi bir veri türü olabilecek bir ileti gövdesi.

Her cihaz protokolü, ayar özelliklerini farklı şekillerde uygular. Daha fazla bilgi için bkz . MQTT protokolunu kullanarak IoT hub'ı ile iletişim kurma ve AMQP Protokolü kullanarak IoT hub'ınız ile iletişim kurma.

HTTPS protokolünü kullanarak cihazdan buluta iletiler gönderdiğinizde veya buluttan cihaza iletiler gönderdiğinizde, özellik adları ve değerleri yalnızca ASCII alfasayısal karakterler ve artı ! # $ % & ' * + - . ^ _ ` | ~ içerebilir.

IoT Hub ile cihazdan buluta mesajlaşma aşağıdaki özelliklere sahiptir:

  • Cihazdan buluta iletiler dayanıklıdır ve yedi güne kadar IoT hub'ında varsayılan iletiler/olaylar uç noktasında tutulur.

  • Cihazdan buluta iletiler en fazla 256 KB olabilir ve göndermeleri iyileştirmek için toplu olarak gruplandırılabilir. Toplu işlemler en fazla 256 KB olabilir.

  • IoT Hub rastgele bölümlemeye izin vermez. Cihazdan buluta iletiler, kaynak deviceId'lerine göre bölümlenir.

  • IoT Hub'a erişimi Microsoft Entra ID kullanarak denetleme bölümünde açıklandığı gibi, IoT Hub cihaz başına kimlik doğrulamasını ve erişim denetimini etkinleştirir.

  • uygulama özelliklerine giren bilgilerle iletileri damgalayabilirsiniz. Daha fazla bilgi için bkz. Cihazdan buluta IoT Hub iletileri için ileti zenginleştirmeleri.

Uyarı

Her IoT Hub protokolü, verileri özel uç noktalara yönlendirme sırasında dikkate alınan bir ileti içerik türü özelliği sağlar. Verilerinizin hedefte düzgün bir şekilde işlenmesini sağlamak için (örneğin, JSON, Base64 ile kodlanmış ikili veriler yerine ayrıştırılabilir bir dize olarak ele alınıyor), ileti için uygun içerik türünü ve karakter kümesini sağlayın.

İletinizin gövdesini bir IoT Hub yönlendirme sorgusunda kullanmak için, ileti için geçerli bir JSON nesnesi sağlayın ve iletinin içerik türü özelliğini olarak application/json;charset=utf-8ayarlayın.

Aşağıdaki örnekte geçerli, yönlendirilebilir bir ileti gövdesi gösterilmektedir:

{
    "timestamp": "2022-02-08T20:10:46Z",
    "tag_name": "spindle_speed",
    "tag_value": 100
}

Cihazdan buluta iletilerin sistem özellikleri

Mülk Açıklama Kullanıcı Ayarlanabilir mi? Yönlendirme sorgusu için
anahtar sözcük
ileti kimliği İstek-yanıt şablonları için kullanılan iletiye yönelik kullanıcı tarafından ayarlanabilir bir tanımlayıcı. Biçim: Büyük/küçük harfe duyarlı, en fazla 128 karakter uzunluğunda olan bir ASCII 7 bit alfanümerik karakterler dizisi ve - : . + % _ # * ? ! ( ) , = @ ; $ '. Evet mesajKimliği
iothub-enqueuedtime IoT Hub'ın cihazdan buluta iletisini aldığı tarih ve saat. Hayır enqueuedTime
kullanıcı kimliği İletilerin kaynağını belirtmek için kullanılan kimlik. Evet userId (kullanıcı kimliği)
iothub-bağlantı-cihaz-id Cihazdan buluta iletilerde IoT Hub tarafından ayarlanan bir kimlik. İletiyi gönderen cihazın deviceId değerini içerir. Hayır bağlantıCihazKimliği
iothub-connection-module-id (IoT Hub bağlantı modül kimliği) Cihazdan buluta iletilerde IoT Hub tarafından ayarlanan bir kimlik. İletiyi gönderen cihazın moduleId değerini içerir. Hayır bağlantıModülüId
iothub-bağlantı-dogrulama-üretim-id Cihazdan buluta iletilerde IoT Hub tarafından ayarlanan bir kimlik. İletiyi gönderen cihazın connectionDeviceGenerationId değerini (Cihaz kimliği özelliklerine göre) içerir. Hayır bağlantıCihazNesilId
iothub-bağlantı-kimlik-doğrulama-yöntemi Cihazdan buluta iletilerde IoT Hub tarafından ayarlanan bir kimlik doğrulama yöntemi. Bu özellik, iletiyi gönderen cihazın kimliğini doğrulamak için kullanılan kimlik doğrulama yöntemi hakkında bilgi içerir. Hayır bağlantıKimlikDoğrulamaYöntemi
iothub-app-iothub-oluşturulma-zamanı-utc Bir toplu işlemde veri gönderirken cihazın olay oluşturma süresi göndermesine izin verir. Evet oluşturma-zamanı-utc
iothub-creation-time-utc (iothub oluşturma zamanı UTC) Cihazın bir kerede bir ileti gönderirken olay oluşturma zamanı göndermesine izin verir. Evet oluşturma-zamanı-utc
dt-veri şeması IoT hub'ı bu değeri cihazdan buluta iletilerde ayarlar. Cihaz bağlantısında ayarlanan cihaz modeli kimliğini içerir. Hayır $dt-dataschema
konu başlığı Cihazdan buluta iletileri gönderen bileşenin adı. Evet $dt-konu

Cihazdan buluta iletilerin uygulama özellikleri

Uygulama özelliklerinin yaygın kullanımlarından biri, cihazın iletiyi gönderdiği zamanı kaydetmek için iothub-creation-time-utc özelliğini kullanarak cihazdan bir zaman damgası göndermektir. Bu zaman damgasının biçimi saat dilimi bilgisi olmadan UTC olmalıdır. Örneğin, 2021-04-21T11:30:16Z geçerli, ancak 2021-04-21T11:30:16-07:00 geçersiz.

{
  "applicationId":"00001111-aaaa-2222-bbbb-3333cccc4444",
  "messageSource":"telemetry",
  "deviceId":"sample-device-01",
  "schema":"default@v1",
  "templateId":"urn:modelDefinition:mkuyqxzgea:e14m1ukpn",
  "enqueuedTime":"2021-01-29T16:45:39.143Z",
  "telemetry":{
    "temperature":8.341033560421833
  },
  "messageProperties":{
    "iothub-creation-time-utc":"2021-01-29T16:45:39.021Z"
  },
  "enrichments":{}
}

Buluttan cihaza iletilerin sistem özellikleri

Mülk Açıklama Kullanıcı Ayarlanabilir mi?
ileti kimliği İstek-yanıt şablonları için kullanılan iletiye yönelik kullanıcı tarafından ayarlanabilir bir tanımlayıcı. Biçim: Büyük/küçük harfe duyarlı, en fazla 128 karakter uzunluğunda olan bir ASCII 7 bit alfanümerik karakterler dizisi ve - : . + % _ # * ? ! ( ) , = @ ; $ '. Evet
sıra numarası IoT Hub tarafından her bir bulut-cihaz mesajına atanan ve cihaz kuyruğu başına benzersiz olan bir sayı. Hayır
için Buluttan cihaza iletilerde belirtilen hedef. Hayır
mutlak süre sonu tarihi İletinin sona erme tarihi ve saati. Evet
korelasyon kimliği İstek-yanıt desenlerinde genellikle isteğin MessageId değerini içeren bir yanıt iletisindeki dize özelliği. Evet
kullanıcı kimliği İletilerin kaynağını belirtmek için kullanılan kimlik. IoT Hub ileti oluşturduğunda, kullanıcı kimliği IoT hub adıdır. Evet
iothub-ack Geri bildirim iletisi oluşturucu. Bu özellik, cihaz tarafından iletinin kullanılması sonucunda IoT Hub'dan geri bildirim iletileri oluşturmasını istemek için buluttan cihaza iletilerde kullanılır. Olası değerler: hiçbiri (varsayılan): hiçbir geri bildirim iletisi oluşturulmaz, pozitif: İleti tamamlandıysa geri bildirim iletisi alın, negatif: cihaz tarafından tamamlanmadan iletinin süresi dolduysa (veya teslim sayısı üst sınırına ulaşıldıysa) geri bildirim iletisi alın veya hem pozitif hem de negatif. Evet

Sistem özellik adları

Sistem özellik adları, iletilerin yönlendirildiği uç noktaya göre değişir.

Sistem özellik adı Event Hubs Azure Depolama Hizmet Otobüsü Etkinlik Ağı
İleti Kimliği ileti kimliği mesajKimliği MesajKimliği ileti kimliği
Kullanıcı kimliği kullanıcı kimliği userId (kullanıcı kimliği) Kullanıcı Kimliği kullanıcı kimliği
Bağlantı cihazı kimliği iothub-bağlantı-cihaz-id bağlantıCihazKimliği iothub-bağlantı-cihaz-id iothub-bağlantı-cihaz-id
Bağlantı modülü kimliği iothub-connection-module-id (IoT Hub bağlantı modül kimliği) bağlantıModülüId iothub-connection-module-id (IoT Hub bağlantı modül kimliği) iothub-connection-module-id (IoT Hub bağlantı modül kimliği)
Bağlantı kimlik doğrulama oluşturma kimliği iothub-connection-auth-generation-id bağlantıCihazNesilId iothub-connection-auth-generation-id iothub-connection-auth-generation-id
Bağlantı kimlik doğrulama yöntemi iothub-bağlantı-kimlik-doğrulama-yöntemi bağlantıKimlikDoğrulamaYöntemi iothub-bağlantı-kimlik-doğrulama-yöntemi iothub-bağlantı-kimlik-doğrulama-yöntemi
içerikTürü içerik türü içerikTürü İçerik Türü iothub-içerik-tipi
içerik kodlaması içerik kodlama içerik kodlaması İçerik Kodlaması iothub-içerik-kodlama
iothub-enqueuedtime iothub-enqueuedtime enqueuedTime Yok iothub-enqueuedtime
CorrelationId korelasyon kimliği correlationId CorrelationId korelasyon kimliği
dt-veri şeması dt-veri şeması dt-veri şeması dt-veri şeması dt-veri şeması
dt-subject dt-subject dt-subject dt-subject Konu Başlığı

İleti boyutu

IoT Hub, ileti boyutunu yalnızca gerçek yükü dikkate alarak protokolden bağımsız bir şekilde ölçer. Bayt cinsinden boyut, aşağıdaki değerlerin toplamı olarak hesaplanır:

  • Bayt cinsinden veri boyutu.
  • İleti sistemi özelliklerinin tüm değerlerinin bayt cinsinden boyutu.
  • Tüm kullanıcı özellik adlarının ve değerlerinin bayt cinsinden boyutu.

Özellik adları ve değerleri ASCII karakterlerle sınırlıdır, bu nedenle dizelerin uzunluğu bayt cinsinden boyuta eşit olur.

Kimlik sahtekarlığına karşı koruma özellikleri

Cihazdan buluta iletilerde cihaz sahtekarlığına neden olmaması için IoT Hub tüm iletileri aşağıdaki özelliklerle damgalar:

  • iothub-connection-device-id
  • iothub-connection-auth-generation-id
  • iothub-bağlantısı-kimlik-doğrulama-yöntemi

İlk ikisi, Cihaz kimliği özelliklerine göre kaynak cihazın deviceId ve generationId değerini içerir.

iothub-connection-auth-method özelliği, aşağıdaki özelliklere sahip bir JSON serileştirilmiş nesnesi içerir:

{
  "scope": "{ hub | device | module }",
  "type": "{ symkey | sas | x509 }",
  "issuer": "iothub"
}

Sonraki adımlar