thingsboard - [数据转换器]之后可以应用[规则链]吗?
问题描述
我目前正在使用 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 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};
}
最后,您的规则应该像这样连接:
[输入] -> [脚本节点] -> [创建关系节点] -> [...随便你喜欢什么]
推荐阅读
- android - 启动特定的 Flutter 屏幕
- node.js - Docker - 撰写我无法创建 postgress 服务器
- php - Phalcon 3.4: Inject a component in a controller action without using dispatcher events
- postgresql - 如何配置从 Vanilla Postgresql 9.6 DB 到 AWS RDS Postgresql 的流复制
- android - 实时数据中的两个对象相互引用
- java - 如何以正确的方式制作高负载 Java 应用程序?
- python - cv2.imwrite 没有写入正确的像素值
- c++ - 为什么擦除其他字符时最后一个字符会加倍,如何防止?
- python - 使用 Pipenv 搜索 Facebook 广告的 Python 脚本
- javascript - 选中复选框时无法使用 JS 将 CSS 应用于输入字段