You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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_IPYOUR_DEVICE_IDYOUR_TELEMETRY_KEY为实际值;
  • START_TIMESTAMPEND_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:

  1. 进入ThingsBoard Web UI → 「规则链」→ 选择默认规则链(或创建新规则链);
  2. 添加触发节点:点击「+」→ 选择「遥测数据上报」节点,配置监听的设备/资产范围(可选择全部或指定实体);
  3. 添加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}"
      }
      
  4. 连接节点:把「遥测数据上报」节点的「成功」端口连接到「HTTP调用」节点的「输入」端口;
  5. 激活规则链:点击右上角的「激活」按钮,之后设备上报的遥测数据就会自动POST到你的外部Web服务器。

3. 从外部访问ThingsBoard的PostgreSQL数据库

To access the PostgreSQL database from an external client, follow these steps (note: ensure you prioritize security):

步骤1:修改PostgreSQL配置文件

  1. 登录到ThingsBoard服务器,找到PostgreSQL的配置目录(通常是/var/lib/postgresql/14/main/,版本号可能不同);
  2. 编辑pg_hba.conf文件,添加一条允许外部IP访问的规则:
    host    all             all             YOUR_CLIENT_IP/32         md5
    
    (替换YOUR_CLIENT_IP为你要允许访问的外部IP,若需允许所有IP(不推荐生产环境),可改为0.0.0.0/0
  3. 编辑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

火山引擎 最新活动