如何使用 meta 函数抽取在 EdgeX 消息总线中发送的其它信息?
当数据被发布到 EdgeX 消息总线的时候,除了真正的设备发出的值之外,还包含了一些额外的值,例如事件创建的时间,修改时间。有时在数据分析的时候需要这些值,本文描述如何使用 Kuiper 提供的函数来实现这个功能。
EdgeX 消息总线上收到的消息模型
在 EdgeX 消息总线上收到的数据结构如下,一个 Event 结构体封装了相关的「元数据」(ID, Pushed, Device, Created, Modified, Origin),以及从设备服务中采集到的实际数据 (在 Readings 字段中) 。 与Event 类似, Reading 也包含了一些元数据 (ID, Pushed... 等)。
Event - ID
- Pushed
- Device
- Created
- Modified
- Origin
- Readings
- reading [0]
- Id
- Pushed
- Created
- Origin
- Modified
- Device
- Name
- Value
- reading [1]
- ... // The same as in reading[0]
- ...
- reading [n] ...
Kuiper 中的 EdgeX 数据模型
那么在 Kuiper 中, EdgeX 数据是如何被管理的?让我们来看个例子。 如下所示,首先用户创建了一个名为 events 的 EdgeX 流定义(以黄色高亮标示)。 其次,如下所示,一条消息被发送到消息总线。 - Device name 为 demo,以绿色高亮标示
- Reading 名称为 temperature & Humidity ,用红色高亮标示
- 这里有些 元数据 是没有必要「可见」的,但是这些值在分析的时候可能会被用到,例如Event 结构体中的 Created 字段。Kuiper 将这些值保存在 Kuiper 消息中的名为 metadata 的字段中,用户在分析阶段可以获取到这些值。
|