lora+mqtt的使用
LoRa 基站 → MQTT Broker → 后端服务 这一段(IP 网络段)。
一、整体角色对应关系
| 你的架构层 | 实际设备 / 软件 | MQTT 中的角色 |
|---|---|---|
| 感知层 | 采集器(传感器 + LoRa 模组) | 只通过 LoRa 发数据 |
| 网络层 | LoRa 模组 → LoRa 基站 | 无线传输,不识别 MQTT |
| 服务器层 | LoRa 基站(有网口) + MQTT Broker(如 Mosquitto) | 基站收到 LoRa 数据后 转为 MQTT 发布者 |
| 应用层 | 后端服务(订阅 MQTT + 存数据库) | MQTT 订阅者 + 入库程序 |
| 终端电脑 | 浏览器 + AJAX + 后端 API | 不参与 MQTT,只 HTTP 访问 |
二、一步一步详细过程(从设备到屏幕)
第 0 步:提前配置好(只做一次)
-
LoRa 基站配置:收到 LoRa 数据后,转发给本地 MQTT Broker(地址 127.0.0.1,主题比如
sensor/temperature)。 -
后端服务启动时,主动去连接同一个 MQTT Broker,订阅
sensor/#主题。 -
后端服务同时启动 HTTP API(比如
http://服务器IP:8080/api/latest)。 -
数据库建好表
sensor_data(时间、设备ID、温度、湿度等)。
第 1 步:感知层采集数据
采集器(比如温湿度传感器 + LoRa 模组):
-
每隔 10 秒读一次温度:25.3°C。
-
将数据打包成 很小的 LoRa 载荷(比如
25.3)。 -
通过 LoRa 模组 无线发出,不包含 IP、不包含 MQTT。
⚠️ LoRa 不懂 MQTT,它只负责“喊一嗓子”。
第 2 步:网络层无线传输
LoRa 模组 → 空口无线 → LoRa 基站
-
基站收到无线电信号:
25.3+ 设备 ID。 -
此时还在 无 IP 的 LoRa 域,没有 MQTT。
第 3 步:LoRa 基站 → 转化为 MQTT(关键桥梁)
LoRa 基站具备 以太网(或 4G) + 内部逻辑:
-
解析 LoRa 载荷:设备
A001,温度25.3。 -
基站 主动作为 MQTT 发布者,向内部或云端的 MQTT Broker 发布消息:
-
Broker 地址:
192.168.1.100 -
主题:
lorawan/devices/A001/temperature -
QoS:1
-
消息体:
{"value": 25.3, "ts": "2026-05-25T10:00:00Z"}
-
-
通过 以太网 发出去。
✅ 从这里开始,MQTT 正式登场:LoRa 基站 = 第一个 MQTT 发布者。
第 4 步:MQTT Broker 路由
MQTT Broker(比如运行在服务器上):
-
收到主题
lorawan/devices/A001/temperature的消息。 -
查找哪些客户端订阅了这个主题(或通配符
#)。
此时订阅者是谁? → 你的 后端服务。
第 5 步:后端服务(应用层)通过 MQTT 接收
后端服务(Java / Python / Node.js 等):
-
启动时已订阅
lorawan/# -
Broker 把消息推送给后端服务
-
后端服务收到 JSON:
{"value": 25.3, "ts": "2026-05-25T10:00:00Z", "device": "A001"}
后端服务立即做两件事:
-
存入数据库(MySQL/PostgreSQL) →
INSERT INTO sensor_data VALUES (…) -
更新内存/Redis 最新值(可选,给 AJAX 用)
🔁 MQTT 的使命到此结束:完成从基站 → 后端 的实时、解耦传输。
第 6 步:后端提供 HTTP API(AJAX 调用)
后端额外启动一个 Web 服务(监听 0.0.0.0:8080):
-
接口示例:
GET /api/latest→ 返回数据库最新一条数据GET /api/history?hours=24→ 返回最近 24 小时数据
这一步与 MQTT 无关,是传统的 HTTP。
第 7 步:终端电脑浏览器访问
用户在电脑浏览器输入: http://服务器IP:8080
-
浏览器加载 HTML + JS 页面。
-
页面中的 JavaScript 执行 AJAX 请求:
fetch("http://服务器IP:8080/api/latest")
.then(res => res.json())
.then(data => 更新网页表格/图表) -
后端返回:
{"device":"A001","temperature":25.3,"time":"2026-05-25T10:00:00Z"} -
浏览器动态展示温度。
三、完整链路图(文字版)
[采集器]
↓ LoRa 无线
[LoRa 基站]
↓ 转换为 MQTT(发布)
[MQTT Broker](服务器上)
↓ 转发给订阅者
[后端服务](订阅 MQTT)
↓ 存入 DB
[数据库]
↑ HTTP + AJAX
[浏览器]
四、明确回答你的一句话总结
MQTT 只负责 LoRa 基站 → 后端服务 这一段实时传输,起到解耦和轻量的作用; 感知层到 LoRa 基站 用的是 LoRa 协议,没有 MQTT; 终端电脑到服务器 用的是 HTTP + AJAX,与 MQTT 无关。 整个系统是:LoRa + MQTT + HTTP 三层协议混合。

浙公网安备 33010602011771号