Files
ESP32_COMM/docs/COMMUNICATION_AUDIT_2026-05-05.md
T
小龙虾 6641ca4afd feat(health_monitor): 移除电压监控功能并优化OTA健康检查
- 移除ESP32电压监控相关代码,因为ESP32-C3无内置电压传感器
- 更新健康监控模块,从"温度+电压+WiFi RSSI监控"改为"温度+WiFi RSSI监控"
- 修改OTA健康检查频率,从每次包处理改为每32个包检查一次
- 添加OTA期间WiFi RSSI采样年龄限制和更宽松的阈值

docs: 更新文档中的系统监控描述

- 从README.md、开发指南和设计文档中移除电压监控相关内容
- 更新WebUI接口文档中的状态查询描述

refactor(wifi_ota): 增加系统状态响应中的运行时间信息

- 在/system/status接口响应中添加uptime_sec字段
- 前端工具页面显示系统运行时间

feat(wifi_ota): 添加ESP32重启接口和前端控制

- 新增/restart HTTP POST接口用于重启ESP32
- 在前端界面添加重启按钮替代健康检查按钮
- 移除前端健康检查功能

perf(ota_relay): 调整OTA块大小提升传输性能

- 将OTA块大小从4096字节增加到8192字节
- 更新固件上传和存储相关的缓冲区大小配置
2026-05-05 21:55:29 +08:00

2.0 KiB
Raw Blame History

ESP32_COMM 通信梳理(2026-05-05)

结论

当前“ESP32 ↔ 上位机(tools WebUI)”的主通信方式是 HTTP,不是 UDP。

WebUI 实际在用的接口

  • GET /system/status:每 1 秒轮询一次,用于在线状态、WiFi、heap、温度、OTA 状态展示
  • GET /logs:每 1 秒轮询一次,用于拉取并清空日志环形缓冲区
  • POST /can/send:发送 CAN 请求到 GD32
  • POST /ota/upload / POST /ota/relay / POST /ota/update:OTA 相关

日志链路

所有 DEBUG_* 日志目前会并行写入三处:

  1. UART0
    • 本地串口调试
  2. UDP 单播 → DEBUG_LOG_IP:DEBUG_LOG_PORT
    • 可供独立 UDP 调试接收端使用
  3. 内部环形缓冲区
    • 被 GET /logs 读取
    • 这是当前 WebUI 日志面板真正使用的通道

为什么 {"t":"hb"} 是多余的

之前在 wifi_ota_task() 里,每 3 秒会发送一次:

{"t":"hb"}

它是通过 debug_log_send() 发出的,所以会同时进入:

  • UART
  • UDP
  • /logs 对应的环形缓冲区

这会导致 WebUI 把它显示成一条普通日志:

  • level: I
  • tag: ESP32
  • message: {"t":"hb"}

但 WebUI 本来已经每秒轮询 /system/status,完全可以判断设备在线,不需要再靠这种“伪日志心跳”。

已处理

已删除 wifi_ota_task() 中每 3 秒发送一次的 {"t":"hb"}。

现在是否还有重复/不必要通信

对 WebUI 来说

有两条并行链路,但用途不同,不算重复:

  • /system/status:结构化状态
  • /logs:文本日志

这两条都保留是合理的。

对底层日志输出来说

日志同时发 UART + UDP + ring buffer,属于“一份日志三路镜像”。

这对调试友好,但从“最简设计”角度看,UDP 在当前 WebUI 场景里不是必需的。

也就是说:

  • 必须保留: ring buffer + /logs
  • 建议保留: UART0
  • 可选保留: UDP 6666

如果后续你想继续精简,可以做“方案2”:把 UDP 也做成可关闭,甚至默认关闭。