Vytvoření a čtení zpráv IoT Hubu

Pro podporu bezproblémové interoperability napříč protokoly ioT Hub definuje společnou sadu funkcí zasílání zpráv, které jsou k dispozici ve všech protokolech přístupných zařízením. Můžete je použít ve směrování zpráv typu zařízení-cloud i ve zprávách typu cloud-zařízení.

Poznámka:

Některé funkce uvedené v tomto článku, jako je zasílání zpráv z cloudu do zařízení, dvojčata zařízení a správa zařízení, jsou k dispozici ve službě IoT Hub pouze na úrovni Standard. Další informace o úrovních Služby IoT Hub úrovně Basic a Standard/Free najdete v tématu Volba správné úrovně IoT Hubu pro vaše řešení.

IoT Hub implementuje zasílání zpráv typu zařízení-cloud pomocí vzoru streamování zpráv. Zprávy ioT Hubu typu zařízení-cloud jsou spíše podobné událostem služby Event Hubsnež zprávy služby Service Busv tom, že existuje velký objem událostí procházejících službou, kterou může číst více čtenářů.

Zpráva ioT Hubu se skládá z:

  • Předem stanovená sada systémových vlastností , jak je uvedeno níže.

  • Sada vlastností aplikace. Slovník vlastností řetězce, ke kterým může aplikace definovat a přistupovat, aniž by bylo nutné deserializovat text zprávy. IoT Hub tyto vlastnosti nikdy neupravuje.

  • Text zprávy, který může být libovolný typ dat.

Každý protokol zařízení implementuje vlastnosti nastavení různými způsoby. Podrobnosti najdete v souvisejících příručkách pro vývojáře MQTT a AMQP .

Názvy a hodnoty vlastností můžou obsahovat pouze alfanumerické znaky ASCII a navíc {'!', '#', '$', '%, '&', ''', '*', '+', '-', '.', '^', '_', '`', '|', '~'} při odesílání zpráv typu zařízení-cloud pomocí protokolu HTTPS nebo odesílání zpráv typu cloud-zařízení.

Zasílání zpráv ze zařízení do cloudu se službou IoT Hub má následující charakteristiky:

  • Zprávy typu zařízení-cloud jsou trvalé a uchovávají se ve výchozím koncovém bodu zpráv a událostí služby IoT Hub po dobu až sedmi dnů.

  • Zprávy typu zařízení-cloud můžou být maximálně 256 kB a dají se seskupit do dávek za účelem optimalizace odesílání. Dávky můžou mít maximálně 256 kB.

  • IoT Hub neumožňuje libovolné dělení. Zprávy typu zařízení-cloud jsou rozdělené na oddíly na základě jejich původního ID zařízení.

  • Jak je vysvětleno v tématu Řízení přístupu ke službě IoT Hub, Služba IoT Hub umožňuje ověřování podle zařízení a řízení přístupu.

  • Zprávy můžete razítekovat informacemi, které přejdou do vlastností aplikace. Další informace najdete v článku o obohacení zpráv.

Další informace o kódování a dekódování zpráv odesílaných pomocí různých protokolů najdete v tématu Sady SDK Azure IoT.

Poznámka:

Každý protokol IoT Hubu poskytuje vlastnost typu obsahu zprávy, která se respektuje při směrování dat do vlastních koncových bodů. Pokud chcete, aby data správně zpracovala v cíli (například JSON, který se považuje za parsovatelný řetězec místo binárních dat kódovaných v base64), musíte pro zprávu zadat odpovídající typ obsahu a znakovou sadu.

Pokud chcete použít text zprávy ve směrovacím dotazu služby IoT Hub, musíte pro zprávu zadat platný objekt JSON a nastavit vlastnost typu obsahu zprávy na application/json;charset=utf-8hodnotu .

Platný směrovatelný text zprávy může vypadat takto:

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

Vlastnosti systému zpráv IoT Hubu D2C

Vlastnost Popis Nastavitelné uživatelem? Klíčové slovo pro
dotaz směrování
message-id Identifikátor uživatelem nastavený pro zprávu použitou pro vzory žádosti a odpovědi. Formát: Řetězec rozlišující velká a malá písmena (o délce až 128 znaků) 7bitové alfanumerické znaky ASCII + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''}. Ano Messageid
iothub-enqueuedtime Služba IoT Hub přijala zprávu typu zařízení-cloud a čas. No enqueuedTime
ID uživatele ID použité k určení původu zpráv. Když ioT Hub vygeneruje zprávy, nastaví se na {iot hub name}hodnotu . Ano userId
iothub-connection-device-id ID nastavené službou IoT Hub na zprávách typu zařízení-cloud Obsahuje ID zařízení , které zprávu odeslalo. No connectionDeviceId
iothub-connection-module-id ID nastavené službou IoT Hub na zprávách typu zařízení-cloud Obsahuje id modulu zařízení, které zprávu odeslalo. No connectionModuleId
iothub-connection-auth-generation-id ID nastavené službou IoT Hub na zprávách typu zařízení-cloud Obsahuje connectionDeviceGenerationId (podle vlastností identity zařízení) zařízení, které zprávu odeslalo. No connectionDeviceGenerationId
iothub-connection-auth-method Metoda ověřování nastavená službou IoT Hub ve zprávách typu zařízení-cloud Tato vlastnost obsahuje informace o metodě ověřování použité k ověření zařízení odesílajícího zprávu. No connectionAuthMethod
iothub-app-iothub-creation-time-utc Umožňuje zařízení odesílat čas vytvoření události při odesílání dat v dávce. Ano creation-time-utc
iothub-creation-time-utc Umožňuje zařízení odesílat čas vytvoření události při odesílání jedné zprávy najednou. Ano creation-time-utc
dt-dataschema Tato hodnota je nastavena službou IoT Hub na zprávách typu zařízení-cloud. Obsahuje ID modelu zařízení nastavené v připojení zařízení. No $dt-dataschema
dt-subject Název komponenty, která odesílá zprávy typu zařízení-cloud. Ano předmět $dt

Vlastnosti aplikace zpráv IoT Hubu D2C

Běžným použitím vlastností aplikace je odeslání časového razítka ze zařízení pomocí iothub-creation-time-utc vlastnosti k zaznamenání, kdy zařízení zprávu odeslalo. Formát tohoto časového razítka musí být UTC bez informací o časovém pásmu. Je například 2021-04-21T11:30:16Z platný, 2021-04-21T11:30:16-07:00 je neplatný:

{
  "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":{}
}

Systémové vlastnosti zpráv C2D IoT Hubu

Vlastnost Popis Nastavitelné uživatelem?
message-id Identifikátor uživatelem nastavený pro zprávu použitou pro vzory žádosti a odpovědi. Formát: Řetězec rozlišující velká a malá písmena (o délce až 128 znaků) 7bitové alfanumerické znaky ASCII + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''}. Ano
pořadové číslo Číslo (jedinečné na frontu zařízení) přiřazené službou IoT Hub ke každé zprávě typu cloud-zařízení No
na Cíl zadaný ve zprávách typu Cloud-zařízení . No
absolutní doba vypršení platnosti Datum a čas vypršení platnosti zprávy Ano
ID korelace Vlastnost řetězce ve zprávě odpovědi, která obvykle obsahuje MessageId požadavku ve vzorech odpovědí na požadavek. Ano
ID uživatele ID použité k určení původu zpráv. Když ioT Hub vygeneruje zprávy, nastaví se na {iot hub name}hodnotu . Ano
iothub-ack Generátor zpráv zpětné vazby. Tato vlastnost se používá ve zprávách typu cloud-zařízení k vyžádání ioT Hubu, aby vygenerovala zprávy zpětné vazby v důsledku spotřeby zprávy zařízením. Možné hodnoty: žádné (výchozí): nevygeneruje se žádná zpráva zpětné vazby, pozitivní: pokud byla zpráva dokončena, negativní: obdrží zprávu zpětné vazby, pokud vypršela platnost zprávy (nebo byl dosažen maximální počet doručení), aniž by zařízení dokončilo, nebo úplné: kladné i záporné. Ano

Názvy systémových vlastností

Názvy systémových vlastností se liší v závislosti na koncovém bodu, do kterého se zprávy směrují. Podrobnosti o těchto názvech najdete v následující tabulce.

Název systémové vlastnosti Event Hubs Azure Storage Service Bus Event Grid
ID zprávy message-id Messageid Messageid message-id
ID uživatele ID uživatele userId ID uživatele ID uživatele
ID zařízení Připojení ion iothub-connection-device-id connectionDeviceId iothub-connection-device-id iothub-connection-device-id
ID modulu Připojení ion iothub-connection-module-id connectionModuleId iothub-connection-module-id iothub-connection-module-id
ID generování ověřování Připojení ion iothub-connection-auth-generation-id connectionDeviceGenerationId iothub-connection-auth-generation-id iothub-connection-auth-generation-id
metoda ověřování Připojení ion iothub-connection-auth-method connectionAuthMethod iothub-connection-auth-method iothub-connection-auth-method
Contenttype content-type Contenttype Contenttype iothub-content-type
contentEncoding kódování obsahu contentEncoding ContentEncoding iothub-content-encoding
iothub-enqueuedtime iothub-enqueuedtime enqueuedTime iothub-enqueuedtime
CorrelationId ID korelace correlationId CorrelationId ID korelace
dt-dataschema dt-dataschema dt-dataschema dt-dataschema dt-dataschema
dt-subject dt-subject dt-subject dt-subject dt-subject

Velikost zprávy

IoT Hub měří velikost zpráv bez ohledu na skutečnou datovou část, která je nezávislá na protokolu. Velikost v bajtech se vypočítá jako součet následujících hodnot:

  • Velikost těla v bajtech.
  • Velikost v bajtech všech hodnot vlastností systému zpráv.
  • Velikost v bajtech všech názvů a hodnot uživatelských vlastností.

Názvy a hodnoty vlastností jsou omezeny na znaky ASCII, takže délka řetězců se rovná velikosti v bajtech.

Vlastnosti falšování identity

Aby se zabránilo falšování identity zařízení ve zprávách zařízení-cloud, IoT Hub označí všechny zprávy následujícími vlastnostmi:

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

První dva obsahují id zařízení a generationId původního zařízení podle vlastností identity zařízení.

Vlastnost iothub-connection-auth-method obsahuje serializovaný objekt JSON s následujícími vlastnostmi:

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

Další kroky

  • Informace o omezeních velikosti zpráv ve službě IoT Hub najdete v tématu Kvóty a omezování služby IoT Hub.
  • Informace o vytváření a čtení zpráv IoT Hubu v různých programovacích jazycích najdete v rychlých startech.
  • Další informace o struktuře událostí mimo telemetrii generovaných službou IoT Hub najdete v tématu Schémata událostí mimo telemetrii služby IoT Hub.