调试组件
debug 组件可用于调试 ESPHome 的问题。在启动时,它会打印一堆有用的信息,如重置原因、可用堆大小、ESPHome 版本等。
它还允许您获取相同的信息作为文本传感器,并监控 ESP 堆内存的状态(可用空间、最大可用块大小和碎片化级别)以及主循环时序。可以通过 logger 或 web server 组件(如果已配置)进行监控。
# 示例配置项debug: update_interval: 5s
text_sensor: - platform: debug device: name: "设备信息" reset_reason: name: "重置原因"
sensor: - platform: debug free: name: "堆可用空间" block: name: "堆最大块" min_free: name: "堆最小可用空间" fragmentation: name: "堆碎片化" loop_time: name: "循环时间" psram: name: "可用 PSRAM" cpu_frequency: name: "CPU 频率"-
device (Optional): 报告以下设备信息:
-
ESPHome 版本
-
启动时的可用堆大小
-
闪存芯片大小、速度和模式
-
ESP32:
- 芯片型号、核心数、修订版
- 芯片功能(BLE / BT / WiFi_BGN / EMB_FLASH / EMB_PSRAM / …)
- ESP-IDF 版本
- EFuse MAC
- 重置原因
- 唤醒原因
-
ESP8266:
- 芯片 ID、频率
- 闪存 ID
- SDK、Core 和 Boot 版本
- 重置原因和信息
接受 文本传感器 的所有选项。
-
-
reset_reason (Optional): 以人类可读的形式报告上次重启原因。接受 文本传感器 的所有选项。
-
free (Optional): 以字节为单位报告可用堆大小。传感器 的所有选项。
-
block (Optional): 以字节为单位报告堆上最大连续可用 RAM 块。传感器 的所有选项。
-
min_free (Optional): 以字节为单位报告启动以来的最小可用堆大小。这对于检测内存泄漏或高水位标记使用很有用。仅在 ESP32 和 LibreTiny 上可用。传感器 的所有选项。
-
fragmentation (Optional): 报告堆的碎片化指标 (0% 是干净的,超过约 50% 可能导致分配失败)。在带有 Arduino 2.5.2+ 的 ESP8266 和 ESP32 上可用。 传感器 的所有选项。
-
loop_time (Optional): 报告主循环连续迭代之间的最长时间。传感器 的所有选项。
-
psram (Optional): 以字节为单位报告可用 PSRAM。仅在 ESP32 上可用。传感器 的所有选项。
-
cpu_frequency (Optional): 以 Hz 为单位报告 CPU 频率。传感器 的所有选项。
Zephyr
Section titled “Zephyr”该组件为在 Zephyr RTOS 上运行的 ESPHome 设备启用调试功能。 它有助于使用 SWD(串行线调试) 进行低级固件调试。它启用:
-
GDB 中的线程感知
注入 Zephyr 线程元数据,以便在通过 SWD 连接时可以通过 GDB 检查所有活动线程。 -
通过 RTT 的实时日志记录
通过 SEGGER RTT(实时传输)启用日志输出,允许通过 SWD 进行非侵入式调试日志。
- 传感器过滤器
- 日志组件
- 故障排除 - 用于调试崩溃和启动失败的故障排除指南
- API Reference: debug_component.h