This commit is contained in:
2025-05-13 21:30:06 +08:00
commit 60abc68c60
115 changed files with 12478 additions and 0 deletions

31
LogBook.md Normal file
View File

@@ -0,0 +1,31 @@
# 项目变更日志 - 第二阶段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 任务。