Delen via


Berichtverrijkingen voor apparaat-naar-cloud IoT Hub-berichten

Berichtverrijkingen is de mogelijkheid van een IoT-hub om berichten te stempelen met aanvullende informatie voordat de berichten naar het aangewezen eindpunt worden verzonden. Een van de redenen voor het gebruik van berichtverrijkingen is het opnemen van gegevens die kunnen worden gebruikt om downstreamverwerking te vereenvoudigen. Het verrijken van telemetrieberichten van apparaten met een tag voor apparaat-twins kan bijvoorbeeld de belasting voor klanten verminderen doordat ze geen API-aanroepen voor apparaat-twins hoeven te doen voor deze informatie.

Proces voor berichtenverrijkingen

Een berichtverrijking heeft drie belangrijke elementen:

  • Naam of sleutel van verrijking

  • Een waarde

  • Een of meer eindpunten waarvoor de verrijking moet worden toegepast.

De sleutel is een tekenreeks. Een sleutel mag alleen alfanumerieke tekens of deze speciale tekens bevatten: afbreekstreepje (-), onderstrepingsteken (_) en punt (.).

De waarde kan een van de volgende voorbeelden zijn:

  • Elke statische tekenreeks. Dynamische waarden, zoals voorwaarden, logica, bewerkingen en functies, zijn niet toegestaan. Als u bijvoorbeeld een SaaS-toepassing ontwikkelt die door verschillende klanten wordt gebruikt, kunt u een id toewijzen aan elke klant en die id beschikbaar maken in de toepassing. Wanneer de toepassing wordt uitgevoerd, worden de telemetrieberichten van het apparaat gestempeld met de id van de klant, zodat de berichten voor elke klant anders kunnen worden verwerkt.

  • De naam van de IoT-hub die het bericht verzendt. Deze waarde is $iothubname.

  • Informatie van de apparaatdubbel, zoals het pad. Voorbeelden zijn $twin.tags.field en $twin.tags.latitude.

    Opmerking

    Op dit moment worden alleen $iothubname, $twin.tags, $twin.properties.desired en $twin.properties.reported ondersteunde variabelen voor berichtverrijking. Daarnaast worden alleen primitieve typen ondersteund voor verrijkingen. Berichten kunnen niet worden verrijkt met objecttypen.

Berichtverrijkingen worden toegevoegd als toepassingseigenschappen voor berichten die worden verzonden naar een of meer gekozen eindpunten.

Verrijkingen toepassen

De berichten kunnen afkomstig zijn van elke gegevensbron die wordt ondersteund door IoT Hub-berichtroutering, waaronder de volgende voorbeelden:

  • apparaattelemetrie, zoals temperatuur of druk
  • meldingen over wijziging van apparaatdubbel - wijzigingen in de apparaatdubbel
  • gebeurtenissen voor de levenscyclus van apparaten, zoals wanneer het apparaat wordt gemaakt of verwijderd

U kunt verrijkingen toevoegen aan berichten die naar het ingebouwde eindpunt van een IoT-hub gaan of naar berichten die worden gerouteerd naar aangepaste eindpunten, zoals Azure Blob Storage, een Service Bus-wachtrij of een Service Bus-onderwerp.

U kunt ook verrijkingen toevoegen aan berichten die worden gepubliceerd naar Event Grid door eerst een Event Grid-abonnement te maken met het telemetrieberichttype van het apparaat. Op basis van dit abonnement maken we een standaardroute in Azure IoT Hub voor de telemetrie. Met deze ene route kunt u al uw Event Grid-abonnementen verwerken. Vervolgens kunt u verrijkingen voor het eindpunt configureren met behulp van het tabblad Berichten verrijken van de sectie Berichtroutering van IoT Hub. Zie IoT Hub en Event Grid voor informatie over het reageren op gebeurtenissen met behulp van Event Grid.

Verrijkingen worden per eindpunt toegepast. Als u vijf verrijkingen opgeeft die moeten worden gestempeld voor een specifiek eindpunt, worden alle berichten naar dat eindpunt gestempeld met dezelfde vijf verrijkingen.

Verrijkingen kunnen worden geconfigureerd met behulp van de volgende methoden:

Methode Opdracht
Portaal Azure Portal Zie de zelfstudie over berichtverrijkingen
Azure-opdrachtregelinterface (CLI) az iot-hub berichtverrijking
Azure PowerShell Add-AzIotHubMessageEnrichment

Het toevoegen van berichtverrijkingen voegt geen latentie toe aan de berichtroutering.

Als u berichtverrijkingen wilt uitproberen, raadpleegt u de zelfstudie over berichtverrijkingen

Beperkingen

  • U kunt maximaal 10 verrijkingen per IoT-hub toevoegen voor die hubs in de standard- of basic-laag. Voor IoT-hubs in de gratis laag kunt u maximaal 2 verrijkingen toevoegen.

  • In sommige gevallen, als u een bericht verrijkt met een waarde die is ingesteld op een tag of eigenschap in de apparaat-twin, wordt de waarde gestempeld met het opgegeven apparaat-twin pad. Als een verrijkingswaarde bijvoorbeeld is ingesteld op $twin.tags.field, worden de berichten voorzien van de tekenreeks '$twin.tags.field', in plaats van de waarde van dat veld uit de twin. Dit gedrag gebeurt in de volgende gevallen:

    • Uw IoT-hub bevindt zich in de basic-laag. IoT-hubs in de Basic-laag bieden geen ondersteuning voor apparaatdubbels.

    • Uw IoT-hub bevindt zich op het standaardniveau, maar het apparaat tweelingpad dat wordt gebruikt voor de waarde van de verrijking bestaat niet. Als de verrijkingswaarde bijvoorbeeld is ingesteld op $twin.tags.location en de apparaattweeling geen locatie-eigenschap heeft onder tags, wordt het bericht voorzien van de tekenreeks '$twin.tags.location'.

    • Uw IoT-hub bevindt zich in het standaardniveau, maar het apparaat-twinpad dat wordt gebruikt voor het verrijken, wordt opgelost tot een object in plaats van een simpele eigenschap. Als de verrijkingswaarde bijvoorbeeld is ingesteld op $twin.tags.location en de locatie-eigenschap onder tags een object is dat onderliggende eigenschappen, zoals {"building": 43, "room": 503}, bevat, wordt het bericht voorzien van de tekenreeks '$twin.tags.location'.

  • Het kan tot vijf minuten duren voordat updates van een device twin worden weergegeven in de bijbehorende verrijkingswaarde.

  • De totale berichtgrootte, inclusief de verrijkingen, mag niet groter zijn dan 256 kB. Als een bericht groter is dan 256 kB, wordt het bericht door de IoT-hub neer gezet. U kunt metrische IoT Hub-gegevens gebruiken om fouten te identificeren en fouten op te sporen wanneer berichten worden verwijderd. U kunt bijvoorbeeld de telemetrieberichten die incompatibel zijn (d2c.telemetry.egress.invalid) in de routeringsstatistieken bewaken. Zie IoT Hub monitoren voor meer informatie.

  • Berichtenverrijkingen zijn niet van toepassing op de wijzigingsevenementen van digitale tweelingen.

  • Modules nemen geen dubbeltags over van hun bijbehorende apparaten. Verrijkingen voor berichten die afkomstig zijn van apparaatmodules (bijvoorbeeld van IoT Edge-modules) moeten de tweelingtags gebruiken die zijn ingesteld op de moduletweeling.

Prijsstelling

Berichtverrijkingen zijn gratis beschikbaar. Er worden momenteel kosten in rekening gebracht wanneer u een bericht naar een IoT-hub verzendt. Er worden slechts eenmaal kosten in rekening gebracht voor dat bericht, zelfs als het bericht naar meerdere eindpunten gaat.

Volgende stappen

Raadpleeg deze artikelen voor meer informatie over het routeren van berichten naar een IoT-hub: