首页 > 解决方案 > [数据转换器]之后可以应用[规则链]吗?

问题描述

我目前正在使用 ThingsBoard PE 开发 POC。我们的原始数据包含 [资产] [属性]。

数据流: [IoT cloud] --https webhook carry raw data--> [ThingsBoard PE HTTP INTEGRATION] --uplink--> [ThingsBoard PE Data Converter]

我的问题是:[ThingsBoard PE Data Converter]之后是否可以应用[Rule Chain]?因此,设备可以通过[Attribute]而不是[AssetName]自动创建与[Asset]的关系。

数据转换器处理后的示例数据:

{
    "deviceName": "ABC",
    "deviceType": "temperature",
    "attributes": {
        "asset_id": 6 // <-- the id is used in asset attribute
    },
    "telemetry": {
        "temperature": 39.43
    }
}

标签: thingsboard

解决方案


回答您的两个单独的问题:

[ThingsBoard PE Data Converter]之后可以应用[Rule Chain]吗?

对的,这是可能的。一旦您的数据成功集成并且您正在接收它,您就可以使用[Input]规则节点(创建规则时始终存在的默认绿色节点)访问它并将其路由到您需要的任何其他节点。

因此,设备可以通过[Attribute]而不是[AssetName]自动创建与[Asset]的关系。

因此,您希望关系采用您的自定义属性并将用作标识您要从中创建关系的资产的模式。

PE 版已经有了Create Relation Node。但是,似乎它无法完成您所寻求的工作(无法指定自定义资产 ID)。

但是,您有两个选择:

  • 创建一个执行您想要的自定义规则节点。为此,请尝试从 Thingsboard检查规则节点开发页面。您可以使用创建关系节点作为基础并从那里开始工作。这可能是一个比做更长的解决方案......

  • 丰富传入消息的元数据,添加所需的属性。创建关系节点允许您在名称和类型模式中使用消息元数据上的变量,从我从该节点截取的屏幕截图中可以看出:

节点截图

这使我们可以解决您想要做的事情:添加一个添加到元数据的脚本转换节点attributes.asset_id,例如 as metadata.asset_id,这样您就可以${asset_id}在您的 Name 和 Type 模式中使用它。

例如,您Transform()的此类脚本转换节点的方法应如下所示:

function Transform(msg, metadata, msgType){
    //assumming your desired id is msg.attributes.asset_id, add it to the metadata
    metadata.asset_id = msg.attributes.asset_id;
    //return the message, in your case to the Create Relation Node
    return {msg: msg, metadata:metadata, msgType:msgType};
}

最后,您的规则应该像这样连接:

[输入] -> [脚本节点] -> [创建关系节点] -> [...随便你喜欢什么]


推荐阅读