CE ThingsBoard数据导出、跨服务POST数据传输及PostgreSQL外部访问问题咨询
ThingsBoard CE 技术需求解决方案
Hey there! Let's tackle your three technical needs step by step with actionable solutions:
1. 实现ThingsBoard CE的数据导出
You have a few reliable options to export data from ThingsBoard CE:
方法一:通过Web UI直接导出
- 对于设备遥测数据:进入「设备管理」→ 选择目标设备 → 切换到「遥测」标签 → 点击右上角的「导出」按钮,选择时间范围和数据格式(CSV/JSON)即可下载。
- 对于实体列表(如设备、资产):在对应实体管理页面,使用顶部的「导出」功能,可导出实体的基本信息列表。
方法二:通过REST API批量导出
如果需要自动化或批量导出,可使用ThingsBoard的REST API。例如,导出指定设备的遥测数据:
curl -X GET "http://YOUR_THINGSBOARD_IP:8080/api/plugins/telemetry/DEVICE/YOUR_DEVICE_ID/values/timeseries?keys=YOUR_TELEMETRY_KEY&startTs=START_TIMESTAMP&endTs=END_TIMESTAMP" \ -H "Accept: application/json" \ -H "X-Authorization: Bearer YOUR_AUTH_TOKEN"
- 替换
YOUR_THINGSBOARD_IP、YOUR_DEVICE_ID、YOUR_TELEMETRY_KEY为实际值; START_TIMESTAMP和END_TIMESTAMP需用毫秒级时间戳;YOUR_AUTH_TOKEN可从Web UI的「用户设置」→「API访问令牌」获取。
2. 将ThingsBoard数据通过POST发送至外部Web服务器
The easiest way to achieve this is using ThingsBoard Rule Engine—it’s designed for routing data to external systems. Here’s how:
- 进入ThingsBoard Web UI → 「规则链」→ 选择默认规则链(或创建新规则链);
- 添加触发节点:点击「+」→ 选择「遥测数据上报」节点,配置监听的设备/资产范围(可选择全部或指定实体);
- 添加HTTP调用节点:点击「+」→ 选择「HTTP调用」节点,进行如下配置:
- 基本设置:输入节点名称,选择请求方法为
POST; - URL:填入目标Web服务器的接口地址(如
http://EXTERNAL_SERVER_IP:PORT/api/your-endpoint); - 请求头:根据外部服务器要求添加(如
Content-Type: application/json); - 请求体:使用模板自定义POST内容,例如:
{ "deviceId": "${metadata.deviceId}", "timestamp": "${data.ts}", "temperature": "${data.temperature}" }
- 基本设置:输入节点名称,选择请求方法为
- 连接节点:把「遥测数据上报」节点的「成功」端口连接到「HTTP调用」节点的「输入」端口;
- 激活规则链:点击右上角的「激活」按钮,之后设备上报的遥测数据就会自动POST到你的外部Web服务器。
3. 从外部访问ThingsBoard的PostgreSQL数据库
To access the PostgreSQL database from an external client, follow these steps (note: ensure you prioritize security):
步骤1:修改PostgreSQL配置文件
- 登录到ThingsBoard服务器,找到PostgreSQL的配置目录(通常是
/var/lib/postgresql/14/main/,版本号可能不同); - 编辑
pg_hba.conf文件,添加一条允许外部IP访问的规则:
(替换host all all YOUR_CLIENT_IP/32 md5YOUR_CLIENT_IP为你要允许访问的外部IP,若需允许所有IP(不推荐生产环境),可改为0.0.0.0/0) - 编辑
postgresql.conf文件,修改listen_addresses为:listen_addresses = '*'
步骤2:重启PostgreSQL服务
执行命令重启服务使配置生效:
sudo systemctl restart postgresql
步骤3:开放服务器防火墙端口
确保服务器的5432端口(PostgreSQL默认端口)对外开放:
sudo ufw allow 5432/tcp
步骤4:使用客户端连接
使用PostgreSQL客户端(如pgAdmin、psql)连接时,填写以下信息:
- 主机:ThingsBoard服务器的公网/内网IP;
- 端口:5432;
- 数据库名称:
thingsboard; - 用户名:
thingsboard; - 密码:安装ThingsBoard时设置的数据库密码。
安全提醒:生产环境中请勿允许所有IP访问,尽量限制特定客户端IP;同时使用强密码,可考虑开启SSL加密连接。
内容的提问来源于stack exchange,提问作者Werta




