Files
water/.workbuddy/memory/2026-06-11.md

946 B
Raw Permalink Blame History

2026-06-11 工作日志

14. DeviceDataHandler 和 DeviceRegisterHandler 补充设备在线状态刷新

问题:之前只有 ACK 应答会调用 refreshDeviceOnline() 续期 Redis 中的设备在线状态。但设备只要上报电量或注册就证明在线,这两个场景没刷新在线缓存。后果:设备只上报数据不发 ACK 时5 分钟后重试逻辑误判它为离线。

修复

  • DeviceDataHandler.handle() → 收到 /publish/power 后调用 refreshDeviceOnline()
  • DeviceRegisterHandler.handle() → 注册后调用 refreshDeviceOnline()
  • 两个 Handler 各自注入 MqttProperties,避免注入 MqttCommandAckService 引入新的循环依赖

在线判定覆盖(修复后):

触发方式 是否刷新在线状态
设备上报电量 /publish/power 新增
设备注册 /publish/register 新增
ACK 应答 /publish/ack 原有