可以在【数据转换器】之后应用【规则链】吗?
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]
我目前正在使用 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]