Vytvoření a čtení zpráv IoT Hubu
Pro podporu interoperability mezi 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. Tyto funkce je možné použít ve zprávách 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 Hubs než zprávy služby Service Bus v 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 vlastností systému, jak je popsáno dále v tomto článku.
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. Další informace najdete v průvodci pro vývojáře v průvodci protokolem MQTT a průvodce protokolem AMQP.
Při odesílání zpráv typu zařízení-cloud pomocí protokolu HTTPS nebo odesílání zpráv typu cloud-zařízení mohou názvy a hodnoty vlastností obsahovat pouze alfanumerické znaky ASCII, plus ! # $ % & ' * + - . ^ _ ` | ~
.
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 tématu rozšiřování zpráv.
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 s kódováním Base64), zadejte odpovídající typ obsahu a znakovou sadu pro zprávu.
Chcete-li použít text zprávy ve směrovacím dotazu služby IoT Hub, zadejte platný objekt JSON zprávy a nastavte vlastnost typu obsahu zprávy na application/json;charset=utf-8
.
Následující příklad ukazuje platný směrovatelný text zprávy:
{
"timestamp": "2022-02-08T20:10:46Z",
"tag_name": "spindle_speed",
"tag_value": 100
}
Systémové vlastnosti zpráv typu zařízení-cloud
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í malá a velká písmena (maximálně 128 znaků dlouhý) 7bitové alfanumerické znaky ASCII plus - : . + % _ # * ? ! ( ) , = @ ; $ ' . |
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. | 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 typu zařízení-cloud
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ý, ale 2021-04-21T11:30:16-07:00
je neplatný.
{
"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":{}
}
Systémové vlastnosti zpráv typu cloud-zařízení
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í malá a velká písmena (maximálně 128 znaků dlouhý) 7bitové alfanumerické znaky ASCII plus - : . + % _ # * ? ! ( ) , = @ ; $ ' . |
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, ID uživatele je název centra IoT. | 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í.
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í | iothub-connection-device-id | connectionDeviceId | iothub-connection-device-id | iothub-connection-device-id |
ID modulu připojení | iothub-connection-module-id | connectionModuleId | iothub-connection-module-id | iothub-connection-module-id |
ID generování ověřování připojení | iothub-connection-auth-generation-id | connectionDeviceGenerationId | iothub-connection-auth-generation-id | iothub-connection-auth-generation-id |
Metoda ověřování připojení | 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.