利用ThingsBoard与CnosDB高效存储遥测数据的实践

real_-jansen-hM3x6-9bdYw-unsplash(1).jpg
在这里插入图片描述

在物联网(IoT)应用中,遥测数据的收集和存储至关重要。ThingsBoard 是一个开源物联网平台,支持设备管理、数据可视化和分析。 CnosDB 是一个高性能的时序数据库,专为处理大量时间序列数据而设计。本文将介绍如何将 ThingsBoard 与 CnosDB 集成,以存储和管理遥测数据。

环境准备

在开始之前,请确保您已准备好以下环境:

  1. Docker:运行 ThingsBoard 以及 CnosDB 的容器。

  2. 开发环境:Python、Java 或其他编程语言,用来运行程序模拟 IoT 设备。

步骤一:启动 CnosDB

CnosDB 的安装运行可以参考官方文档。运行如下命令,通过 Docker 启动 CnosDB:

docker network create tb-cnosdb
docker run -d --name cnosdb --network tb-cnosdb cnosdb/cnosdb:community-latest

执行 SHOW DATABASES 命令,验证 CnosDB 是否成功启动:

docker exec cnosdb curl -s -X POST -u 'root:' 'http://127.0.0.1:8902/api/v1/sql' -d 'SHOW DATABASES'

若输出如下数据,则说明 CnosDB 启动并初始化成功:

database_name
cluster_schema
public
usage_schema

步骤二:启动 ThingsBoard(CnosDB)

以 ThingsBoard v3.7 为基础开发,添加了使用 CnosDB 存储时序数据的功能,获取安装包请扫描文末二维码,添加CC为好友。

通过设置配置文件中的 database.ts.type=cnosdb 或环境变量 DATABASE_TS_TYPE=cnosdb 来启动 ThingsBoard 的混合模式(实体数据存储至 PostgreSQL,时序数据存储至 CnosDB)。

在通过混合模式启动 ThingsBoard 时,需要额外配置时序数据库的部分,以下介绍时序数据库 CnosDB 的相关配置项:

  • cnosdb.host 或环境变量 CNOSDB_HOST - 数据库 JDBC 服务的 IP 和端口号,默认为 127.0.0.1:8904

  • cnosdb.tenant 或环境变量 CNOSDB_TENANT - CnosDB 租户名称,默认为 cnosdb

  • cnosdb.database 或环境变量 CNOSDB_DATABASE - CnosDB 数据库名称,默认为 ThingsBoard

  • cnosdb.user 或环境变量 CNOSDB_USER - CnosDB 用户名。

  • cnosdb.password 或环境变量 CNOSDB_PASSWORD - CnosDB 密码。

配置文件示例:

cnosdb:
  host: 
ThingsBoard 仪表盘中获取遥测数据主要涉及设备数据的采集、存储、查询和可视化配置。以下是一个完整的配置方法和步骤: ### 配置设备连接数据采集 首先确保设备能够通过支持的协议(如 MQTT、CoAP、HTTP 等)将遥测数据发送到 ThingsBoard 平台。以 MQTT 为例,设备可以通过客户端(如 MQTT X)连接到 ThingsBoard,并发布数据到特定的主题(例如 `v1/devices/me/telemetry`)[^1]。 设备发送的遥测数据通常为 JSON 格式,例如: ```json { "temperature": 25.5, "humidity": 60 } ``` ### 数据存储查询 ThingsBoard 支持将遥测数据存储在多种数据库中,包括 PostgreSQL、Cassandra 和 TimescaleDB。系统会自动根据平台配置将数据写入相应的存储后端。用户可以通过 REST API 或 WebSocket 查询特定设备的遥测数据。例如,使用 REST API 查询设备最新遥测值的请求如下: ```http GET /api/plugins/telemetry/DEVICE/{deviceId}/values/timeseries?keys=temperature,humidity ``` 其中 `{deviceId}` 是设备的唯一标识符,`keys` 指定要查询的遥测数据键。 ### 在 Dashboard 中配置数据可视化 在 Dashboard 中展示遥测数据需要创建一个或多个小部件(Widgets),并配置数据源。具体步骤如下: 1. **创建仪表盘**:进入 "Dashboards" 页面,点击 "Add new dashboard" 创建一个新的仪表盘。 2. **添加小部件**:在仪表盘编辑模式下,点击 "Add new widget",选择合适的小部件类型,例如 "Timeseries Chart" 或 "Latest Values"。 3. **配置数据源**:在小部件设置中,选择设备或设备类型,并指定遥测数据键(如 temperature、humidity)。 4. **设置显示选项**:可以调整时间范围、聚合函数(如平均值、最大值等)以及图表样式,以满足可视化需求[^2]。 ### 数据订阅实时更新 为了实现实时数据展示,ThingsBoard 使用 WebSocket 机制订阅数据更新。小部件在加载时会自动订阅相关设备的数据流,当设备发送新的遥测数据时,平台会通过 WebSocket 将更新推送到前端界面,确保仪表盘上的数据实时刷新。 ### 规则引擎告警配置 通过 ThingsBoard 的规则引擎,可以对遥测数据进行进一步处理和分析。例如,可以设置规则来监控温度是否超过阈值,并在触发时发送告警通知。规则可以通过可视化编辑器配置,支持多种操作节点,如发送邮件、触发事件等。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CnosDB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值