2.8 KiB
2.8 KiB
项目变更日志 - 第二阶段:MQTT 集成
2023-12-02: 第二阶段启动 - MQTT 集成
-
状态: 第一阶段开发已完成,相关日志已存档至
LogBook_Phase1.md。 -
当前任务: 开始第二阶段开发,重点是 MQTT 的集成。
-
依据文档:
springboot-init-main/doc/development_stages/stage_2_mqtt_integration.md。 -
已完成:
- 数据库初始化: 在
mqtt_power数据库中成功创建了robot_task表。 - 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 配置。
- 确认使用公共 MQTT Broker:
- 更新开发文档:
- 修改了
springboot-init-main/doc/development_stages/stage_2_mqtt_integration.md,反映了公共 Broker 的使用、Topic 唯一性策略以及应用层鉴权的重要性。
- 修改了
- 实现 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。 - 定义了
MqttConnectOptionsBean,配置连接参数(如自动重连、Clean Session、超时等)。 - 定义了
MqttClientBean,使用唯一的客户端ID,并设置MqttCallbackHandler。 - 使用
@PostConstruct实现了应用启动时自动连接到 MQTT Broker 的逻辑。 - 使用
@PreDestroy实现了应用关闭时断开 MQTT 连接的逻辑。
- 注入
- 创建了
- 数据库初始化: 在
-
下一步计划 (依据
stage_2_mqtt_integration.md):- 实现
RobotTask管理 (RobotTaskService):- 创建
RobotTask实体、Mapper 接口。 - 定义并实现
RobotTaskService接口中的方法 (如创建任务、更新任务状态、查找任务等)。
- 创建
- 实现消息发布 (
MqttService): 用于向机器人发送指令,并与RobotTaskService交互记录任务。 - 实现消息处理 (
MqttMessageHandler): 详细处理从机器人接收到的状态更新,并与RobotTaskService交互更新任务状态。 - 实现任务超时处理 (
TaskTimeoutHandler): 定时检查并处理超时的 MQTT 任务。
- 实现