Files
2026-07-13 12:06:16 +08:00

138 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MQTT Backend - 水情监测系统MQTT后端
为HarmonyOS水情监测应用提供MQTT消息服务。
## 目录结构
```
mqtt-backend/
├── server.js # MQTT Broker服务器
├── simulator.js # 模拟数据发送器
├── package.json # 项目配置
└── README.md # 说明文档
```
## 快速开始
### 1. 安装依赖
```bash
cd mqtt-backend
npm install
```
### 2. 启动MQTT Broker
```bash
npm start
# 或
node server.js
```
服务器将在 `0.0.0.0:1883` 端口启动,输出如下:
```
========================================
MQTT Broker 服务器已启动
========================================
监听地址: mqtt://0.0.0.0:1883
认证用户: admin
认证密码: admin
```
### 3. 启动数据模拟器(可选)
如果需要自动发送模拟数据:
```bash
node simulator.js
```
模拟器将每3秒发送一次随机水质数据。
## MQTTX 配置
使用MQTTX客户端连接和测试:
### 连接配置
| 参数 | 值 |
|------|-----|
| Name | WaterMonitor |
| Protocol | mqtt:// |
| Host | localhost 或 192.168.xxx.xxx |
| Port | 1883 |
| Username | admin |
| Password | admin |
| Client ID | mqttx-test |
### 发布消息
**主题**: `sea_status`
**消息格式** (JSON):
```json
{
"temp": 25.5,
"ph": 7.2,
"conductivity": 850,
"cod": 35,
"ammoniaNitrogen": 0.3,
"residualChlorine": 0.4
}
```
### 字段说明
| 字段 | 说明 | 单位 | 正常范围 |
|------|------|------|----------|
| temp | 水温 | °C | 15-30 |
| ph | pH值 | - | 6.5-8.5 |
| conductivity | 电导率 | μS/cm | 500-1500 |
| cod | COD | mg/L | ≤40 |
| ammoniaNitrogen | 氨氮 | mg/L | ≤1.0 |
| residualChlorine | 余氯 | mg/L | 0.3-0.5 |
## HarmonyOS应用配置
应用中的MQTT配置位于 `entry/src/main/ets/utils/MqttService.ets`
```typescript
this.mqttService.setConfig('tcp://192.168.xxx.xxx:1883', 'sea_status');
```
请将IP地址改为运行MQTT Broker的电脑IP。
### 获取本机IP
Windows:
```bash
ipconfig
```
查找 "IPv4 地址" 一行,例如 `192.168.31.100`
## 测试流程
1. 启动MQTT Broker: `node server.js`
2. 打开MQTTX,连接到Broker
3. 订阅主题 `sea_status`(查看消息)
4. 发布测试消息到 `sea_status`
5. 在HarmonyOS应用中查看数据是否更新
## 故障排查
### 连接失败
- 检查IP地址是否正确
- 检查防火墙是否允许1883端口
- 检查用户名密码是否为 `admin/admin`
### 数据不显示
- 检查主题是否为 `sea_status`
- 检查JSON格式是否正确
- 查看HarmonyOS应用日志
### 端口占用
如果1883端口被占用,可以修改 `server.js` 中的 `PORT` 常量。