Sdílet prostřednictvím


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 jak ve zprávách typu zařízení-cloud, tak 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 Basic a Standard/Free IoT Hub najdete v tématu Volba správné úrovně a velikosti služby IoT Hub 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 typu zařízení-cloud ve službě IoT Hub jsou více podobné událostemEvent Hubs než zprávámService Bus, protože službou prochází velký objem událostí, které 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 tématu Komunikace se službou IoT Hub pomocí protokolu MQTT a komunikace s centrem IoT pomocí protokolu AMQP.

Při odesílání zpráv z zařízení do cloudu pomocí protokolu HTTPS nebo odesílání zpráv z cloudu do zařízení mohou názvy a hodnoty vlastností obsahovat pouze alfanumerické znaky ASCII a navíc ! # $ % & ' * + - . ^ _ ` | ~.

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 mohou mít maximálně 256 kB a lze je seskupit do dávek pro lepší optimalizaci odesílání. Dávky můžou mít maximálně 256 kB.

  • IoT Hub neumožňuje libovolné dělení. Zprávy zařízení-do-cloudu jsou rozdělovány podle jejich původního ID zařízení.

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

  • Zprávy můžete opatřit informacemi, které se stanou součástí vlastností aplikace. Další informace najdete v tématu Rozšiřování zpráv pro zprávy IoT Hubu typu zařízení-do-cloudu.

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 z zařízení do cloudu

Vlastnost Popis Nastavitelné uživatelem? Klíčové slovo pro
směrovací dotaz
message-id (ID zprávy) Identifikátor uživatelem nastavený pro zprávu použitou pro vzory žádosti a odpovědi. Formát: Řetězec s rozlišením malých a velkých písmen obsahující 7bitové alfanumerické znaky ASCII, maximálně 128 znaků, plus - : . + % _ # * ? ! ( ) , = @ ; $ '. Ano ID zprávy
iothub-enqueuedtime Datum a čas, kdy IoT Hub obdrží zprávu zařízení na cloud. Ne enqueuedTime
ID uživatele ID použité k určení původu zpráv. Ano ID uživatele
iothub-připojení-id-zařízení ID nastavené službou IoT Hub na zprávách od zařízení k cloudu. Obsahuje ID zařízení , které zprávu odeslalo. Ne ID_připojovacího_zařízení
Identifikátor modulu připojení iothub ID nastavené službou IoT Hub na zprávách od zařízení k cloudu. Obsahuje id modulu zařízení, které zprávu odeslalo. Ne idModuluPřipojení
iothub-connection-auth-generation-id ID nastavené službou IoT Hub na zprávách od zařízení k cloudu. Obsahuje connectionDeviceGenerationId (podle vlastností identity zařízení) zařízení, které zprávu odeslalo. Ne identifikátorGeneracePřipojovacíhoZařízení
iothub-připojení-metoda-autentizace Metoda ověřování nastavená službou IoT Hub ve zprávách mezi zařízeními a cloudem Tato vlastnost obsahuje informace o metodě ověřování použité k ověření zařízení odesílajícího zprávu. Ne metoda ověřování připojení
iothub-app-iothub-čas-vytvoření-utc Umožňuje zařízení odesílat čas vytvoření události, když odesílá data v dávce. Ano čas vytvoření (UTC)
čas-vytvoření-iothub-utc Umožňuje zařízení odesílat čas vytvoření události při odesílání jedné zprávy najednou. Ano čas vytvoření (UTC)
dt-dataschema IoT Hub nastaví tuto hodnotu u zpráv ze zařízení do cloudu. Obsahuje ID modelu zařízení nastavené v připojení zařízení. Ne $dt-dataschema
dt-předmět Název komponenty, která odesílá zprávy z zařízení do cloudu. Ano $dt předmět

Vlastnosti aplikace zpráv z zařízení do cloudu

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í odešle zprávu. 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 z cloudu na zařízení

Vlastnost Popis Nastavitelné uživatelem?
message-id (ID zprávy) Identifikátor uživatelem nastavený pro zprávu použitou pro vzory žádosti a odpovědi. Formát: Řetězec s rozlišením malých a velkých písmen obsahující 7bitové alfanumerické znaky ASCII, maximálně 128 znaků, plus - : . + % _ # * ? ! ( ) , = @ ; $ '. Ano
pořadové číslo Číslo (jedinečné pro zařízení ve frontě) přiřazené IoT Hubem ke každé zprávě z cloudu do zařízení. Ne
na Cíl zadaný ve zprávách typu z cloudu do zařízení. Ne
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 vzorcích žádost-odpověď. Ano
ID uživatele ID použité k určení původu zpráv. Když IoT Hub generuje 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í, aby IoT Hub vygeneroval zprávy zpětné vazby po spotřebování 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 Centra událostí Azure Storage Sběrnice Event Grid
ID zprávy message-id (ID zprávy) ID zprávy ID zprávy message-id (ID zprávy)
ID uživatele ID uživatele ID uživatele ID uživatele ID uživatele
ID zařízení připojení iothub-připojení-id-zařízení ID_připojovacího_zařízení iothub-připojení-id-zařízení iothub-připojení-id-zařízení
ID modulu připojení Identifikátor modulu připojení iothub idModuluPřipojení Identifikátor modulu připojení iothub Identifikátor modulu připojení iothub
Identifikátor generace ověřování připojení iothub-connection-auth-generation-id identifikátorGeneracePřipojovacíhoZařízení iothub-connection-auth-generation-id iothub-connection-auth-generation-id
Metoda ověřování připojení iothub-připojení-metoda-autentizace metoda ověřování připojení iothub-připojení-metoda-autentizace iothub-připojení-metoda-autentizace
typObsahu typ obsahu typObsahu typ obsahu iothub-content-type
způsob kódování obsahu kódování obsahu způsob kódování obsahu Kódování obsahu iothub-kódování-obsahu
iothub-enqueuedtime iothub-enqueuedtime enqueuedTime iothub-enqueuedtime
Identifikátor korelace ID korelace identifikátor korelace Identifikátor korelace ID korelace
dt-dataschema dt-dataschema dt-dataschema dt-dataschema dt-dataschema
dt-předmět dt-předmět dt-předmět dt-předmět dt-předmět

Velikost zprávy

IoT Hub měří velikost zpráv způsobem nezávislým na protokolu, přičemž zohledňuje pouze skutečnou datovou část. 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 proti-falšování

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

  • iothub-connection-device-id
  • iothub-connection-auth-generation-id
  • metoda autentizace připojení iothub

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