云上如何对Device-to-cloud消息加强处理
分类: Azure物联网 ◆ 标签: #Azure #IoT Hub # #入门 #指南 ◆ 发布于: 2023-06-13 22:58:21

针对Device-to-cloud
的消息加强处理主要是指Azure IoT Hub
提供的一个功能: Message enrichments
, 这个功能主要在消息被传递到Azure IoT Hub
,但是还没有转发到定义的终结点之前,Azure IoT Hub
利用一些附加的信息对消息进行一定的标识,这个过程就称为Message enrichments
。
在上述的定义中我们有提到Azure IoT Hub
利用附加的信息对消息进行标识,那么这里提及的附加信息可以是:
- 用户自定义的字符串常量。
IoT Hub
的名字,使用变量$iothubname
来引用Device Twin
中引入的变量。
用户在定义Message Enrichments
时,是如何使用这些附件信息的呢?我们定义一个Message Enrichments
主要需要定义三个要素:
- 给这个
Message Enrichments
起一个名字。 - 给这个
Message Enrichments
定义一个值,这些附加信息就放置在这些值里。 - 该
Message Enrichments
要应用在哪个消息终结点上,例如我们上一章自己创建的Azure Storage
终结点。
最终这些信息是如何加强消息的呢? Azure IoT Hub
会将这些消息放置到消息的应用属性里,例如:
{ "EnqueuedTimeUtc":"2019-05-10T06:06:32.7220000Z", "Properties": { "level":"storage", "myIotHub":"{your hub name}", "DeviceLocation":"Plant 43", "customerID":"6ce345b8-1e4a-411e-9398-d34587459a3a" }, "SystemProperties": { "connectionDeviceId":"Contoso-Test-Device", "connectionAuthMethod":"{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}", "connectionDeviceGenerationId":"636930642531278483", "enqueuedTime":"2019-05-10T06:06:32.7220000Z" },"Body":"eyJkZXZpY2VJZCI6IkNvbnRvc28tVGVzdC1EZXZpY2UiLCJ0ZW1wZXJhdHVyZSI6MjkuMjMyMDE2ODQ4MDQyNjE1LCJodW1pZGl0eSI6NjQuMzA1MzQ5NjkyODQ0NDg3LCJwb2ludEluZm8iOiJUaGlzIGlzIGEgc3RvcmFnZSBtZXNzYWdlLiJ9" }
上述这个例子中:myIotHub
, DeviceLocation
, CustomerID
即是通过Message Enrichments
由Azure IoT Hub
自动加进应用属性中。
我们来演示一下如何设置Message Enrichments
注意
开始之前,请按照文章先创建一个消息路由以及自定义总结点指向Azure Storage
。
我们本例中演示所有可能的值。
- 静态字符串数据
IoT Hub
的名字动态引用Device Twin
中的值引用。
使用Azure Portal
找到IoT Hub
的资源,从左侧菜单里找到Hub Setting
-> Message routing
:
然后从列表里选择自定义的终结点(也可以应用于内置终结点
)
然后依次输入Message Enrichments
的定义:
如上图:
- 定义了一个名字
myIotHub
,值为$iothubname
动态值的Message enrichments
- 定义了一个静态字符串的
Message enrichments
, 名字为customerID
, 其值就是一个静态值 - 定义了一个名字为
DeviceLocation
, 其值是引用了device twin
的动态值:$twin.tags.location
。
按照上述配置结果之后,生成消息会在应用属性中添加下述值:
{ "myIotHub":"{your hub name}", "DeviceLocation":"Plant 43", "customerID":"6ce345b8-1e4a-411e-9398-d34587459a3a" },