1. 简介
本文以一个含有“风光储”的微电网系统监控为例,详细介绍如何快速地把以 SparkplugB 格式上报的设备数据写入 TDengine TSDB 时序数据库,然后通过 TDengine IDMP 构建资产模型,利用 AI 自动生成可视化面板和实时分析,实现分钟级搭建高效、智能的 微电网 的监控系统。
在这个方案中,TDengine TSDB + TDengine IDMP 的组合能够为您带来四大好处:
- 轻松完成数据导入:TDengine IDMP 与 TDengine TSDB 无缝集成,当 SparkplugB 监控数据写入 TSDB 后,能够快速导入 IDMP 并以树形结构的方式展现被监控的设备,设备资产一目了然。
- 无问智推,数据自己说话:不用在 TDengine 侧做任何配置,不用脚本,不用提问,IDMP 会基于采集的数据,自动判断为 微电网 监测场景,自动为您推荐面板和实时预警,微电网系统的运行状态尽在掌控之中。
- 智能问数,随问随答:不用 SQL,不用任何脚本语言,你只要用自然语言说出感兴趣的数据分析或面板,IDMP 将会自动帮您创建,把数据可视化与分析的使用门槛降为 0。
- 如果添加新的被监测的设备,只要配置好 SparkplugB 数据源,在 TDengine 侧不用做任何设置和操作,设备就被自动的加入到监测的对象中,最大程度节省人力。
2. 前提条件
- 已安装 Docker 和 Docker Compose。本示例采用 Docker Compose 方式快速部署 TDengine IDMP 服务。
- 被监控的设备上报的 SparkplugB 格式的数据。为便于演示,本示例使用
SparkplugB 模拟生成器
模拟某工业园区微电网的场景。 - MQTT Broker 已具备。本示例的 MQTT Broker 部署在宿主机,地址:
192.168.157.1:1883
,请根据您自己的环境替换。
3. 配置指南
3.1 快速启动 TDengine IDMP 服务
- 克隆 tdengine-idmp-deployment 仓库
git clone https://github.com/taosdata/tdengine-idmp-deployment.git
- 使用 Docker Compose 启动 TDengine IDMP。该命令会自动拉取所需镜像(如本地不存在),并以后台模式启动 TDengine IDMP 服务和 TDengine TSDB 服务。
cd tdengine-idmp-deployment/docker
docker compose up -d
- 至此,TDengine IDMP 服务已成功启动。您可以在浏览器输入
http://ip:6042
访问 IDMP 服务,输入http://ip:6060
访问 TSDB 服务。更多细节请参见 官网文档。
说明:TDengine IDMP 服务默认使用 TDengine TSDB 作为其数据源,IDMP 实例会自动创建到上述 TSDB 的连接。
3.2 在 TSDB 实例创建 DB
- 浏览器访问 TSDB 实例,点击【数据浏览器】,在数据浏览器页面点击【创建数据库】。
- 设置数据库名称为 db_microgrid,完成 DB 创建。
3.3 模拟微电网场景并上报 SparkplugB 数据
本示例将模拟一个工业园区的微电网场景(为便于演示,简化了设备数量和指标数量,实际上可随意扩充)

下载 SparkplugB 模拟生成器:spb_pub
。目前只支持在 linux 系统中运行,分为 x64 和 arm64 版本下载:
- https://downloads.taosdata.com/tools/spb-pub/1.11.0/spb_pub-x86_64.tar.gz
- https://downloads.taosdata.com/tools/spb-pub/1.11.0/spb_pub-arm64.tar.gz
下载适合您CPU架构的压缩包文件。如果宿主机不是 linux 系统,建议把 压缩包文件 复制到容器 tdengine
中运行(容器名称也可能是 tdengine-tsdb
,请根据实际环境替换)。
# 从宿主机复制压缩包文件(假设是spb_pub-x86_64.tar.gz)到容器
docker cp spb_pub-x86_64.tar.gz tdengine:/root
# 进入容器内
docker exec -it tdengine /bin/bash
# 在容器内,解压缩工具
tar -zxvf spb_pub-x86_64.tar.gz
按照 README.md 的说明,模拟本示例场景构建出新的配置文件,在 spb_pub 目录下放置:microgrid.toml
运行 SparkplugB 模拟生成器,发布到 MQTT Broker:
cd /root/spb_pub
./spb_pub --schema microgrid.toml --host 192.168.157.1
数据开始上报:

3.4 零代码写入数据到 TSDB
浏览器访问 TSDB 实例,创建 SparkplugB 数据写入任务。
创建数据写入任务 DataIn_Microgrid
,类型为 SparkplugB
,目标数据库选 db_microgrid
,Brokers 填写地址 192.168.157.1:1883
,客户端 ID 按要求填写一个,【检查连通性】,确保提示 数据源可用
。
【订阅配置】中,Group ID 填写 Industrial_Park
,节点/设备列表 填写 Micro_Grid/PV_Inverter_1,Micro_Grid/PV_Inverter_2,Micro_Grid/Wind_Turbine_1,Micro_Grid/Wind_Turbine_2,Micro_Grid/Battery_1,Micro_Grid/Env_Sensor_1,Micro_Grid/Grid_Interface_1
,消息类型填写 DBIRTH,DDATA
,下发 REBIRTH 命令 为 true
。
【从服务器检索】,如果出现 Payload 示例数据并能正常解析,说明 SparkplugB 数据上报成功。


【创建超级表】stb_microgrid,如下图:


【映射】,SubTableName 一般填写 t_{group_id}_{edge_node_id}_{device_id}_{name}
,但因本示例中 group_id 和 edge_node_id 都是仅有一个值,因此简化写为:t_{device_id}_{name}
【提交】成功,【查看】任务状态。显示系统已自动创建表并写入数据。
3.5 在 IDMP 中创建元素模板
浏览器访问 IDMP 实例,激活。创建元素模板及元素,将 TDengine TSDB 的数据加载至 TDengine IDMP。
首先创建元素模板。
【基础库】->【元素模板】->【新建元素模板】,【模板名称】填 光伏逆变器
,【元素命名模式】为 模板名称
即 ${Template#name}${KEYWORD1}
,【保存】
首次添加 ${KEYWORD1}
时,系统要求【请输入关键字描述】,此处填写 请输入设备编号(正整数)


右上角切换至 元素模板 > 光伏逆变器 > 属性面板
,【新增属性模板】,【名称】填 光伏发电功率
,【值类型】选 Double
, 【显示的小数位数】2
,【计量单位分类】选 体积流量
,【默认计量单位】选 立方米每小时
,【显示计量单位】选 立方米每小时
,【数据引用类型】选 TDengine 指标
在弹出的【数据引用表达式】填写:【连接】boiler-tsdb
;【数据库】db_boiler
;【源表名称模式】t_PV_Inverter_${KEYWORD1}_solar_pv_output
;【列】value


说明:
- 替换字符串 KEYWORD 在具体的元素模板内有效,同个元素模板内如果用到相同 KEYWORD,只需创建一次。
- 如果是手工新建的元素模板也用到 KEYWORD,必须点【+】显式创建;如果是通过复制元素模板,则不用。
- 如果一个元素模板里有多个属性,可以复制属性模板,粘贴并编辑得出另一个属性模板。最终得到效果如下:

按照上述方法,创建出所有5个元素模板。完整的配置过程参见:微电网_元素模板.csv

说明:
- 属性模板可以跨元素模板复制粘贴,但每个元素模板里都需要建自己的 KEYWORD。
- IDMP 已内置了各种计量单位,如有需要扩展的,可在【基础库】->【计量单位】里扩展。本示例中,添加了计量单位类型
功率密度
,扩展了计量单位W/㎡
用在太阳辐照强度
;扩展了计量单位hPa
用在大气压力
。


3.6 创建资产模型
【元素浏览器】->【元素】,按层级依次构建 工业园区 > 微电网
,在元素 微电网
【新建子元素】光伏发电系统
和 风力发电系统
。
选择元素 光伏发电系统
,【新建子元素】,【模板】选 光伏逆变器
,【KEYWORD1】填 1

按上述步骤,依次选择不同的元素模板创建出 光伏发电系统
和 风力发电系统
的所有子元素。
在元素 微电网
【新建子元素】,选择另外3个元素模板,创建出另外3个设备。最终得到资产模型如下:

在【元素浏览器】中,IDMP 会自动根据资产模型的路径信息,以树形结构的方式展示微电网的监控参数。
3.7 体验 AI 生成面板
- 在左侧资源浏览器中,点击
工业园区 > 微电网 > 电网接口
元素,通过上方路径导航菜单选择【面板】,跳转至该元素的 AI 推荐面板页面。 - 等待 AI 生成面板推荐后,您可根据需求进行选择,例如:“过去一小时电网频率和交换功率”,在您感兴趣的面板右上方的菜单中,点击【生成】按钮。等待面板生成后,可以【查看】该面板。

- 面板生成后,您还可以在该面板的详情页面中选择【高级】,查看 AI 创建面板时使用的 SQL 语句:
SELECT _wstart,AVG(`电网频率`) AS `电网频率`,AVG(`交换功率`) AS `交换功率`
FROM `idmp`.`vt_电网接口_411057`
WHERE _c0 >= now-1h and _c0 <= now INTERVAL(1m)
- 点击【保存】,即可在下方面板列表中查看
电网接口
元素下对应的面板。

3.8 体验 AI 分析
- 在左侧资源浏览器中,点击
工业园区 > 微电网 > 风力发电系统
元素,通过上方路径导航菜单选择【分析】,跳转至该元素的 AI 推荐分析页面。 - 等待 AI 生成分析问题推荐后,您可以根据需求进行选择,例如:“风力发电系统的风力发电机超过5分钟没有数据传输,则发出警告报警,记录最后一条的风力发电功率,会话窗口。”,点击您感兴趣的问题链接,以进入分析编辑页面,点击页面最下方的【保存】。

- 退回到分析列表中,即可查看对应的分析。

4. 更多
除了使用 Docker/Dcoker Compose 以外,TDengine 还支持其他部署方式。为了简化部署,我们提供了 Ansible, Helm 等多种部署方式,详见:https://github.com/taosdata/tdengine-idmp-deployment;另外还提供云服务。
5. 小结
本文以 Step by Step 的方式,介绍了如何使用 TDengine TSDB + TDengine IDMP 快速搭建一个以 SparkPlugB 格式上报数据的 微电网 监控系统。以往需要几天、甚至几周,并进行繁琐的配置、调试才能搭建起来的系统,使用 TDengine IDMP 后,30分钟内即可搞定。日后,如果有新的设备需要被纳入到监控系统中,只需选择元素模板创建元素即可。如果监控的点位有变更或新增,仅需更新元素模板里相应的属性模板即可,无需操作其他地方。
搭建整个监控系统的工作几乎都在 SparkPlugB 数据源的准备 以及 构建资产模型,无需编写复杂的 SQL 语句,无需脚本和其他配置,无需学习 Grafana,无需了解多少 微电网 知识,即可轻松掌握 微电网 的运行状态,实时监控和分析 微电网 的工况并采取相应措施。