# 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` 常量。