如何在Thingsboard中计算并可视化两台流量计的流量差值?
在Thingsboard中实现双设备流量差值的折线图可视化
1. 配置实体别名
- 打开目标仪表板的编辑模式,点击右上角的实体别名按钮
- 添加两个别名:
- 别名
Flowmeter_Input,关联你的Flowmeter 1设备 - 别名
Flowmeter_Output,关联Flowmeter 2设备
- 别名
- 保存别名设置
2. 给折线图配置数据转换(核心步骤)
- 在编辑模式下添加折线图部件,进入它的数据配置页:
- 先添加第一个查询:选择
Flowmeter_Output别名,挑选对应的流量数据键(比如设备上传的flowrate字段),设置好时间范围和聚合方式(比如按分钟取平均值,务必保证两个查询的时间、聚合参数完全一致) - 再添加第二个查询:选择
Flowmeter_Input别名,同样选择对应的流量数据键,复用第一个查询的时间和聚合参数 - 切换到转换标签页,选择自定义JavaScript转换,粘贴以下代码(可根据实际字段调整):
return function(data) { const outputData = data[0]; const inputData = data[1]; const result = []; // 用时间戳匹配两组数据,计算差值 const inputMap = new Map(inputData.map(item => [item.ts, item.value])); outputData.forEach(item => { const inputVal = inputMap.get(item.ts); if (inputVal !== undefined) { result.push({ ts: item.ts, value: item.value - inputVal }); } }); return [{ name: '流量差值(输出-输入)', data: result }]; } - 保存转换配置
- 先添加第一个查询:选择
3. 调整可视化样式
- 转到折线图的外观配置页,将标题改为
Flowrate Output - Input,按需调整坐标轴标签、线条颜色等样式 - 保存部件配置,退出编辑模式即可查看实时计算的差值折线图
备选方案:用规则链预处理数据
如果需要持久化差值数据,或给多个仪表板复用计算结果,可通过规则链提前处理:
- 新建规则链,添加实体节点订阅两个流量计的流量数据
- 添加脚本节点,在节点内编写逻辑计算输出减输入的差值
- 将计算后的差值发送至一个虚拟设备,或直接存入时序数据库
- 后续在仪表板中直接查询该预处理后的差值数据即可
内容的提问来源于stack exchange,提问作者Fikar Suwardi
相关产品推荐
相关产品推荐

