Heartsuit
物联网平台架构师,优快云博客专家,阿里云专家博主,PMI认证项目管理专家(PMP),具备物联网、云原生、大数据等领域的研发经验。
展开
-
物联网设备数据流转之告警信息推送:TDengine-alert
前面关于 的使用,我们只涉及到 端与 端,除此之外,官方还有一个报警模块,用以根据用户定义的规则实现近实时的报警监测。从开始到现在,我们一直在喊口号: ,事实上,在这个小项目中任何一个功能都对应一个实际真实存在的需求。既然是监测物联网设备的数据,那么我们的目的肯定是要看看设备的数据是不是有异常,这就对应于这样一个需求:Note: 整理代码时对 进行过一次升级, (2.2.0.0–>2.4.0.16),发现从官网上找不到 相关的信息了,而且 源码仓库关于 的代码也半年多没更新了,不了解是什么原创 2022-06-05 20:48:14 · 2744 阅读 · 4 评论 -
物联网设备数据流转之数据如何实时推送至前端:WebSocket前端接收
在实现 前端接收前,我们先说明白一件事,为什么要使用WebSocket?这要从 协议说起,我们知道 协议只能由客户端发起,而且是短链接,这就会导致我们在服务端拿到最新的数据时,没办法第一时间通知客户端。诸如我们当前涉及物联网设备数据展示的场景,用户一般都会要求看到的设备数据是最新的,这是一个极其正常的需求。那么针对这一简单的需求,我们一般会怎么做?实际项目中,在没接触 前(讲真,在那年少无知的蛮荒时代,我们甚至让用户手动刷新页面,或者前端定时刷新页面以获取最新的设备数据,eg: 1分钟、3分钟、5分原创 2022-06-05 20:40:14 · 5313 阅读 · 0 评论 -
物联网设备数据流转之数据如何实时推送至前端:WebSocket服务端推送
还记得,我们在物联网设备数据流转之实时数据从哪里来、如何转发:Node.js, MQTT, EMQX的WebHook这篇文章中,当 的 收到来自设备的消息时,我们当时只是简单地进行了打印输出,现在我们真正实现实时消息推送。在前面的Spring事件及监听机制一文中我们介绍过:将 中的消息通过 事件发送出去,然后需要定义事件监听者,本项目中有两个监听者:让我们看看设备消息现在到哪里了。通过 或者 实现 的方案有很多,包括:我这里选择了第三方封装好的 ,这样实现起来相对简洁。配置文件新增类原创 2022-06-04 22:17:07 · 2239 阅读 · 1 评论 -
物联网设备数据流转之数据何时存储:Spring事件及监听机制, 数据入库
还记得,我们在物联网设备数据流转之实时数据从哪里来、如何转发:Node.js, MQTT, EMQX的WebHook这篇文章中,当 的 收到来自设备的消息时,我们当时只是简单地进行了打印输出,在我们真正实现实时消息推送前,先完成这样一件事:下面我们先完成 数据存储。让我们看看设备消息现在到哪里了。新建 包,里面再创建 类(继承了 的 类)。WebHook转发EmqxWebhook.java更新 ,先引入 ,然后完成我们之前的 ,添加 发送事件的代码,将 收到消息发布出去。原创 2022-06-04 22:11:28 · 807 阅读 · 0 评论 -
物联网设备数据流转之数据如何导出:Excel文件
背景其实,到现在为止,前面的页面已经实现了对设备数据的展现。这一篇文章中对当前的项目做一个增强: 绘制Echarts 图表展示数据变化趋势; 导出设备数据到Excel,体验TDengine的查询效率;这两个功能的实现均需要前后端配合,完成数据交互,我们先实现后端接口,然后在前端调用。导出Excel图表在实际项目中会遇到各类数据导出的需求,比如将物联网设备数据按照时间范围导出为 Excel 文件以及各种统计结果数据导出为文件的功能。依赖文件 <!--Hutool--&g原创 2022-05-28 22:26:02 · 1539 阅读 · 0 评论 -
物联网设备数据流转之数据如何进行可视化:Echarts图表
背景其实,到现在为止,前面的页面已经实现了对设备数据的展现。这一篇文章中对当前的项目做一个增强: 绘制Echarts 图表展示数据变化趋势; 导出设备数据到Excel,体验TDengine的查询效率;这两个功能的实现均需要前后端配合,完成数据交互,我们先实现后端接口,然后在前端调用。绘制Echarts图表人毕竟是视觉动物,通过图表对数据的可视化人们可以直观发现数据中隐藏的密码;数据技术时代, Echarts 数据可视化将是你的必备技能。测试数据打开 taos 客户端,通过命令行插入以下数原创 2022-05-28 22:21:59 · 1590 阅读 · 3 评论 -
物联网设备数据流转之前后端数据交互与展示:Layout, Cascader, Card, Dialog, Table, Pagination
背景搭建好前端服务框架后,我们可以在框架以及上一篇搭建的脚手架上着手进行前端页面的设计实现以及服务端接口对接。从跟各位读者的交流过程中我发现,大家其实是被我实现的那个简单的前端页面给吸引了,因为人毕竟是视觉动物,人们还是习惯从直观的事物上快速获取信息。如果你是一名后端工程师,每天就是写一堆接口,无法向其他人来进行生动形象地展示,这也是我建议每个后端工程师都稍微接触下前端技术的原因。关于前端,我曾经做过几个简单的小项目,为简化难度,除了 Loading 加载组件与 Echarts 图表组件作为独立的组件外原创 2022-05-22 10:36:19 · 805 阅读 · 0 评论 -
物联网设备数据流转之搭建前端服务框架:Vue3.0, ElementPlus, Axios, Echarts
背景有了后端服务接口,我们就要开始前端项目搭建啦,终于可以看到展示物联网设备数据的页面了。这篇文章搭建基于最新版 Vue 3.2.13 、 ElementPlus 2.1.9 的极简前端脚手架,方便后续快速验证想法以及项目实施。涉及到的技术及组件有: Vue 3.2.13 , ElementPlus 2.1.9 , axios 0.26.1 , vue-router 4.0.3 , Echarts 5.3.2 。Note:前提需要有 Node.js 环境,可使用 nvm 进行 Node.js 的多原创 2022-05-22 10:22:18 · 2990 阅读 · 0 评论 -
物联网设备数据流转之数据如何查询:TDengine条件查询, 聚合查询, 分页查询, TopN查询, 降采样
背景这篇文章基于我们搭建好的后端脚手架,实现后端核心的查询接口,并详细介绍 TDengine 的高级查询功能:海量数据的条件查询、按时间范围查询、聚合查询、分页查询、TopN查询、降采样。根据业务需求,我们涉及以下查询接口。分页查询条件查询:查询传入设备组的最新数据条件、聚合查询:查询指定城市的数据量,数据指标:电压、电流、温度平均值分页、条件查询:查询传入设备在指定时间范围内的数据TopN查询:见/power/select接口,实际未使用降采样:将在Echarts数据可视化一节中实现编原创 2022-05-21 20:29:08 · 4072 阅读 · 0 评论 -
物联网设备数据流转之数据如何存储:TDengine集成SpringBoot, MyBatisPlus实现ORM与CRUD
背景这篇文章我们重点实现 SpringBoot 与 MyBatisPlus 、 TDengine 的集成,完成 ORM 以及 CRUD 。我们通常说的数据表 CRUD (Create, Retrieve, Update, Delete),这里仅涉及到了插入与查询,为什么?因为 TDengine 甚至都用不到我们自己在程序中进行更新、删除操作(可以在建库时设置更新、删除配置),所以重点就是查询啦,这里先体验基础查询,下一篇文章详细介绍高级查询功能:海量数据的条件查询、按时间范围查询、聚合查询、分页查询、To原创 2022-05-21 20:21:14 · 3002 阅读 · 3 评论 -
物联网设备数据流转之搭建后端服务框架:SpringBoot统一响应封装,全局异常拦截
背景本篇内容相对比较简单,不涉及具体的物联网技术,是作为后端工程师的基本操作,算是对基础框架的封装工作,我们使用 SpringBoot 的 RestControllerAdvice 与 ExceptionHandler 等注解实现对客户端请求响应的统一封装以及异常信息拦截封装。为了保证我们前端在对接服务接口时采用统一的规范,业界主流的做法便是将所有请求的结果进行封装,当然在遇到异常信息时也进行一层封装,这样可以使所有接口的响应结构是一致的,响应体的内容包括状态码与数据,当出现错误时还包含错误信息,一般地原创 2022-05-15 20:45:09 · 1065 阅读 · 1 评论 -
物联网设备数据流转之实时数据从哪里来、如何转发:Node.js, MQTT, EMQX的WebHook
背景前面两篇是搭建环境,从这一篇起就要真正开始我们的项目实现了,来,再一起喊下我们的口号:人至践则无敌。本篇文章来重点体验下 EMQX 为我们提供的 WebHook 功能。我们用到了以下技术点:EMQX 的 WebHook 消息监听与转发功能;使用 Node.js 模拟了一个 MQTT 客户端;使用 SpringBoot 搭建后端服务回调接口;让我们看看设备消息现在到哪里了(红色背景部分)。配置WebHook# 养成好习惯,修改配置文件前先备份[root@iot1 emqx]#原创 2022-05-15 20:40:03 · 1932 阅读 · 0 评论 -
物联网设备数据流转之搭建环境:开源高性能分布式支持SQL的时序数据库TDengine
背景我们的项目涉及物联网相关业务,由于一开始的年少无知,传感器数据采用了 MySQL 进行存储,经过近两年的数据累积,目前几个核心表,单表数据已过亿,虽然通过索引优化、 SQL 优化以及读写分离等措施,勉强满足基本的查询,能在秒级给出数据;但是一方面当前 MySQL 数据表索引的大小甚至超过了数据大小,这样下去肯定不行;另一方面来自于前端感知设备的数据量还在持续增加,当面对用户多维度的统计需求,在实现上、效率上总是那么不尽如人意。。大概是2021年的6月份,一次偶然的机会,我在一个技术交流群中了解到涛思原创 2022-05-15 20:32:27 · 807 阅读 · 0 评论 -
物联网设备数据流转之搭建环境:开源云原生分布式物联网MQTT消息服务器EMQX
背景EMQX Broker 一开始的定位就是物联网消息中间件,目前开源版本功能已经非常强大,而企业版本与Cloud版本更是提供了高阶功能,全托管、更稳定、更可靠,技术支持更及时。开源版的 EMQX Broker 除了全面支持 MQTT5 新特性、多协议支持外,更强大的地方在于其围绕 MQTT 周边提供了一系列的 WebHook 、 HTTP API 接口以及最为核心的规则引擎。这篇文章先完成 EMQX 的安装、运行以及简单体验,在接下来的实践项目中仅用到了其设备接入、 WebHook 功能。系统环境原创 2022-05-15 20:23:44 · 1949 阅读 · 2 评论 -
物联网设备数据是如何流转的:基于EMQX与TDengine的前后端分离项目实践
背景在我写了TDengine极简实战:从采集到入库,从前端到后端,体验物联网设备数据流转这篇文章后,不少读者朋友评论、私信说可不可以提供代码参考学习下,那必须是可以的。那篇文章主要介绍了数据采集、数据传输、数据转发、数据解析、数据存储、数据查询、数据呈现、数据导出、消息推送的物联网设备数据流程过程,作为体验 TDengine 的极简实战项目,没引入过多的业务设计(复杂功能)以及异步解耦设计(消息中间件)。在整理代码的过程中,我发现虽然整个项目并不复杂,但是涉及到的技术点较多,有必要对关键的组件进行说明原创 2022-04-17 22:09:10 · 8961 阅读 · 8 评论