|
|
這篇講的都是「點幾下就好」的事,但影響很大。
很多人裝了一年 HA 都沒動過這些。

怎麼進去
點任何一個實體 → 右上角齒輪。
或者 設定 → 裝置與服務 → 實體,搜尋後點進去。
1. 實體 ID:最重要的一個
預設的實體 ID 通常很醜:
- sensor.0x00158d0004a1b2c3_temperature
- light.tz3000_odygigth_ts011f_switch
- binary_sensor.lumi_lumi_sensor_motion_aq2_ias_zone
複製代碼
強烈建議全部改成英文、有意義的短名:
- sensor.bathroom_temperature
- light.living_room_ceiling
- binary_sensor.hallway_motion
複製代碼
為什麼不用中文?
中文 ID 能用,但:
- 寫 REST API 要做 URL 編碼
- 用 entity_globs 比對時容易出問題
- 在終端機、日誌、SQL 裡難處理
- 換電腦或系統時偶爾會有編碼問題
ID 用英文、名稱用中文,兩全其美。介面上你看到的一直都是中文名稱。
命名建議:<區域>_<裝置>_<功能>
- light.bedroom_ceiling
- light.bedroom_bedside
- sensor.bedroom_temperature
- sensor.bedroom_humidity
- binary_sensor.bedroom_motion
複製代碼
好處是用前綴就能抓一整組:
- {{ states.sensor | selectattr('entity_id','search','bedroom_') | list }}
複製代碼
改 ID 會有副作用:所有引用它的地方都要改。
所以越早改越好 —— 裝置剛加進來就改,別等寫了二十個自動化才想改。
(HA 現在改 ID 時會提示哪些地方有引用,但不會自動幫你改。)

2. 裝置類別(device_class)
這個決定HA 怎麼理解和顯示這個實體。
同樣是 binary_sensor,device_class 不同顯示完全不一樣:
- motion → 顯示「偵測到動作 / 清空」,圖示是走動的人
- door → 顯示「開啟 / 關閉」,圖示是門
- moisture → 顯示「偵測到潮濕 / 乾燥」
- problem → 顯示「異常 / 正常」,on 的時候是紅色
- battery → on 代表「電量低」
沒設的話一律顯示「開 / 關」,看起來很蠢,而且自動化不好讀。
sensor 的 device_class 更重要,它決定:
- 單位換算(temperature 會自動處理 °C / °F)
- 能不能進能源儀表板(energy、gas、water)
- 歷史圖表怎麼畫
3. 狀態類別(state_class)
這個決定會不會進長期統計,很關鍵但很多人不知道。
- measurement — 瞬時值(溫度、功率)。統計會存最大/最小/平均
- total — 累計值,可以歸零(每日用電)
- total_increasing — 只增不減的累計值(電表讀數)
沒有 state_class 的感測器,資料只會待在 recorder 裡,
被 purge 之後就永遠消失了。
有 state_class 的會額外進 statistics 表,那份可以存很多年。
所以:任何你想看長期趨勢的東西,一定要設 state_class。
4. 顯示精度
這個是新功能,很多人沒發現。
溫度感測器回傳 26.437501 度,介面上顯示一長串很難看。
在實體設定裡找到「顯示精度」,設成 1 位小數。
重點:這只改顯示,不改實際值。
自動化拿到的還是完整的 26.437501,所以不會影響判斷邏輯。
(以前大家用範本 round() 包一層,那會真的改掉值,
而且多一個實體。現在不用了。)
5. 圖示
圖示來自 Material Design Icons,寫法是 mdi:名稱。
到 pictogrammers.com/library/mdi/ 搜尋,複製名稱貼上。
動態圖示要寫範本(在 template 實體裡):
- template:
- - sensor:
- - name: 冷氣狀態
- state: "{{ states('climate.客廳') }}"
- icon: >
- {% if is_state('climate.客廳','cool') %}
- mdi:snowflake
- {% elif is_state('climate.客廳','heat') %}
- mdi:fire
- {% else %}
- mdi:air-conditioner
- {% endif %}
複製代碼
6. 隱藏 vs 停用
這兩個差很多:
- 隱藏(Hidden) — 還在運作、還在記錄,只是不出現在介面上
- 停用(Disabled) — 完全不運作,不佔資源,不進資料庫
Zigbee 裝置常常會有一堆用不到的實體(linkquality、電壓、韌體版本)。
建議:不會用到的直接「停用」,不要只是隱藏。
停用才能真的減少資料庫寫入。
7. 可見性條件(新版)
儀表板卡片現在可以設「什麼時候才顯示」,不用寫 conditional 卡片:
點卡片編輯 → 可見性 分頁 → 加條件。
例如「冷氣卡片只在夏天顯示」「除濕機卡片只在濕度大於 70 時顯示」。
批次修改的技巧
一個一個改很累。兩個加速方法:
方法一:實體清單多選
設定 → 裝置與服務 → 實體,勾選多個之後,
上方會出現批次操作(啟用、停用、隱藏、指派區域、指派標籤)。
方法二:改 entity_registry(進階,要小心)
.storage/core.entity_registry 是個 JSON 檔。
理論上可以直接改,但一定要先關掉 HA、先備份,
改壞的話整個實體註冊表會毀掉。
我試過一次,後來覺得不值得 —— 批次多選已經夠用了。
---
我建議的順序是:新裝置一加進來,馬上做三件事 ——
改實體 ID、設裝置類別、停用用不到的實體。
三分鐘的事,省掉以後一堆麻煩。 |
|