TDengine IDMP 应用场景:微电网监控

TDengine IDMP 应用场景:微电网监控

1. 简介

本文以一个含有“风光储”的微电网系统监控为例,详细介绍如何快速地把以 SparkplugB 格式上报的设备数据写入 TDengine TSDB 时序数据库,然后通过 TDengine IDMP 构建资产模型,利用 AI 自动生成可视化面板和实时分析,实现分钟级搭建高效、智能的 微电网 的监控系统。

在这个方案中,TDengine TSDB + TDengine IDMP 的组合能够为您带来四大好处:

  1. 轻松完成数据导入:TDengine IDMP 与 TDengine TSDB 无缝集成,当 SparkplugB 监控数据写入 TSDB 后,能够快速导入 IDMP 并以树形结构的方式展现被监控的设备,设备资产一目了然。
  2. 无问智推,数据自己说话:不用在 TDengine 侧做任何配置,不用脚本,不用提问,IDMP 会基于采集的数据,自动判断为 微电网 监测场景,自动为您推荐面板和实时预警,微电网系统的运行状态尽在掌控之中。
  3. 智能问数,随问随答:不用 SQL,不用任何脚本语言,你只要用自然语言说出感兴趣的数据分析或面板,IDMP 将会自动帮您创建,把数据可视化与分析的使用门槛降为 0。
  4. 如果添加新的被监测的设备,只要配置好 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 服务

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

  1. 浏览器访问 TSDB 实例,点击【数据浏览器】,在数据浏览器页面点击【创建数据库】。
  2. 设置数据库名称为 db_microgrid,完成 DB 创建。

3.3 模拟微电网场景并上报 SparkplugB 数据

本示例将模拟一个工业园区的微电网场景(为便于演示,简化了设备数量和指标数量,实际上可随意扩充)

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

下载 SparkplugB 模拟生成器:spb_pub。目前只支持在 linux 系统中运行,分为 x64 和 arm64 版本下载:

下载适合您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

数据开始上报:

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

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 数据上报成功。

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

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

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

【映射】,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} 时,系统要求【请输入关键字描述】,此处填写 请输入设备编号(正整数)

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

右上角切换至 元素模板 > 光伏逆变器 > 属性面板 ,【新增属性模板】,【名称】填 光伏发电功率,【值类型】选 Double , 【显示的小数位数】2,【计量单位分类】选 体积流量,【默认计量单位】选 立方米每小时,【显示计量单位】选 立方米每小时,【数据引用类型】选 TDengine 指标

在弹出的【数据引用表达式】填写:【连接】boiler-tsdb;【数据库】db_boiler;【源表名称模式】t_PV_Inverter_${KEYWORD1}_solar_pv_output;【列】value

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

说明:

  • 替换字符串 KEYWORD 在具体的元素模板内有效,同个元素模板内如果用到相同 KEYWORD,只需创建一次。
  • 如果是手工新建的元素模板也用到 KEYWORD,必须点【+】显式创建;如果是通过复制元素模板,则不用。
  • 如果一个元素模板里有多个属性,可以复制属性模板,粘贴并编辑得出另一个属性模板。最终得到效果如下:
TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

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

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

说明:

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

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

3.6 创建资产模型

【元素浏览器】->【元素】,按层级依次构建 工业园区 > 微电网,在元素 微电网【新建子元素】光伏发电系统风力发电系统

选择元素 光伏发电系统,【新建子元素】,【模板】选 光伏逆变器,【KEYWORD1】填 1

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

按上述步骤,依次选择不同的元素模板创建出 光伏发电系统风力发电系统 的所有子元素。

在元素 微电网【新建子元素】,选择另外3个元素模板,创建出另外3个设备。最终得到资产模型如下:

TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

在【元素浏览器】中,IDMP 会自动根据资产模型的路径信息,以树形结构的方式展示微电网的监控参数。

3.7 体验 AI 生成面板

  • 在左侧资源浏览器中,点击 工业园区 > 微电网 > 电网接口 元素,通过上方路径导航菜单选择【面板】,跳转至该元素的 AI 推荐面板页面。
  • 等待 AI 生成面板推荐后,您可根据需求进行选择,例如:“过去一小时电网频率和交换功率”,在您感兴趣的面板右上方的菜单中,点击【生成】按钮。等待面板生成后,可以【查看】该面板。
TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

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

3.8 体验 AI 分析

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

  • 退回到分析列表中,即可查看对应的分析。
TDengine IDMP 应用场景:微电网监控 - TDengine Database 时序数据库

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,无需了解多少 微电网 知识,即可轻松掌握 微电网 的运行状态,实时监控和分析 微电网 的工况并采取相应措施。