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.

Not

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ünüz için doğru IoT Hub katmanını seçme.

IoT Hub, akış mesajlaşma düzeni kullanarak cihazdan buluta mesajlaşmayı uygular. IoT Hub'ın cihazdan buluta iletileri, hizmetten birden çok okuyucunun okuyabileceği yüksek hacimli olaylar geçtiği için Event Hubs olaylarına service Bus iletilerinden daha çok benzer.

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, ayrıntılar için MQTT protokol kılavuzuna ve AMQP protokol kılavuzu geliştirici kılavuzlarına bakın.

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

  • uygulama özelliklerine giren bilgilerle iletileri damgalayabilirsiniz. Daha fazla bilgi için bkz . İleti zenginleştirmeleri.

Not

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

Özellik Açıklama Kullanıcı Ayarlanabilir mi? Yönlendirme sorgusu için
anahtar sözcük
ileti kimliği İ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 karakterlerden - : . + % _ # * ? ! ( ) , = @ ; $ 'oluşan büyük/küçük harfe duyarlı dize (en fazla 128 karakter uzunluğunda). Yes messageId
iothub-enqueuedtime Cihazdan Buluta iletisinin IoT Hub tarafından alındığı tarih ve saat. Hayır enqueuedTime
kullanıcı kimliği İletilerin kaynağını belirtmek için kullanılan kimlik. Yes userId
ıothub-bağlantı-cihaz kimliği Cihazdan buluta iletilerde IoT Hub tarafından ayarlanan bir kimlik. İletiyi gönderen cihazın deviceId değerini içerir. Hayır 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. Hayır 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. Hayır 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. Hayır connectionAuthMethod
iothub-app-iothub-creation-time-utc Bir toplu işlemde veri gönderirken cihazın olay oluşturma süresi 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. Hayır $dt-dataschema
dt-subject Cihazdan buluta iletileri gönderen bileşenin adı. Yes $dt konu

Cihazdan buluta iletilerin uygulama özellikleri

Uygulama özelliklerinin yaygın kullanımlarından biri, iletinin cihaz tarafından ne zaman gönderildiğini iothub-creation-time-utc kaydetmek için ö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

Özellik Açıklama Kullanıcı Ayarlanabilir mi?
ileti kimliği İ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 karakterlerden - : . + % _ # * ? ! ( ) , = @ ; $ 'oluşan büyük/küçük harfe duyarlı dize (en fazla 128 karakter uzunluğunda). Yes
sıra numarası IoT Hub tarafından her buluttan cihaza iletiye atanan bir sayı (cihaz kuyruğu başına benzersiz). Hayır
kullanıcısı Buluttan Cihaza iletilerinde belirtilen hedef. Hayır
mutlak süre sonu-zamanı İletinin sona erme tarihi ve saati. Yes
correlation-id İstek-yanıt desenlerinde genellikle isteğin MessageId değerini içeren bir yanıt iletisindeki dize özelliği. Yes
kullanıcı kimliği İletilerin kaynağını belirtmek için kullanılan kimlik. ioT Hub tarafından iletiler oluşturulduğunda, kullanıcı kimliği IoT hub adıdır. Yes
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. Yes

Sistem özellik adları

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

Sistem özellik adı Event Hubs Azure Depolama Service Bus Event Grid
İleti Kimliği ileti kimliği messageId MessageId ileti kimliği
Kullanıcı kimliği kullanıcı kimliği userId Kullanıcı Kimliği kullanıcı kimliği
Bağlantı cihazı kimliği ıothub-bağlantı-cihaz kimliği connectionDeviceId ıothub-bağlantı-cihaz kimliği ıothub-bağlantı-cihaz kimliği
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 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-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 | module }",
  "type": "{ symkey | sas | x509 }",
  "issuer": "iothub"
}

Sonraki adımlar