TDengine极简实战:从采集到入库,从前端到后端,体验物联网设备数据流转

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

数据来源

至于历史数据怎么来,这不是 TDengine 要解决的问题,哈哈,因为一般需用到 TDengine 这种时序数据库的,都是数据量达到了一定程度,数据分析时的效率遇到瓶颈。

由于换工作的原因,无法使用实际的生产数据进行迁移,我这里模拟了历史数据,直接往 TDengine 中写入1亿条记录。

数据源这里使用 Node.js 模拟了一个 MQTT 客户端,当然也可以使用很多 MQTT 客户端工具: HiveMQ , MQTTfx , MQTTX 等。

主要功能

  1. 按区域检索并查看当前区域接入设备的实时数据

  2. 指定区域下设备各项指标的平均值以及数据总量

  3. 查看指定设备的历史数据,可按照时间段检索

  4. 查看指定设备仅1小时内的各项指标的趋势

  5. 导出指定设备的全量数据为Excel文件

技术选型

  • 物联网终端技术:

  • EMQX

  • Node.js

  • 后端技术:

  • SpringBoot

  • TDengine

  • TDengine-alert

  • MyBatisPlus

  • WebSocket

  • HuTool

  • 前端技术:

  • Vue

  • vue-router

  • ElementPlus

  • Layout 响应式布局

  • Cascader 级联选择器

  • Card 卡片

  • Dialog 对话框

  • Table 表格

  • Pagination 分页

  • DateTimePicker 日期时间选择器

  • Message 消息提示

  • Echarts

环境配置

CentOS 7

TDengine 2.2.0.0,两台虚拟机实例集群

EMQX 4.2.4

SpringBoot 2.4.3

Node.js 12.22.6

Vue 3.0

服务组件

2022-01-09-ProjectStructure.jpg

经过这个项目,我加强了对以下技术点的应用与掌握。

  • Node.js模拟MQTT客户端

  • EMQX Webhook消息路由

  • SpringBoot+MyBatisPlus服务端数据ORM

  • TDengine亿级数据存储与查询

  • TDengine-alert与AlertManager报警监控

  • WebSocket实时消息推送

  • Hutool Excel文件导出

  • ECharts数据可视化图表呈现

  • 统一响应封装、全局异常拦截

  • Spring事件与监听

  • MyBatisPlus分页

模拟场景

场景:在两个省份的多个城市、每个城市安装100个设备。

{{“太原”, “大同”, “阳泉”, “长治”, “晋城”, “朔州”, “晋中”, “运城”, “忻州”, “临汾”, “吕梁”},

{“西安”, “铜川”, “宝鸡”, “咸阳”, “渭南”, “延安”, “汉中”, “榆林”, “安康”, “商洛”}};

数据模型设计

根据具体业务,设计超级表与子表。

– ts, 时间戳

– voltage, 电压

– currente, 电流

– temperature, 温度

– sn, 设备序号

– city, 时间戳

– groupid, 分组编号

– 超级表

create stable if not exists iot.power(ts timestamp, voltage int, currente float, temperature float) tags(sn int, city nchar(64), groupid int)

– 子表

create table if not exists iot.device1 using iot.power tags(#{sn}, #{city}, #{groupid})

效果展示

  • WebSocket服务端推送

这里用到了 Node.js 模拟的一个 MQTT 客户端,并通过 EMQXWebHook 插件回调后端服务接口,借助 Spring 的事件机制,实现消息入库与 WebSocket 实时数据更新 ;

2022-01-09-WebSocket.gif

  • TDengine查询效率

总量1亿条记录,分页查询毫无压力,基本都是 ms 级返回结果,这得益于 TDengine 的存储结构设计(其实,底层是分区查询的,扫描的仅是很小一部分数据,所以必须快啊)。

2022-01-09-Query.gif

  • TDengine压缩效率

这可以到 TDengine 的数据目录 data ,其链接目录: /var/lib/taos/vnode ,观察数据的占用空间。

数据查询

模拟历史数据,通过脚本直接往 TDengine 中写入近1亿条记录。

  • 条件查询、聚合查询

select count(1) total, avg(voltage) voltage, avg(currente) currente, avg(temperature) temperature from iot.power where city=‘西安’;

2022-01-09-Conditional.jpg

  • 按时间范围查询

SELECT COUNT(1)

FROM power

WHERE sn = ‘1100’ AND ts BETWEEN ‘1610168956836’ AND ‘1641704956836’;

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

836’;

[外链图片转存中…(img-rVI2f1eI-1715686034937)]
[外链图片转存中…(img-RaYwsGKe-1715686034937)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值