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

2.8 KiB
Raw Blame History

项目变更日志 - 第二阶段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-prefixcommand-topic-basestatus-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.javaMqttCallbackHandler.java):
      • 创建了 com.yupi.project.mqtt.MqttCallbackHandler 类,实现 MqttCallbackExtended接口,用于处理连接事件和初步的消息接收(日志记录)。在 connectComplete 中实现订阅状态主题 yupi_mqtt_power_project/robot/status/+ 的逻辑。
      • 创建了 com.yupi.project.config.MqttConfig 配置类:
        • 注入 MqttPropertiesMqttCallbackHandler
        • 定义了 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 任务。