找回密碼
 立即註冊
惟家LINE群QRCODE
    查看: 1|回覆: 0

    group 與 light group:讓儀表板和自動化都變乾淨

    [複製鏈接]

    !lvup!   100%

    363

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22005752
    發表於 3 天前 | 顯示全部樓層 |閱讀模式
    三十個燈泡直接拉到儀表板上,那是災難。
    這篇講怎麼用群組把東西整理起來。



    HA 裡有兩種「群組」,很多人搞混


    • 輔助元件裡的「群組」 — UI 建立,比較新,功能比較好
    • YAML 的 group: — 舊的,只能做「任一個 on 就是 on」


    新專案一律用前者。舊教學講的 group: 已經不建議用了。

    怎麼建

    設定 → 裝置與服務 → 輔助元件 → 建立輔助元件 → 群組

    可以選的類型:


    • 燈光群組 — 合併成一個燈,可以統一調亮度和色溫
    • 開關群組
    • 二元感應器群組 — 可以選「全部 on 才 on」或「任一 on 就 on」
    • 感應器群組 — 可以做總和、平均、最大、最小
    • 媒體播放器群組
    • 窗簾群組
    • 風扇群組


    燈光群組:最有用的一個

    把客廳的主燈、筒燈、燈帶合併成 light.客廳


    • 調亮度 → 三個一起調
    • 調色溫 → 三個一起調(不支援色溫的成員會被忽略)
    • 狀態 → 任一個開著就顯示開


    自動化就從三行變一行:
    1. # 之前
    2. - action: light.turn_on
    3.   target:
    4.     entity_id:
    5.       - light.客廳主燈
    6.       - light.客廳筒燈
    7.       - light.客廳燈帶
    8.   data: {brightness_pct: 60}
    9. # 之後
    10. - action: light.turn_on
    11.   target: {entity_id: light.客廳}
    12.   data: {brightness_pct: 60}
    複製代碼

    之後客廳加了第四盞燈,只要加進群組,所有自動化自動涵蓋。
    這是群組真正的價值 —— 不是省打字,是讓「客廳的燈」這個概念只定義一次



    感應器群組:做總和與平均

    家裡有三個溫度計,想要一個「室內平均溫度」:

    建立輔助元件 → 群組 → 感應器群組 → 類型選「平均」

    或者寫 YAML:
    1. sensor:
    2.   - platform: group
    3.     name: 室內平均溫度
    4.     type: mean
    5.     entities:
    6.       - sensor.客廳溫度
    7.       - sensor.主臥溫度
    8.       - sensor.書房溫度
    9.     unit_of_measurement: "°C"
    10.     device_class: temperature
    11.     state_class: measurement
    12.     ignore_non_numeric: true
    複製代碼

    ignore_non_numeric: true 很重要
    其中一個感測器變成 unavailable 的時候,沒有這行整個群組會壞掉。

    type 可以是:min / max / mean / median / last / range / sum / product

    sum 拿來算總用電很好用
    1. sensor:
    2.   - platform: group
    3.     name: 全屋總功率
    4.     type: sum
    5.     entities:
    6.       - sensor.冷氣功率
    7.       - sensor.冰箱功率
    8.       - sensor.電視功率
    9.       - sensor.洗衣機功率
    10.     unit_of_measurement: W
    11.     device_class: power
    12.     state_class: measurement
    13.     ignore_non_numeric: true
    複製代碼

    二元感應器群組:門窗總開關
    1. binary_sensor:
    2.   - platform: group
    3.     name: 所有門窗
    4.     device_class: door
    5.     all: false          # false = 任一個 on 就 on(預設)
    6.     entities:
    7.       - binary_sensor.前門
    8.       - binary_sensor.後門
    9.       - binary_sensor.陽台門
    10.       - binary_sensor.書房窗
    複製代碼


    • all: false — 任一個開著就顯示「開」(適合安全監控)
    • all: true — 全部開著才顯示「開」(比較少用)


    離家自動化的條件就變得很乾淨:
    1. conditions:
    2.   - condition: state
    3.     entity_id: binary_sensor.所有門窗
    4.     state: "off"
    複製代碼

    用「區域」取代部分群組

    HA 的區域(Area)其實也是一種群組,而且更自然。

    設定 → 區域與分區,把裝置指派到區域之後:
    1. # 關掉整個客廳的燈
    2. - action: light.turn_off
    3.   target:
    4.     area_id: living_room
    5. # 關掉客廳「和」餐廳
    6. - action: light.turn_off
    7.   target:
    8.     area_id:
    9.       - living_room
    10.       - dining_room
    複製代碼

    好處:新裝置只要指派區域,自動化不用改。

    範本裡也能用:
    1. {{ area_entities('living_room') }}
    2. {{ area_entities('living_room') | select('match','light\\.') | list }}
    3. {{ expand(area_entities('living_room'))
    4.    | selectattr('state','eq','on') | list | count }}
    複製代碼

    什麼時候用群組、什麼時候用區域


    • 區域 — 按「空間」分。客廳、主臥、浴室
    • 群組 — 按「用途」分,而且會跨空間。所有門窗、所有氛圍燈、全屋功率


    我的做法是兩個都用
    空間層級靠區域(自動化寫 area_id),跨空間的概念靠群組。



    儀表板的實際差別

    整理前:一頁 48 個實體卡片,要捲四次。
    整理後:
    1. type: vertical-stack
    2. cards:
    3.   - type: tile
    4.     entity: light.客廳
    5.     features:
    6.       - type: light-brightness
    7.   - type: tile
    8.     entity: binary_sensor.所有門窗
    9.     color: red
    10.   - type: tile
    11.     entity: sensor.全屋總功率
    12.   - type: conditional
    13.     conditions:
    14.       - condition: state
    15.         entity: binary_sensor.所有門窗
    16.         state: "on"
    17.     card:
    18.       type: entities
    19.       title: 哪扇沒關
    20.       entities:
    21.         - binary_sensor.前門
    22.         - binary_sensor.後門
    23.         - binary_sensor.陽台門
    複製代碼

    conditional 卡片是重點
    門窗全關的時候,那張明細卡片根本不會出現。
    只在需要的時候才顯示資訊,這比「什麼都放上去」有用太多。

    一個小提醒

    群組不會自動包含新裝置。
    客廳加了新燈泡,記得回去把它加進燈光群組 ——
    不然自動化會漏掉它,而且不會報錯

    我的做法是做一個「孤兒偵測」範本感測器:
    1. template:
    2.   - sensor:
    3.       - name: 沒被分配區域的實體
    4.         state: >
    5.           {{ states.light
    6.              | rejectattr('entity_id', 'in', area_entities('living_room'))
    7.              | list | count }}
    複製代碼

    (實際寫法要把所有區域都排掉,比較長,但概念是這樣。)

    ---

    整理群組是那種「做的時候很煩,做完很爽」的事。
    我花了一個晚上把三十幾個燈整理成八個群組,之後寫自動化的速度大概快一倍。
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

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

    GMT+8, 2026-9-24 11:20 , Processed in 0.081813 second(s), 24 queries .

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