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

    自動化的變數與迴圈:variables 與 repeat 從零跑到會動

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 08:39:03 | 顯示全部樓層 |閱讀模式
    這一篇做完,你會有一個「門開太久就每五分鐘提醒一次、語氣逐次加強、門關了自動把通知清掉」的自動化,而且中途每一步都看得到它算了什麼。

    這一篇做完,你會有一個「門開太久就每五分鐘提醒一次、語氣逐次加強、門關了自動把通知清掉」的自動化,而且中途每一步都看得到它算了什麼。

    用到的東西只有兩個:variables(先算好一個值,後面重複用)和 repeat(同一段動作跑很多次)。兩個都是 Home Assistant 內建的,不用裝任何東西。

    步驟 0:先湊齊三樣東西

    照這篇做需要:


    • 一顆可以開關的燈,例如 light.living_room
    • 一個門窗磁簧感測器,例如 binary_sensor.back_door
    • 手機上裝好 Home Assistant 官方 App 並登入過(才會有通知動作)


    這三個的名字你家一定跟我寫的不一樣,先查出你自己的:

    到 設定 → 工具 → 狀態,在「實體」欄位打 `light.` 或 `binary_sensor.`,清單會列出你家所有符合的實體。挑出你要用的,把完整的 entity_id 記下來。

    (「開發者工具」搬家過兩次:2026.2 從側邊欄移進「設定」底下,2026.8 改名叫「工具」。舊教學寫的「側邊欄 → 開發者工具」現在找不到,不是你的 HA 壞掉。)

    通知動作的名字要另外查。到 設定 → 工具 → 動作,在動作欄位打 `notify.`,你會看到一串以 `notify.mobile_app_` 開頭的項目,後面接的是你手機的名字,例如 `notify.mobile_app_charles_iphone`。

    看不到任何 notify.mobile_app_ 開頭的項目,代表手機 App 還沒把自己註冊進來——打開手機 App、進「設定 → 同伴應用程式」隨便存一次設定,回來重新整理這個頁面就會出現。

    下面所有範例裡的 `notify.mobile_app_charles`、`light.living_room`、`binary_sensor.back_door` 都要換成你查到的名字。

    步驟 1:不用變數的樣子,先看看問題長怎樣

    到 設定 → 自動化與場景 → 建立自動化 → 建立新的自動化,右上角三個點 → 編輯 YAML,把整段換成這份:
    1. alias: 燈光時段測試
    2. description: 沒有變數的版本
    3. triggers:
    4.   - trigger: state
    5.     entity_id: input_boolean.test_trigger
    6.     to: "on"
    7. conditions: []
    8. actions:
    9.   - action: light.turn_on
    10.     target:
    11.       entity_id: light.living_room
    12.     data:
    13.       brightness_pct: >
    14.         {{ 5 if (now().hour >= 22 or now().hour < 6) else 80 }}
    15.   - action: light.turn_on
    16.     target:
    17.       entity_id: light.dining_room
    18.     data:
    19.       brightness_pct: >
    20.         {{ 5 if (now().hour >= 22 or now().hour < 6) else 80 }}
    21. mode: single
    複製代碼

    這份用到一個 `input_boolean.test_trigger`,它不會自己出現,要先建。到 設定 → 裝置與服務 → 輔助元件 → 建立輔助元件 → 切換,名稱打 `test trigger`,按建立。

    你會看到清單裡多一列「test trigger」,點進去右上角齒輪,實體 ID 那欄應該是 `input_boolean.test_trigger`。不是這個名字(例如變成 `input_boolean.test_trigger_2`),就把上面 YAML 裡的名字改成它實際的樣子。

    這份自動化的毛病很明顯:同一段判斷寫了兩次。哪天你想把夜間亮度從 5 改成 3,一定會漏掉一個,而且漏掉之後兩盞燈亮度不一樣,你會以為是燈泡壞了。

    步驟 2:改成用變數

    一樣的畫面,把 `actions:` 底下整段換成:

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

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

    本版積分規則

    延伸閱讀

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

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

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

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