You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Thingsboard中结合PostgreSQL处理遥测数据的技术咨询

问题解答

1. 在Thingsboard的PostgreSQL数据库存储非设备来源的额外数据

有两种常用方案:

  • 利用Thingsboard内置实体属性(推荐)
    创建一个虚拟设备或资产,将额外参数存储为该实体的服务器端属性(Server-side Attributes)。这种方式无需修改数据库结构,完全适配Thingsboard生态,可通过TB的API或控制台直接管理数据。
  • 自定义PostgreSQL表
    直接连接TB使用的PostgreSQL实例,创建独立的自定义表(例如custom_calculation_params),字段可按需定义(如param_id、device_id、param_value、update_time)。注意不要修改TB系统表,仅新增自定义表。之后可通过脚本(如Python的psycopg2库)或后台服务向该表写入数据。

2. 在规则链中读取该表的数据

对应上述两种存储方案,读取方式如下:

  • 读取内置实体属性
    在规则链中添加Entity Attributes节点,配置选择存储参数的虚拟设备/资产,设置读取类型为服务器端属性,将读取到的参数数据与设备上报数值合并后,传递给后续Script节点进行计算。
  • 读取自定义PostgreSQL表
    在规则链中添加Script节点,编写JavaScript代码通过TB内置的jdbcTemplate工具执行SQL查询:
    // 获取当前设备ID
    var deviceId = msg.deviceId;
    // 编写查询SQL
    var sql = "SELECT param_value FROM custom_calculation_params WHERE device_id = ?";
    // 执行查询并获取结果
    var result = jdbcTemplate.queryForMap(sql, [deviceId]);
    // 将参数值存入消息体,供后续计算使用
    msg.calcParam = result.param_value;
    return msg;
    
    同时需要在PostgreSQL中给TB的数据库账号赋予自定义表的查询权限:
    GRANT SELECT ON custom_calculation_params TO thingsboard;
    

内容的提问来源于stack exchange,提问作者betelgeuse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:32:06