收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事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
服务组件
经过这个项目,我加强了对以下技术点的应用与掌握。
-
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
客户端,并通过 EMQX
的 WebHook
插件回调后端服务接口,借助 Spring
的事件机制,实现消息入库与 WebSocket
实时数据更新 ;
- TDengine查询效率
总量1亿条记录,分页查询毫无压力,基本都是 ms
级返回结果,这得益于 TDengine
的存储结构设计(其实,底层是分区查询的,扫描的仅是很小一部分数据,所以必须快啊)。
- 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=‘西安’;
- 按时间范围查询
SELECT COUNT(1)
FROM power
WHERE sn = ‘1100’ AND ts BETWEEN ‘1610168956836’ AND ‘1641704956836’;
- 分页查询
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;
- 降采样
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);
小总结
这个玩具项目,基于 TDengine 2.2.0.0
、 EMQX 4.2.4
、 SpringBoot 2.4.3
、 Node.js 12.22.6
、 Vue 3.0
完成物联网设备数据的采集、转发、存储与展现。其中关于 TDengine
的查询性能相当亮眼:海量数据的条件查询、按时间范围查询、聚合查询、分页查询、TopN查询、降采样等基本都是毫秒级便给出结果;除此之外,采用两个虚拟机实例的极简集群实现 TDengine
快速扩展。更多详情可参考以下快速上手系列(#.#)
快速上手系列
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
插件]( )
[外链图片转存中…(img-8g0iBdhk-1715685996143)]
[外链图片转存中…(img-aEJ43OaN-1715685996143)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新