TDengine IDMP 应用场景:电动汽车

TDengine IDMP 应用场景:电动汽车

1. 简介

本文以电动汽车监控为例,详细介绍通过MQTT,轻松采集电动汽车电门开度、驱动电机功率、空调功率、车速、SOC、电池电压/电流等监控指标,将数据写入 TDengine TSDB 时序数据库,然后通过 TDengine IDMP,利用 AI 自动生成可视化面板和实时分析,帮助您几分钟就构建一套稳定、高效的服务器监控解决方案。

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

  • 轻松完成数据导入:TDengine IDMP 与 TDengine TSDB 无缝集成,当监控数据写入 TSDB 后,能够快速导入 IDMP 并以树形结构的方式展现被监控的电动汽车,IT 资产一目了然。
  • 无问智推,数据自己说话:不用在 TDengine 侧做任何配置,不用脚本,不用提问,IDMP 会基于采集的数据,自动判断为 IT 监测场景,自动为您推荐面板和实时预警,服务器的运行状态尽在掌控之中。
  • 智能问数,随问随答:不用 SQL,不用任何脚本语言,你只要用自然语言说出感兴趣的数据分析或监测面板,IDMP 将会自动帮您创建,把数据可视化与分析的使用门槛降为 0;
  • 如果添加新的被监测的电动汽车,只要配置好 MQTT, 在 TDengine 侧不用做任何设置和操作,电动汽车就被自动的加入到监测的对象中,最大程度节省人力。

2. 环境准备

2.1 基础环境

本次 TDengine TSDB 和 IDMP 演示使用 docker 形式进行部署,MQTT 作为演示环境数据源。

具体数据流如下:

TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

2.2 前提条件

3. 配置指南

3.1 快速启动服务

git clone https://github.com/taosdata/tdengine-idmp-deployment.git
  • 使用 Docker Compose 启动 TDengine IDMP,TDengine TSDB,MQTT 服务
cd tdengine-idmp-deployment/examples/electric_vehicle
docker compose up -d
  • 确认服务均已启动
docker compose ps
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

  • 至此,所有服务已成功启动。您可以在浏览器输入 http://localhost:6042 访问 IDMP 服务,输入 http://localhost:6060 访问 TSDB 服务。更多细节请参见 官网文档

说明:TDengine IDMP 服务默认使用 TDengine TSDB 作为其数据源,IDMP 实例会自动创建到上述 TSDB 的连接。

3.2 创建数据写入任务并进行模拟数据写入

3.2.1 创建数据库

  • 浏览器访输入 http://localhost:6060 进入 Explorer 界面,在注册页完成注册
  • 点击【数据浏览器】,在数据浏览器页面点击【创建数据库】。
  • 设置数据库名称为 ev,完成 DB 创建。
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

3.2.2 创建数据写入任务

  • 点击【数据写入】标签,进入任务配置页面,点击 【导入任务】。
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

  • 选择 tdengine-idmp-deployment/examples/electric_vehicle/ev-task.json 文件,在弹出的导入任务对话框中,选择当前任务,选择数据库 ev,点击【确定】。
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

  • 点击启动任务按钮,启动当前任务
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

  • 任务启动成功后,状态显示【运行中】
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

3.2.2 生成模拟数据

  • 进入 ev-mqtt 容器
docker compose exec -it ev-mqtt /bin/sh
  • 启动数据模拟器,发送模拟数据
~ # ./mqtt_pub --schema ev-history.toml --interval 0ms
client_id: mqtt_pub_tool_91ZTZU424w
client_id: mqtt_pub_tool_xbLu82Nolb
client_id: mqtt_pub_tool_X5SdYp8CDb
client_id: mqtt_pub_tool_4Oe00ePc65
client_id: mqtt_pub_tool_RI06X0JbUi
client_id: mqtt_pub_tool_GhHh2ZMp4G
client_id: mqtt_pub_tool_p4F2TdW3X1
client_id: mqtt_pub_tool_8WND7eY2GY
client_id: mqtt_pub_tool_580cvLtSPd
client_id: mqtt_pub_tool_40kd6ebBB6
client_id: mqtt_pub_tool_SP4KjAMa5U
client_id: mqtt_pub_tool_aABIknMB1N
published 10066, speed: 28680/s, avg speed: 402640/s
published 114348, speed: 20957/s, avg speed: 22860/s
published 216489, speed: 20436/s, avg speed: 21647/s
published 300894, speed: 16851/s, avg speed: 20046/s
  • 进入 http://localhost:6060 【数据浏览器】页面,看到电动汽车模拟数据已经生成
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

3.3 初始化 IDMP、体验AI分析

3.3.1 从 TDengine TSDB 导入资产模型与数据

TDengine TSDB 设计之初就考虑了静态标签支持树状结构,层级之间用“.”进行分割。

在本示例中,location 静态标签列被用于存放树状层级关系。

  • 浏览器进入 http://localhost:6042,在注册页完成注册激活
  • 点击用户头像,进入【管理后台】
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

  • 点击【连接】 标签下面的 【TDengine】,点击右侧三个点菜单,选择“数据导入”。
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

  • 从下拉框中选择数据库 ev,将标签 location 在资产模型中设为 路径;其余列全部设为“属性”,将 location 字段重命名为 Electric Vehicle,点击“完成”进行导入。(此处重命名仅仅为了后续展示时的美观)
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

  • 点击【下一个超级表】,点击【忽略】,忽略掉除了【electric_vehicle】外的其它超级表。此处可以给字段进行重命名,在这里我们使用字段的本名进行演示。
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

  • 点击【完成】,开始导入数据。
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

  • 进入【元素浏览器】页面,在左侧资源浏览器中选中 Electric Vehicle ,在右侧选择【通用】
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

3.3.2 体验 AI 生成面板

  • 在左侧资源浏览器中,点击 Electric Vehicle > 北京 > 东城 -> 东华门街道 -> ev-17 元素,通过上方路径导航菜单选择【面板】,跳转至该元素的 AI 推荐面板页面。
  • 等待 AI 生成面板推荐后,您可根据需求进行选择,例如:“过去1天每小时的电池电压不平衡度”,在您感兴趣的面板右上方的菜单中,点击【生成】按钮。等待面板生成后,可以【查看】该面板。
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

  • 面板生成后,您还可以在该面板的详情页面中选择【高级】,查看 AI 创建面板时使用的 SQL 语句:
SELECT _wstart,AVG(`cell_max_voltage` - `cell_min_voltage`) AS `EV_Equipment_Battery_Voltage_Imbalance` FROM `idmp`.`vt_ev-17_569050` WHERE _c0 >= now-1d and _c0 <= now INTERVAL(1h) SLIDING(1h) ;
  • 点击【保存】,即可在下方面板列表中查看 ev-17 元素下对应的面板。
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

3.3.3 体验 AI 分析

  • 在左侧资源浏览器中,点击 Electric Vehicle > 北京 > 东城 -> 东华门街道 -> ev-17 元素,通过上方路径导航菜单选择【分析】,跳转至该元素的 AI 推荐分析页面。
  • 等待 AI 生成分析问题推荐后,您可以根据需求进行选择,例如:“electric_vehicle:ev-17的soc低于20%时,发出次要报警,计算当时平均battery_current,状态窗口”,点击您感兴趣的问题链接,以进入分析编辑页面,点击页面最下方的【保存】。
TDengine IDMP 应用场景:电动汽车 - TDengine Database 时序数据库

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

3.4 停止服务

如果想要停止当前服务,输入以下命令

➤ docker compose down
[+] Running 4/4
 ✔ Container ev-mqtt                  Removed                                                                                                                                                                                                     0.2s
 ✔ Container tdengine-idmp            Removed                                                                                                                                                                                                    10.4s
 ✔ Container tdengine-tsdb            Removed                                                                                                                                                                                                     0.4s
 ✔ Network electric_vehicle_taos_net  Removed

4. 更多

除了容器化部署方式以外,TDengine 还支持 tar 包安装方式,同时还提供云服务。详见:https://idmpdocs.taosdata.com/get-started/

5. 小结

本文以步骤分解的方式,介绍了如何使用 TDengine TSDB + TDengine IDMP 快速搭建一个基于 MQTT 上报数据的 电动汽车监控系统,无需专门的IT技能,搭建过程简洁而高效。日后,如果有新的车辆需要被纳入到监控系统中,无需创建元素,IDMP将自动侦测到新接入的车辆、纳入监控。

搭建整个监控系统的工作几乎都在 MQTT 数据源的准备,无需编写复杂的 SQL 语句,无需脚本和其他配置,无需学习 Grafana,无需了解多少电动汽车知识,即可轻松掌握电动汽车的运行状态,实时监控和分析电动汽车的状态并采取相应措施。