De algemene set berichtfuncties bekijken
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"
}