IoT数据采集全链路
工地上有一台塔机起重机上面装了一个传感器盒子每隔几秒钟就把当前的高度、重量、风速、倾斜角度等数据发出来。问题是——这些数据怎么从工地上的铁疙瘩最终变成网页上能看到的图表这就是 IoT 数据采集链路要干的事。链路图第一步设备发数据工地上的塔机和升降机上面装了传感器和通信模块。设备每隔几秒钟就把当前的状态数据高度、重量、风速、倾斜角度等通过 4G 网络发出去。这些数据发到哪呢发到一个叫EMQX的消息中转站。第二步EMQX 消息中转站EMQX 是一个开源的 MQTT 服务器可以理解成一个快递分拣中心。所有设备发来的数据都先到这里然后按照主题分类。主题长这样crane/rt/equip/厂商/项目/用户/设备编号crane/开头 塔机数据lift/开头 升降机数据rt/equip/ 实时运行数据st/equip/ 静态参数设备型号之类的rt/operator/ 操作人员信息代码里用通配符crane/////订阅所有塔机主题意思是不管哪台塔机、哪个工地的只要是 crane 开头的我都收。第三步消息回调——按主题分发项目启动时会连接 EMQX并注册一个回调函数MqttPushCallback。每当有新消息到达EMQX 就会自动调用这个回调函数的messageArrived方法。回调函数做的事情很简单看主题里含什么关键词就调哪个处理方法。主题含 crane/rt/equip/ → 处理塔机实时数据 主题含 lift/rt/equip/ → 处理升降机实时数据 主题含 st/equip/ → 更新设备静态参数 主题含 rt/operator/ → 更新操作人员信息如果处理出错了还有个错误重推机制把失败的消息重新塞回去再试一次。第四步协议解析——把乱码变成结构化数据这里有个现实问题不同厂家的设备发出来的数据格式完全不一样。比如嘉联厂家的塔机字段叫serialNumber、height、loadWeight建安厂家的塔机同样的信息字段叫devsn、height还要乘以 10、weight还要乘以 1000因为单位不同。所以写了AnalysisTerminalDataUtil针对嘉联和建安两个厂商各写了一套解析方法。不管原始格式怎么乱解析完都统一成同一个TerminalTowerData对象。最巧妙的是报警状态的解析。嘉联升降机用一个systemStatus字段存了 16 种报警状态每一位代表一种第1位 1 → 重量预警 第2位 1 → 重量报警 第3位 1 → 高度预警 第4位 1 → 高度报警 ...代码用state 1、state 4这种位运算从一个数字里拆出 16 种报警。一个字段当好几个字段用非常省空间。第五步缓冲队列——攒够一批再入库最亮的设计这是整个链路最聪明的地方。塔机每几秒发一条数据如果每来一条就往数据库写一次假设 1000 台设备同时在线每秒就是几百条 INSERT数据库扛不住。正确的做法是数据先扔进一个队列ArrayBlockingQueue攒着攒够 limitNumber 条配置的批量大小一次性批量写入数据库。数据来了 → 放进队列 → 队列满了吗 ├ 没满 → 继续等 └ 满了 → 一次性批量写入但还有个问题如果数据量小队列一直不满数据岂不是一直卡在队列里所以加了个定时兜底每 10 分钟强制把队列里剩余的数据刷进数据库不管满没满。这样保证了数据最多延迟 10 分钟入库不会丢。第六步Redis 在线检测——不用查数据库就知道设备在不在线传统做法是定时去数据库查每个设备最后上报数据的时间超过一定时间没上报就标记为离线。设备多了这个查询很慢。更聪明的做法是每收到一条数据就在 Redis 里刷新一个 key设 600 秒过期。设备一直在发数据 → key 一直被刷新 → 一直不过期 → 在线设备坏了不发数据了 → key 600 秒后自动过期 → 离线不用写任何定时任务去轮询Redis 自己的过期机制就帮你搞定了。而且 key 过期前如果设备恢复发数据还能自动改回在线状态。第七步双数据库存储数据最终存到两个地方MySQL存实时数据 业务数据设备信息、项目信息等TDengine专门存历史运行数据为什么要用两个数据库MySQL 查最近一条数据没问题但如果你要查过去一个月某台塔机每分钟的高度变化那是几十万条记录MySQL 查起来很慢。TDengine 是专门为时序数据设计的查这种历史趋势又快又省空间。代码里用DS(tdengine)注解一行代码就能切换到 TDengine 数据源查询。

相关新闻

Flutter RTL布局适配:circular_bottom_navigation右到左界面实现指南

Flutter RTL布局适配:circular_bottom_navigation右到左界面实现指南

Flutter RTL布局适配:circular_bottom_navigation右到左界面实现指南 【免费下载链接】circular_bottom_navigation Circular bottom navigation is a bottom navigation library for flutter with circular indicator and cool animations. 项目地址: https://gi…

2026/10/18 8:06:54 阅读更多 →
阿里巴巴Dragonwell17 JDK架构深度解析:企业级Java运行环境的性能突破

阿里巴巴Dragonwell17 JDK架构深度解析:企业级Java运行环境的性能突破

阿里巴巴Dragonwell17 JDK架构深度解析:企业级Java运行环境的性能突破 【免费下载链接】dragonwell17 Alibaba Dragonwell17 JDK 项目地址: https://gitcode.com/gh_mirrors/dr/dragonwell17 阿里巴巴Dragonwell17作为基于OpenJDK深度优化的企业级Java运行环…

2026/10/18 8:07:52 阅读更多 →
EMANet核心突破:期望最大化注意力机制(EMA)如何超越传统自注意力?

EMANet核心突破:期望最大化注意力机制(EMA)如何超越传统自注意力?

EMANet核心突破:期望最大化注意力机制(EMA)如何超越传统自注意力? 【免费下载链接】EMANet The code for Expectation-Maximization Attention Networks for Semantic Segmentation (ICCV2019 Oral) 项目地址: https://gitcode.…

2026/10/18 8:07:55 阅读更多 →

最新新闻

XAMPP本地开发环境搭建与配置避坑指南

XAMPP本地开发环境搭建与配置避坑指南

1. 为什么本地开发环境值得反复折腾刚入行那会儿,我最怕的不是写代码,而是配环境。一个项目跑不起来,排查半天发现是 PHP 版本对不上、MySQL 端口被占用、Apache 模块没开——这种坑踩一次记一辈子。后来带新人,发现大家卡的地方几…

2026/10/19 16:24:58 阅读更多 →
板式家具下料算法:二维排样优化与Qt工程实现

板式家具下料算法:二维排样优化与Qt工程实现

简介:本资源是一套基于Qt框架实现的板式家具智能下料算法实践项目,面向家具制造行业工程师、工业优化算法学习者及C/GUI开发初学者,聚焦板材利用率提升这一核心生产痛点。压缩包共62个文件,含8个cpp与7个h源码文件构成核心算法逻辑…

2026/10/19 16:24:58 阅读更多 →
CMake找不到Boost库?一文详解FindBoost报错排查与解决

CMake找不到Boost库?一文详解FindBoost报错排查与解决

1. 问题背景与核心症结拆解1.1 这个报错到底在说什么但凡在C项目里用过CMake搭配Boost库的人,大概率都见过这个让人血压升高的报错:CMake Error at /usr/share/cmake-3.22/Modules/FindBoost.cmake:1968 (message):Unable to find the requested Boost l…

2026/10/19 16:24:58 阅读更多 →
OSPF实战配置指南:从原理到单区域/多区域部署与排障

OSPF实战配置指南:从原理到单区域/多区域部署与排障

做运维这些年,我越来越觉得路由协议是一道绕不过去的坎。网络小的时候,一台核心加几台接入,手工静态路由完全够用;但业务一扩张、链路一冗余、网段一多,静态路由表就变成维护噩梦。我第一次认认真真研究OSPF配置&#…

2026/10/19 16:24:58 阅读更多 →
AI Agent运行时实战:Hermes Agent部署、工具调用与调优避坑

AI Agent运行时实战:Hermes Agent部署、工具调用与调优避坑

1. 先说清楚它是什么:一个偏向“任务执行”的自主Agent运行时1.1 它和我日常用的聊天机器人有什么不同最近复盘手头一个自动化项目时,我又把Hermes Agent翻出来重新跑了一遍。说实话,第一次接触它的时候我以为是又一个对话机器人包装壳——输…

2026/10/19 16:24:58 阅读更多 →
AI多模态新玩法:从看图到作曲,一键生成专属BGM

AI多模态新玩法:从看图到作曲,一键生成专属BGM

谷歌Gemini学会了看图作曲,你的朋友圈也能拥有专属BGM了这几天圈子里最热的话题,莫过于某科技巨头旗下那个多模态模型新学会的本事:看图作曲。说白了,就是你把一张照片丢给它,它能根据画面里的元素、情绪、光线&#x…

2026/10/19 16:23:53 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →