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

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

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

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 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’;

2022-01-09-TimeRange.jpg

  • 分页查询

SELECT ts,voltage,currente,temperature,sn,city,groupid

FROM power

WHERE sn = ‘1100’ AND ts BETWEEN ‘1610168956836’ AND ‘1641704956836’ ORDER BY ts DESC

LIMIT 10 offset 50;

2022-01-09-Page.jpg

  • 降采样

Echarts 的图表展示,用到了 TDengine 的降采样功能,完成插值,体现数据变化趋势。

select last(voltage) voltage, last(currente) currente, last(temperature) temperature

FROM iot.power

WHERE sn = ‘1101’ and ts > ‘2021-09-07 09:15:11.138’ and ts < ‘2021-09-07 10:15:11.138’ interval(60s) fill(value, 0);

2022-01-09-DownSampling.jpg

小总结

这个玩具项目,基于 TDengine 2.2.0.0EMQX 4.2.4SpringBoot 2.4.3Node.js 12.22.6Vue 3.0 完成物联网设备数据的采集、转发、存储与展现。其中关于 TDengine 的查询性能相当亮眼:海量数据的条件查询、按时间范围查询、聚合查询、分页查询、TopN查询、降采样等基本都是毫秒级便给出结果;除此之外,采用两个虚拟机实例的极简集群实现 TDengine 快速扩展。更多详情可参考以下快速上手系列(#.#)

快速上手系列

img
img

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

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

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

插件]( )

[外链图片转存中…(img-8g0iBdhk-1715685996143)]
[外链图片转存中…(img-aEJ43OaN-1715685996143)]

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值