Files
mqtt_power/LogBook.md
2025-05-13 21:30:06 +08:00

31 lines
2.8 KiB
Markdown
Raw 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 集成
## 2023-12-02: 第二阶段启动 - MQTT 集成
- **状态**: 第一阶段开发已完成,相关日志已存档至 `LogBook_Phase1.md`
- **当前任务**: 开始第二阶段开发,重点是 MQTT 的集成。
- **依据文档**: `springboot-init-main/doc/development_stages/stage_2_mqtt_integration.md`
- **已完成**:
1. **数据库初始化**: 在 `mqtt_power` 数据库中成功创建了 `robot_task` 表。
2. **MQTT Broker 确定与配置**:
- 确认使用公共 MQTT Broker: `broker.emqx.io:1883`
- 更新 `springboot-init-main/src/main/resources/application.yml` 添加了 Broker 连接信息,并为 `client-id-prefix``command-topic-base``status-topic-base` 添加了项目唯一前缀 (如 `yupi_mqtt_power_project/`) 以确保在公共环境中的唯一性。
- 创建了 `springboot-init-main/src/main/java/com/yupi/project/config/properties/MqttProperties.java` 来映射 MQTT 配置。
3. **更新开发文档**:
- 修改了 `springboot-init-main/doc/development_stages/stage_2_mqtt_integration.md`,反映了公共 Broker 的使用、Topic 唯一性策略以及应用层鉴权的重要性。
4. **实现 MQTT 客户端核心配置 (`MqttConfig.java` 和 `MqttCallbackHandler.java`)**:
- 创建了 `com.yupi.project.mqtt.MqttCallbackHandler` 类,实现 `MqttCallbackExtended`接口,用于处理连接事件和初步的消息接收(日志记录)。在 `connectComplete` 中实现订阅状态主题 `yupi_mqtt_power_project/robot/status/+` 的逻辑。
- 创建了 `com.yupi.project.config.MqttConfig` 配置类:
- 注入 `MqttProperties``MqttCallbackHandler`
- 定义了 `MqttConnectOptions` Bean配置连接参数如自动重连、Clean Session、超时等
- 定义了 `MqttClient` Bean使用唯一的客户端ID并设置 `MqttCallbackHandler`
- 使用 `@PostConstruct` 实现了应用启动时自动连接到 MQTT Broker 的逻辑。
- 使用 `@PreDestroy` 实现了应用关闭时断开 MQTT 连接的逻辑。
- **下一步计划 (依据 `stage_2_mqtt_integration.md`)**:
1. **实现 `RobotTask` 管理 (`RobotTaskService`)**:
- 创建 `RobotTask` 实体、Mapper 接口。
- 定义并实现 `RobotTaskService` 接口中的方法 (如创建任务、更新任务状态、查找任务等)。
2. **实现消息发布 (`MqttService`)**: 用于向机器人发送指令,并与 `RobotTaskService` 交互记录任务。
3. **实现消息处理 (`MqttMessageHandler`)**: 详细处理从机器人接收到的状态更新,并与 `RobotTaskService` 交互更新任务状态。
4. **实现任务超时处理 (`TaskTimeoutHandler`)**: 定时检查并处理超时的 MQTT 任务。