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

    Zigbee 感應器電池撐不久:用量測找原因,不要看 LQI

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 02:58:41 | 顯示全部樓層 |閱讀模式
    先講一個要改掉的習慣:不要用 LQI 判斷 Zigbee 裝置的連線好不好。

    先講一個要改掉的習慣:不要用 LQI 判斷 Zigbee 裝置的連線好不好。

    這是流傳最廣的第一招 —— 打開拓樸圖、看那個裝置的 LQI、數字低就說「訊號太弱」。而 Home Assistant 的 ZHA 官方文件現在明文反對這個做法,原話是:

    「Interpreting RSSI and LQI values can be complex... Unless you are a Zigbee specialist yourself or are guided by one, please ignore those values. They can be misleading.」

    原因很具體,不是官方在推卸責任:


    • IEEE 802.15.4 的規格沒有統一 LQI 該怎麼量。Silicon Labs 的晶片和 TI 的晶片算出來的 LQI 是兩回事,兩台裝置的數字不能互相比較
    • LQI 常常只反映「最後一跳」。你的感應器經過三個中繼才到協調器,那個數字講的是最後一段,前面兩段再糟它都不知道
    • TI 的 Z-Stack 是從 RSSI 線性換算出 LQI 的,而官方直接點出這個後果:「in case you have a noisy environment with interference... the RSSI value may be shown as increased even though the true link quality decreases」——在有干擾的環境裡,數字可能變好看,實際品質卻變差


    所以這一篇改用可量測、而且跟耗電直接相關的指標:電量下降的斜率、每天送出的訊息數、重新加入網路的次數。RSSI 仍然有用(官方有給明確門檻),但它是輔助,不是判準。

    這一篇會做完:建立一個「每天掉幾 %」的量測、量出每台裝置的訊息頻率、用一張決策表定位原因、逐項修掉、最後做一個統一的低電量通知。

    步驟 1:先確認這件事真的異常

    電池百分比本身是不可信的數字。 這一點要先講,因為很多「電池掉超快」的回報其實是誤判。

    原因:Zigbee 裝置沒有電量計,它回報的是電壓,然後由裝置韌體或 Z2M 換算成百分比。 而鋰錳鈕扣電池(CR2032 這一類)的放電曲線非常平 —— 從 3.0V 掉到 2.8V 可能已經用掉六成容量,之後從 2.8V 到 2.4V 卻只剩四成。

    實際症狀是:


    • 百分比長時間卡在 100%,然後某天開始快速下滑 —— 這是正常的放電曲線,不是壞掉
    • 百分比只有 100 / 90 / 80 這種整十的階梯 —— 那台的韌體只回報粗階
    • 晚上顯示 60%,白天又回到 80% —— 溫度影響電壓(下面步驟 6 會講機制)


    所以要看的是「斜率」,不是「數字」。

    1-1 用歷史圖看趨勢(最快)


    • 到 歷史 頁
    • 選那台感應器的電池實體
    • 時間範圍拉到 最近三個月


    你會看到一條階梯狀往下的線。用尺量一下:從 100% 到現在花了幾天,換算成「每天掉幾 %」。

    判斷標準:


    • 每天掉 0.1 到 0.3% → 換算是一年到三年,這是正常的
    • 每天掉 0.5 到 1% → 三到六個月,偏快,值得查
    • 每天掉 1% 以上 → 三個月內就沒電,一定有問題


    線是完全水平的一直線,三個月都是 100% → 這台根本沒在回報電量。不是好事也不是壞事,只是你沒有這個資訊可用。步驟 2 的訊息計數仍然量得到它。

    1-2 做一個「每天掉幾 %」的感測器(要精確數字的話)


    • 設定 → 裝置與服務 → 輔助工具 → 建立輔助工具 → 導數(Derivative)



    • 名稱 → 例如「客廳門窗感應器 電池斜率」
    • 輸入感測器 → 那台的電池實體
    • 時間單位 → 選 `d`(天)
    • 時間窗 → 填 7 天(`168:00:00`)。電池的階梯式回報雜訊很大,不平滑的話數字會在 0 和 -20 之間亂跳
    • 精確度 → 3


    你會看到一個新實體,值是負數,例如 `-0.24`。意思是「每天掉 0.24%」,也就是大約 400 天的壽命。

    剛建好是 `unknown`,這是正常的 —— 它要等時間窗裡有足夠的資料點。電池感應器可能一天才回報一次,所以這個數字要等一週才有意義。

    步驟 2:量真正的耗電代理指標 —— 每天送出幾則訊息

    這是整篇最重要的一步。 Zigbee 端裝置的耗電絕大部分花在「開無線電發射」這件事上,所以訊息數就是耗電量的代理指標,而且它是你當下就量得到的,不用等三個月。

    2-A 用 Zigbee2MQTT(最直接)

    Z2M 有一個現成的選項,會在每一則訊息裡附上「距離上一則過了幾毫秒」。

    編輯 `configuration.yaml`:
    1. mqtt:
    2.   base_topic: zigbee2mqtt
    3.   server: mqtt://core-mosquitto:1883
    4.   # 在每則訊息裡加上距離前一則的毫秒數。
    5.   # 這是量「這台多久講一次話」最直接的工具。
    6.   elapsed: true
    7.   # 順便加上最後一次收到訊息的時間戳,排查斷線很有用。
    8.   last_seen: 'ISO_8601_local'
    複製代碼

    存檔,重啟 Zigbee2MQTT。

    現在用任何一個 MQTT 客戶端訂閱那台裝置(或者用 HA 的 開發者工具 → 動作 → `mqtt.publish` 旁邊的訂閱功能,主題填 `zigbee2mqtt/客廳門窗`)。

    你會看到每則訊息長這樣:

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

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

    本版積分規則

    延伸閱讀

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

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

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

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