IoT Hub iletilerini oluşturma ve okuma

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

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 IoT Hub katmanları hakkında daha fazla bilgi için bkz. Doğru IoT Hub katmanını seçme.

IoT Hub bir akış mesajlaşma düzeni kullanarak cihazdan buluta mesajlaşmayı uygular. IoT Hub cihazdan buluta iletileri, hizmetten geçen ve birden çok okuyucu tarafından okunabilen çok sayıda olay olması nedeniyle Service Busiletilerindendaha çokEvent Hubs olaylarına benzer.

IoT Hub iletisi şunlardan oluşur:

  • Aşağıda listelendiği 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. Ayrıntılar için lütfen ilgili MQTT ve AMQP geliştirici kılavuzlarına bakın.

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

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 erişimi denetleme bölümünde açıklandığı gibi IoT Hub cihaz başına kimlik doğrulaması ve erişim denetimini etkinleştirir.

  • uygulama özelliklerine giren bilgilerle iletileri damgalayabilirsiniz. Daha fazla bilgi için lütfen ileti zenginleştirmeleri konusuna bakın.

Farklı protokoller kullanılarak gönderilen iletileri kodlama ve çözme hakkında daha fazla bilgi için bkz. Azure IoT SDK'ları.

Not

Her IoT Hub protokolü, verileri özel uç noktalara yönlendirirken 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 kodlanmış ikili verileri 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ğlamanız gerekir.

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

Geçerli, yönlendirilebilir ileti gövdesi aşağıdaki gibi görünebilir:

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

D2C IoT Hub iletilerinin Sistem Özellikleri

Özellik Açıklama Kullanıcı Ayarlanabilir mi? Yönlendirme sorgusu için
anahtar sözcük
message-id İstek-yanıt desenleri için kullanılan ileti için kullanıcı tarafından ayarlanabilir tanımlayıcı. Biçim: ASCII 7 bit alfasayısal karakter + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''}büyük/küçük harfe duyarlı bir dize (en fazla 128 karakter uzunluğunda). Yes messageId
iothub-enqueuedtime Cihazdan Buluta iletisinin IoT Hub tarafından alındığı tarih ve saat. No enqueuedTime
user-id İletilerin kaynağını belirtmek için kullanılan kimlik. İletiler IoT Hub tarafından oluşturulduğunda olarak ayarlanır{iot hub name}. Yes userId
iothub-connection-device-id Cihazdan buluta iletilerde IoT Hub tarafından ayarlanan bir kimlik. İletiyi gönderen cihazın deviceId değerini içerir. No connectionDeviceId
iothub-connection-module-id Cihazdan buluta iletilerde IoT Hub tarafından ayarlanan bir kimlik. İletiyi gönderen cihazın moduleId değerini içerir. No connectionModuleId
iothub-connection-auth-generation-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. No connectionDeviceGenerationId
iothub-connection-auth-method 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. No connectionAuthMethod
iothub-app-iothub-creation-time-utc Bir toplu işlemde veri gönderirken cihazın olay oluşturma zamanı göndermesine izin verir. Yes creation-time-utc
iothub-creation-time-utc Cihazın bir kerede bir ileti gönderirken olay oluşturma zamanı göndermesine izin verir. Yes creation-time-utc
dt-dataschema Bu değer, cihazdan buluta iletilerde IoT hub'ı tarafından ayarlanır. Cihaz bağlantısında ayarlanan cihaz modeli kimliğini içerir. No $dt-dataschema
dt-subject Cihazdan buluta iletileri gönderen bileşenin adı. Yes $dt konu

D2C IoT Hub iletilerinin Uygulama Özellikleri

Uygulama özelliklerinin yaygın bir kullanımı, iletinin cihaz tarafından gönderildiği zamanları kaydetmek için özelliğini kullanarak iothub-creation-time-utc 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, 2021-04-21T11:30:16-07:00 geçersiz:

{
  "applicationId":"5782ed70-b703-4f13-bda3-1f5f0f5c678e",
  "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":{}
}

C2D IoT Hub iletilerinin Sistem Özellikleri

Özellik Açıklama Kullanıcı Ayarlanabilir mi?
message-id İstek-yanıt desenleri için kullanılan ileti için kullanıcı tarafından ayarlanabilir tanımlayıcı. Biçim: ASCII 7 bit alfasayısal karakter + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''}büyük/küçük harfe duyarlı bir dize (en fazla 128 karakter uzunluğunda). Yes
sıra numarası Her buluttan cihaza iletiye IoT Hub tarafından atanan bir sayı (cihaz kuyruğu başına benzersiz). No
kullanıcısı Buluttan Cihaza iletilerinde belirtilen hedef. No
mutlak süre sonu-süresi İletinin sona erme tarihi ve saati. Yes
correlation-id Genellikle istek-yanıt desenlerinde isteğin MessageId değerini içeren bir yanıt iletisindeki dize özelliği. Yes
user-id İletilerin kaynağını belirtmek için kullanılan kimlik. İletiler IoT Hub tarafından oluşturulduğunda olarak ayarlanır{iot hub name}. Yes
iothub-ack Geri bildirim iletisi oluşturucu. Bu özellik, cihazın iletiyi tüketmesi sonucunda geri bildirim iletileri oluşturmak üzere IoT Hub istemek için buluttan cihaza iletilerde kullanılır. Olası değerler: hiçbiri (varsayılan): geri bildirim iletisi oluşturulmaz, pozitif: ileti tamamlandıysa geri bildirim iletisi alın, negatif: cihaz tarafından tamamlanmadan iletinin süresi dolduysa (veya maksimum teslim sayısına ulaşıldıysa) bir geri bildirim iletisi alın veya tam: hem pozitif hem de negatif. Yes

Sistem Özellik Adları

Sistem özellik adları, iletilerin yönlendirildiği uç noktaya göre değişir. Bu adlarla ilgili ayrıntılar için lütfen aşağıdaki tabloya bakın.

Sistem özellik adı Event Hubs Azure Depolama Service Bus Event Grid
İleti Kimliği message-id messageId MessageId message-id
Kullanıcı kimliği user-id userId UserId user-id
Bağlantı cihazı kimliği iothub-connection-device-id connectionDeviceId iothub-connection-device-id iothub-connection-device-id
Bağlantı modülü kimliği iothub-connection-module-id connectionModuleId iothub-connection-module-id iothub-connection-module-id
Bağlantı kimlik doğrulaması oluşturma kimliği iothub-connection-auth-generation-id connectionDeviceGenerationId iothub-connection-auth-generation-id iothub-connection-auth-generation-id
Bağlantı kimlik doğrulama yöntemi iothub-connection-auth-method connectionAuthMethod iothub-connection-auth-method iothub-connection-auth-method
contentType içerik türü contentType ContentType iothub-content-type
contentEncoding içerik kodlama contentEncoding ContentEncoding iothub-content-encoding
iothub-enqueuedtime iothub-enqueuedtime enqueuedTime Yok iothub-enqueuedtime
CorrelationId correlation-id correlationId CorrelationId correlation-id
dt-dataschema dt-dataschema dt-dataschema dt-dataschema dt-dataschema
dt-subject dt-subject dt-subject dt-subject dt-subject

İ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 gövde 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 karakterleriyle sınırlıdır, bu nedenle dizelerin uzunluğu bayt cinsinden boyuta eşittir.

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

Cihazdan buluta iletilerde cihaz kimlik sahtekarlıklarından kaçınmak için IoT Hub tüm iletileri aşağıdaki özelliklere sahip damgalar:

  • iothub-connection-device-id
  • iothub-connection-auth-generation-id
  • iothub-connection-auth-method

İ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 }",
  "type": "{ symkey | sas | x509 }",
  "issuer": "iothub"
}

Sonraki adımlar