IoT Hub iletilerini oluşturma ve okuma
IoT Hub, protokoller arasında sorunsuz 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. Bunlar hem cihazdan buluta ileti yönlendirmede 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 geçen ve birden çok okuyucu tarafından okunabilen çok sayıda olay olduğu için Event Hubsolaylarına service Busiletilerinden daha çok 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 iletiler 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'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.
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ö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 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.
İleti 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-8
ayarlamanız gerekir.
Geçerli, yönlendirilebilir bir 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 |
---|---|---|---|
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 karakter + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''} 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. ioT Hub tarafından iletiler oluşturulduğunda olarak ayarlanır {iot hub name} . |
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 |
D2C IoT Hub iletilerinin 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, 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? |
---|---|---|
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 karakter + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''} 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 olarak ayarlanır {iot hub name} . |
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. 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 | 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ı.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin