可以在【数据转换器】之后应用【规则链】吗?

Is it possible to apply [Rule Chain] after [Data Converter]?

我目前正在使用 ThingsBoard PE 进行 POC。 我们的原始数据包含 [Asset] [Attributes].

数据流: [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
    }
}

回答你的两个不同的问题:

is it possible to apply [Rule Chain] after [ThingsBoard PE Data Converter]?

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

Therefore, the device can auto create relationship with [Asset] by the [Attribute], instead of [AssetName].

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

PE版已有Create Relation Node。但是,它似乎无法满足您的要求(没有指定自定义资产 ID 的选项)。

但是,您有两个选择:

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

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

这使我们可以解决您想要执行的操作:添加一个 Script Transformation Node,将 attributes.asset_id 添加到元数据 ,例如 metadata.asset_id,因此您可以将其用作名称和类型模式中的 ${asset_id}

例如,您的此类脚本转换节点的 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};
}

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

[Input] -> [Script Node] -> [Create Relation Node] -> [...whatever else you like]