🌙

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 模组):

  1. 每隔 10 秒读一次温度:25.3°C。

  2. 将数据打包成 很小的 LoRa 载荷(比如 25.3)。

  3. 通过 LoRa 模组 无线发出,不包含 IP、不包含 MQTT。

⚠️ LoRa 不懂 MQTT,它只负责“喊一嗓子”。


第 2 步:网络层无线传输

LoRa 模组 → 空口无线 → LoRa 基站

  • 基站收到无线电信号:25.3 + 设备 ID。

  • 此时还在 无 IP 的 LoRa 域,没有 MQTT。


第 3 步:LoRa 基站 → 转化为 MQTT(关键桥梁)

LoRa 基站具备 以太网(或 4G) + 内部逻辑:

  1. 解析 LoRa 载荷:设备 A001,温度 25.3

  2. 基站 主动作为 MQTT 发布者,向内部或云端的 MQTT Broker 发布消息:

    • Broker 地址:192.168.1.100

    • 主题:lorawan/devices/A001/temperature

    • QoS:1

    • 消息体:{"value": 25.3, "ts": "2026-05-25T10:00:00Z"}

  3. 通过 以太网 发出去。

✅ 从这里开始,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"}

后端服务立即做两件事:

  1. 存入数据库(MySQL/PostgreSQL) INSERT INTO sensor_data VALUES (…)

  2. 更新内存/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

  1. 浏览器加载 HTML + JS 页面。

  2. 页面中的 JavaScript 执行 AJAX 请求

    fetch("http://服务器IP:8080/api/latest")
    .then(res => res.json())
    .then(data => 更新网页表格/图表)
  3. 后端返回:

    {"device":"A001","temperature":25.3,"time":"2026-05-25T10:00:00Z"}
  4. 浏览器动态展示温度。


三、完整链路图(文字版)

[采集器] 
  ↓ LoRa 无线
[LoRa 基站]
  ↓ 转换为 MQTT(发布)
[MQTT Broker](服务器上)
  ↓ 转发给订阅者
[后端服务](订阅 MQTT)
  ↓ 存入 DB
[数据库]
  ↑ HTTP + AJAX
[浏览器]

四、明确回答你的一句话总结

MQTT 只负责 LoRa 基站 → 后端服务 这一段实时传输,起到解耦和轻量的作用; 感知层到 LoRa 基站 用的是 LoRa 协议,没有 MQTT; 终端电脑到服务器 用的是 HTTP + AJAX,与 MQTT 无关。 整个系统是:LoRa + MQTT + HTTP 三层协议混合

 

posted @ 2026-05-25 20:52  星火撩原  阅读(16)  评论(0)    收藏  举报
本站已运行:0
🌙 夜间模式
🌙
🌙