找回密碼
 立即註冊
    查看: 161|回覆: 0

    ESPHome 裝置出問題:照這個順序查(連不上、一直重開、記憶體)

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 13:14:56 | 顯示全部樓層 |閱讀模式
    這篇給你一套固定的排查順序,和一份「每台裝置都該先裝上」的診斷設定。

    排查順序的重點不是招式多,是每一步都有可讀的數字,你不用猜。

    每一步都有可讀的數字

    步驟 1:先裝診斷元件,不要等出事才接線

    大多數人的除錯流程是「壞了 → 爬梯子拿下來 → 接 USB → 看日誌」。這很慢,而且間歇性的問題你接上去的時候通常好好的。

    ESPHome 有一個內建的 `debug:` 元件,會把「為什麼重開」「記憶體剩多少」「主迴圈卡多久」變成 Home Assistant 裡的實體。先裝,之後所有排查都從這裡開始。

    把下面這段加進你每一台裝置的 YAML(放在最外層,跟 `wifi:` 同一層):
    1. debug:
    2.   update_interval: 60s
    3. text_sensor:
    4.   - platform: debug
    5.     reset_reason:
    6.       name: "上次重開原因"
    7.       entity_category: diagnostic
    8.     device:
    9.       name: "裝置資訊"
    10.       entity_category: diagnostic
    11.   - platform: version
    12.     name: "ESPHome 版本"
    13.     entity_category: diagnostic
    14. sensor:
    15.   - platform: debug
    16.     free:
    17.       name: "可用記憶體"
    18.       entity_category: diagnostic
    19.     block:
    20.       name: "最大連續區塊"
    21.       entity_category: diagnostic
    22.     fragmentation:
    23.       name: "記憶體碎片化"
    24.       entity_category: diagnostic
    25.     loop_time:
    26.       name: "主迴圈最長耗時"
    27.       entity_category: diagnostic
    28.   - platform: wifi_signal
    29.     name: "Wi-Fi 訊號"
    30.     update_interval: 300s
    31.     entity_category: diagnostic
    32.   - platform: uptime
    33.     name: "運行時間"
    34.     update_interval: 300s
    35.     entity_category: diagnostic
    36. binary_sensor:
    37.   - platform: status
    38.     name: "連線狀態"
    39.     entity_category: diagnostic
    複製代碼

    ⚠ 不要用舊教學那行 `lambda: 'return ESP.getFreeHeap();'`

    `ESP` 這個物件是 Arduino 框架的東西。ESPHome 2026.1 起,ESP32 的預設框架已經是 esp-idf,這行會在編譯時直接失敗:
    1. error: 'ESP' was not declared in this scope
    複製代碼

    而且就算你切回 arduino 能跑,「可用記憶體總量」也不是正確的指標(下面步驟 4 會說明為什麼)。

    `entity_category: diagnostic` 是什麼:讓這些實體被歸到 HA 裝置頁面的「診斷」區,不會混在你平常要按的開關裡。

    燒錄後你會看到

    去 HA 的「設定 → 裝置與服務 → ESPHome」,點那台裝置,下方多出一個「診斷」區塊:


    • 上次重開原因:典型值是 `Software reset CPU`(OTA 或你按的重開)、`Power on reset`(剛插電)、`Task watchdog`(程式卡住)、`Brownout reset`(電壓不足)
    • 可用記憶體:ESP32 通常 120,000~200,000 位元組
    • 最大連續區塊:健康的話會接近「可用記憶體」的一半以上
    • 記憶體碎片化:健康是個位數到 20% 之間
    • 主迴圈最長耗時:正常 16 毫秒以下


    以下還有約 81% 的內容
    登入後即可閱讀完整教學

    登入繼續閱讀使用 Google 登入
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    延伸閱讀

    加入惟家 LINE 群 QR Code加入惟家 LINE 群

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-11-10 00:44 , Processed in 0.132015 second(s), 25 queries .

    快速回覆 返回頂部 返回列表