超详细:LoRa物联网系统 软件技术栈完整工作流

最通俗、最清晰、一步不漏的方式讲清楚:
传感器发数据 → 基站 → 服务器 → 数据库 → Web页面展示
整条链路软件到底是怎么跑起来的,你看完就能完全理解整个系统运作原理。
我使用的是:
Python + TCP服务 + 数据库 + Flask Web + 前端实时展示
(轻量、快速、可直接运行)

一、先明确:整套软件由 4 个模块组成

  1. TCP数据接收服务(负责收基站发过来的数据)
  2. 数据解析与校验模块(把16进制数据转成温度/湿度/水平)
  3. 数据库存储模块(把数据永久保存)
  4. Web展示服务(把数据显示在浏览器页面)
这 4 个模块同时运行,构成完整系统。

二、逐模块详细工作流程(超级详细)

1️⃣ TCP数据接收服务(服务器开机就运行)

作用

服务器开启一个端口监听,等待 LoRa 基站主动连接并上传数据。

工作流程

  1. 服务器启动 TCP 服务
    等待 LoRa 基站(TCP 客户端)主动连接
    1. 绑定 IP:0.0.0.0
    2. 监听端口:8888
  2. 基站连接成功 → 建立长连接
  3. 基站每 1 分钟发来一次传感器数据
  4. TCP 服务收到原始 16 进制数据帧
例如:
7E 00 01 00 01 01 15 02 3C 00 05 FF FB 00 7E
  1. 把收到的数据交给解析模块处理

2️⃣ 数据解析模块(核心:把乱码变成真实数据)

作用

把基站发来的 16进制原始帧 解析成:
设备ID、温度、湿度、水平X、水平Y

数据帧格式(固定16字节)

帧头(1) + 设备ID(4) + 温度(2) + 湿度(2) + X轴(2) + Y轴(2) + 校验(1) + 帧尾(1)

解析流程

  1. 校验帧头帧尾
检查是否以 7E 开头、7E 结尾
→ 不是则丢弃
  1. 校验数据合法性
防止乱码、干扰数据
  1. 拆包解析
    1. 设备ID:00010001
    2. 温度:27.5℃
    3. 湿度:58%RH
    4. 水平X:+0.5°
    5. 水平Y:-0.5°
  2. 生成标准数据结构
    {
        "dev_id": "00010001",
        "temp": 27.5,
        "humi": 58.0,
        "level_x": 0.5,
        "level_y": -0.5,
        "time": "2026-03-30 15:30:00"
    }
  3. 把解析好的数据交给数据库模块

3️⃣ 数据库存储流程(永久保存历史数据)

数据库:SQLite3(无需安装,开箱即用)

两张表

  • devices(设备表)
  • sensor_data(数据表)

存储流程

  1. 检查设备ID是否存在
    将解析后的温湿度、水平、时间插入数据表
    1. 不存在 → 自动添加新设备
  2. 存储成功 → 完成一次数据接收流程
  3. 等待下一分钟数据到来
数据库里就会不断积累:
00010001 | 27.5 | 58.0 | 0.5 | -0.5 | 2026-03-30 15:30:00
00010001 | 27.6 | 57.9 | 0.4 | -0.4 | 2026-03-30 15:31:00
00010001 | 27.7 | 57.8 | 0.6 | -0.6 | 2026-03-30 15:32:00

4️⃣ Web展示服务流程(浏览器看数据)

技术栈

  • Flask(后端接口)
  • WebSocket(实时刷新)
  • ECharts(曲线图)
  • HTML页面(展示界面)

工作流程

  1. 启动 Flask Web 服务(端口 5000)
  2. 用户打开浏览器访问:
    http://服务器IP:5000
  3. 前端页面自动请求后端接口:
    后端从数据库读取数据 → 返回给前端
    1. 获取最新实时数据
    2. 获取24小时历史数据
  4. 前端渲染:
    自动刷新(无需按F5)
    1. 实时数据表格
    2. 温度曲线
    3. 湿度曲线
    4. 水平角度曲线
每10秒自动刷新一次数据

三、整条系统数据流(终极完整版)

从传感器 → 网页显示,全过程如下:

第1步:传感器采集(每60秒)

温度 + 湿度 + 水平X/Y → 打包LoRa帧

第2步:LoRa发送

无线发送 → 基站接收

第3步:基站转发

LoRa数据 → 转为TCP数据包 → 以太网发给服务器

第4步:TCP服务接收

服务器端口8888 → 收到16进制数据

第5步:数据解析

转成:设备ID、温度、湿度、水平

第6步:存入数据库

永久保存历史记录

第7步:Web前端读取

页面自动请求接口 → 读取数据库

第8步:浏览器展示

实时数据 + 曲线图 + 在线状态

四、软件运行状态示意图(你一看就懂)


五、这套技术栈最大优势(为什么我推荐它)

  1. 轻量:不占资源,低配电脑也能跑
  2. 稳定:TCP长连接,不丢数据
  3. 简单:Python代码易读、易改、易部署
  4. 快速:10分钟部署完成
  5. 可直接运行:拿到代码就能用
  6. 可扩展:以后能加MQTT、4G、GPS、告警、导出Excel等
posted @ 2026-03-30 15:30  星火撩原  阅读(16)  评论(0)    收藏  举报