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-8
ayarlayı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
- IoT Hub'daki ileti boyutu sınırları hakkında bilgi için bkz . IoT Hub kotaları ve azaltma.
- Çeşitli programlama dillerinde IoT Hub iletileri oluşturmayı ve okumayı öğrenmek için Bkz . Hızlı Başlangıçlar.
- IoT Hub tarafından oluşturulan telemetri dışı olayların yapısı hakkında bilgi edinmek için bkz . IoT Hub telemetri dışı olay şemaları.