De algemene set berichtfuncties bekijken

Voltooid

Ter ondersteuning van naadloze interoperabiliteit tussen protocollen definieert Azure IoT Hub een algemene set berichtenfuncties die beschikbaar zijn in alle apparaatgerichte protocollen. Deze berichtenfuncties kunnen worden gebruikt in zowel apparaat-naar-cloud-berichtroutering als cloud-naar-apparaat-berichten.

Azure IoT Hub implementeert apparaat-naar-cloud-berichten met behulp van een streamingberichtenpatroon. De apparaat-naar-cloud-berichten van Azure IoT Hub lijken meer op Event Hubs-gebeurtenissen dan Service Bus-berichten, omdat er een groot aantal gebeurtenissen is die door de service worden gelezen die door meerdere lezers kunnen worden gelezen.

Een Azure IoT Hub-bericht bestaat uit:

  • Een vooraf bepaalde set systeemeigenschappen , zoals verderop in deze les wordt beschreven.
  • Een set toepassingseigenschappen. Een woordenlijst met tekenreekseigenschappen die de toepassing kan definiëren en openen, zonder de hoofdtekst van het bericht te hoeven deserialiseren. Azure IoT Hub wijzigt deze eigenschappen nooit.
  • Een berichttekst, die elk type gegevens kan zijn.

Eigenschapsnamen en -waarden kunnen alleen alfanumerieke ASCII-tekens bevatten en ! # $ % & ' * + - . ^ _ ``` | ~ wanneer u apparaat-naar-cloud-berichten verzendt met behulp van het HTTPS-protocol of cloud-naar-apparaat-berichten verzendt.

Apparaat-naar-cloud-berichten met Azure IoT Hub hebben de volgende kenmerken:

  • Apparaat-naar-cloud-berichten zijn duurzaam en worden gedurende maximaal zeven dagen bewaard in het standaardeindpunt voor berichten/gebeurtenissen van Azure IoT Hub.
  • Apparaat-naar-cloud-berichten kunnen maximaal 256 kB zijn en kunnen worden gegroepeerd in batches om verzendingen te optimaliseren. Batches kunnen maximaal 256 kB zijn.
  • Azure IoT Hub staat willekeurige partitionering niet toe. Apparaat-naar-cloud-berichten worden gepartitioneerd op basis van hun oorspronkelijke deviceId.
  • Azure IoT Hub maakt verificatie en toegangsbeheer per apparaat mogelijk.
  • U kunt berichten stempelen met informatie die in de eigenschappen van de toepassing wordt geplaatst.

Zie Azure IoT SDK's voor meer informatie over het coderen en decoderen van berichten die worden verzonden met behulp van verschillende protocollen.

Elk IoT Hub-protocol biedt een eigenschap voor het inhoudstype van een bericht, die wordt gerespecteerd bij het routeren van gegevens naar aangepaste eindpunten. Als u uw gegevens op de juiste manier wilt laten verwerken op de bestemming (bijvoorbeeld JSON die wordt behandeld als een tekenreeks die kan worden geparseerd in plaats van met Base64 gecodeerde binaire gegevens), geeft u het juiste inhoudstype en tekenset voor het bericht op.

Als u de berichttekst in een IoT Hub-routeringsquery wilt gebruiken, geeft u een geldig JSON-object voor het bericht op en stelt u de eigenschap van het inhoudstype van het bericht in op application/json;charset=utf-8.

Een geldige, routeerbare berichttekst kan eruitzien als de volgende definitie:

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

Systeemeigenschappen van D2C Azure IoT Hub-berichten

Eigenschappen

Beschrijving

Gebruikerssettabel?

Trefwoord voor routeringsquery

message-id

Een door de gebruiker ingestelde id voor het bericht dat wordt gebruikt voor aanvraag-antwoordpatronen. Opmaak: Een hoofdlettergevoelige tekenreeks (maximaal 128 tekens) van ASCII 7-bits alfanumerieke tekens. De volgende andere tekens kunnen ook worden gebruikt - : . + % \ # * ? ! ( ) , = @ ; $ '.

Ja

Messageid

iothub-enqueuedtime

De datum en tijd waarop het apparaat-naar-cloud-bericht is ontvangen door Azure IoT Hub.

Nee

enqueuedTime

user-id

Een id die wordt gebruikt om de oorsprong van berichten op te geven. Wanneer berichten worden gegenereerd door Azure IoT Hub, wordt deze ingesteld op {Azure IoT Hub name}.

Ja

userId

iothub-verbinding-apparaat-id

Een id die is ingesteld door Azure IoT Hub op apparaat-naar-cloud-berichten. Het bevat de deviceId van het apparaat dat het bericht heeft verzonden.

Nee

connectionDeviceId

iothub-connection-module-id

Een id die is ingesteld door Azure IoT Hub op apparaat-naar-cloud-berichten. Het bevat de moduleId van het apparaat dat het bericht heeft verzonden.

Nee

connectionModuleId

iothub-connection-auth-generation-id

Een id die is ingesteld door Azure IoT Hub op apparaat-naar-cloud-berichten. Het bevat de connectionDeviceGenerationId (volgens apparaat-id-eigenschappen) van het apparaat dat het bericht heeft verzonden.

Nee

connectionDeviceGenerationId

iothub-connection-auth-method

Een verificatiemethode die is ingesteld door Azure IoT Hub op apparaat-naar-cloud-berichten. Deze eigenschap bevat informatie over de verificatiemethode die wordt gebruikt om het apparaat te verifiëren dat het bericht verzendt.

Nee

connectionAuthMethod

iothub-app-iothub-creation-time-utc

Hiermee kan het apparaat de aanmaaktijd van gebeurtenissen verzenden bij het verzenden van gegevens in een batch.

Ja

aanmaaktijd-utc

iothub-creation-time-utc

Hiermee kan het apparaat de aanmaaktijd van gebeurtenissen verzenden wanneer er één bericht tegelijk wordt verzonden.

Ja

aanmaaktijd-utc

dt-dataschema

Deze waarde wordt ingesteld door Azure IoT Hub op apparaat-naar-cloud-berichten. Het bevat de apparaatmodel-id die is ingesteld in de apparaatverbinding.

Nee

$dt-dataschema

dt-subject

De naam van het onderdeel dat de apparaat-naar-cloud-berichten verzendt.

Ja

$dt onderwerp

Systeemeigenschappen van C2D Azure IoT Hub-berichten

Eigenschappen

Beschrijving

Gebruikerssettabel?

message-id

Een door de gebruiker ingestelde id voor het bericht dat wordt gebruikt voor aanvraag-antwoordpatronen. Opmaak: Een hoofdlettergevoelige tekenreeks (maximaal 128 tekens) van ASCII 7-bits alfanumerieke tekens. De volgende andere tekens kunnen ook worden gebruikt - : . + % _ # * ? ! ( ) , = @ ; $ '.

Ja

reeksnummer

Een nummer (uniek per apparaatwachtrij) dat door Azure IoT Hub is toegewezen aan elk cloud-naar-apparaat-bericht.

Nee

to

Een bestemming die is opgegeven in cloud-naar-apparaat-berichten.

Nee

absolute verlooptijd

De datum en tijd waarop het bericht verloopt.

Ja

correlatie-id

Een tekenreekseigenschap in een antwoordbericht dat doorgaans de MessageId van de aanvraag bevat, in aanvraag-antwoordpatronen.

Ja

user-id

Een id die wordt gebruikt om de oorsprong van berichten op te geven. Wanneer berichten worden gegenereerd door Azure IoT Hub, wordt deze ingesteld op {Azure IoT Hub-naam}.

Ja

iothub-ack

Een generator voor feedbackberichten. Deze eigenschap wordt gebruikt in cloud-naar-apparaat-berichten om Azure IoT Hub aan te vragen om feedbackberichten te genereren als gevolg van het verbruik van het bericht door het apparaat. Mogelijke waarden: geen (standaard): er wordt geen feedbackbericht gegenereerd, positief: ontvang een feedbackbericht als het bericht is voltooid, negatief: ontvang een feedbackbericht als het bericht is verlopen (of het maximum aantal bezorgingen is bereikt) zonder dat het apparaat is voltooid of volledig: zowel positief als negatief.

Ja

Systeemeigenschapsnamen

De namen van de systeemeigenschappen variëren op basis van het eindpunt waarnaar de berichten worden gerouteerd. Zie de volgende tabel voor details.

Naam van systeemeigenschap Event Hubs Azure Storage Service Bus Event Grid
Bericht-id message-id Messageid Messageid message-id
Gebruikers-id user-id userId Gebruikers-id user-id
apparaat-id voor Verbinding maken ion iothub-verbinding-apparaat-id connectionDeviceId iothub-verbinding-apparaat-id iothub-verbinding-apparaat-id
Verbinding maken module-id iothub-connection-module-id connectionModuleId iothub-connection-module-id iothub-connection-module-id
id voor het genereren van Verbinding maken ion-verificatie iothub-connection-auth-generation-id connectionDeviceGenerationId iothub-connection-auth-generation-id iothub-connection-auth-generation-id
verificatiemethode voor Verbinding maken ion iothub-connection-auth-method connectionAuthMethod iothub-connection-auth-method iothub-connection-auth-method
Contenttype inhoudstype Contenttype Contenttype iothub-content-type
contentEncoding inhoudscodering contentEncoding ContentEncoding iothub-content-codering
iothub-enqueuedtime iothub-enqueuedtime enqueuedTime N.v.t. iothub-enqueuedtime
CorrelationId correlatie-id correlationId CorrelationId correlatie-id
dt-dataschema dt-dataschema dt-dataschema dt-dataschema dt-dataschema
dt-subject dt-subject dt-subject dt-subject dt-subject

Berichtgrootte

Azure IoT Hub meet de berichtgrootte op een protocolagnostische manier, waarbij alleen de werkelijke nettolading wordt overwogen. De grootte in bytes wordt berekend als de som van de volgende waarden:

  • De grootte van de hoofdtekst in bytes.
  • De grootte in bytes van alle waarden van de berichtsysteemeigenschappen.
  • De grootte in bytes van alle namen en waarden van gebruikerseigenschappen.

Eigenschapsnamen en -waarden zijn beperkt tot ASCII-tekens, dus de lengte van de tekenreeksen is gelijk aan de grootte in bytes.

Anti-adresvervalsingseigenschappen

Om adresvervalsing van apparaten in apparaat-naar-cloud-berichten te voorkomen, worden in Azure IoT Hub alle berichten gestempeld met de volgende eigenschappen:

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

De eerste twee bevatten de deviceId en generationId van het oorspronkelijke apparaat op basis van apparaat-id-eigenschappen.

De eigenschap iothub-connection-auth-method bevat een geserialiseerd JSON-object met de volgende eigenschappen:

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