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

    Home Assistant 範本實戰:從開發者工具測到寫進設定檔的完整流程

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 02:22:38 | 顯示全部樓層 |閱讀模式
    範本(Template)是 Home Assistant 裡最省力的一塊:同一段 Jinja 語法可以放進自動化的條件、通知的訊息、儀表板的標題、或做成一個獨立的感測器。但它也是最容易寫出「不報錯、只是答案不對」的一塊。

    這篇的順序就是實際動手的順序:先學會在編輯器裡即時測,再一段一段把語法試過,最後把測好的東西寫進設定檔變成永久的感測器。全部都可以複製貼上。

    範本(Template)是 Home Assistant 裡最省力的一塊:同一段 Jinja 語法可以放進自動化的條件、通知的訊息、儀表板的

    ━━ 步驟 1:打開範本編輯器,這是後面每一步的工作檯 ━━

    很多人不知道有這個頁面,土法煉鋼改 YAML、重啟、看結果,一輪要三分鐘;用這個頁面一輪是零點五秒。

    路徑:左側選單 → 開發者工具 → 上方分頁 → 範本。

    看不到「開發者工具」 → 你的帳號不是管理員。設定 → 人員 → 使用者 → 點自己 → 把「管理員」打開。

    你會看到什麼:畫面分成左右兩欄。左邊是可以編輯的文字框,裡面預設塞了一大段範例;右邊是即時算出來的結果。改左邊一個字,右邊立刻跟著變,不用按任何按鈕。

    先做一件事:把左邊那一整段預設範例全部刪掉。它很長,會蓋掉你自己要測的東西。

    1-1 先測一個一定會動的

    在空白的左欄貼上:
    1. 現在是 {{ now().strftime('%Y-%m-%d %H:%M:%S') }}
    2. 星期 {{ now().weekday() }}
    複製代碼

    你會看到什麼(右欄):
    1. 現在是 2026-09-25 14:30:12
    2. 星期 3
    複製代碼

    右邊沒有反應、或顯示紅色錯誤 → 檢查大括號是不是兩個({{ 不是 {),以及中文的全形括號有沒有混進去。

    1-2 記住這個頁面的一個限制

    範本編輯器不認得 trigger、this、repeat 這些變數,因為它們只在自動化執行的當下才存在。所以自動化裡用到 trigger.to_state 的那幾行,在這裡測會報錯,那是正常的 —— 那部分要用自動化的「追蹤(Traces)」去看。

    ━━ 步驟 2:取值 —— 四個你每天都會用到的函式 ━━

    把下面整段貼進左欄,把實體名稱換成你自己的(不知道名字的話,到 開發者工具 → 狀態 分頁去抄):
    1. 狀態(一律回傳文字):{{ states('sensor.ke_ting_wen_du') }}
    2. 轉成數字:            {{ states('sensor.ke_ting_wen_du') | float(0) }}
    3. 取屬性:              {{ state_attr('light.ke_ting', 'brightness') }}
    4. 判斷是不是某狀態:    {{ is_state('light.ke_ting', 'on') }}
    5. 判斷屬性是不是某值:  {{ is_state_attr('climate.leng_qi', 'hvac_action', 'cooling') }}
    6. 這個實體還活著嗎:    {{ has_value('sensor.ke_ting_wen_du') }}
    複製代碼

    你會看到什麼:
    1. 狀態(一律回傳文字):28.4
    2. 轉成數字:            28.4
    3. 取屬性:              180
    4. 判斷是不是某狀態:    True
    5. 判斷屬性是不是某值:  False
    6. 這個實體還活著嗎:    True
    複製代碼

    幾個判讀重點:


    • 前兩行看起來一樣,但型別完全不同。 第一行是文字 "28.4",第二行是數字 28.4。這個差別會在步驟 6 咬人
    • 取屬性回傳 None → 那個屬性不存在,或者燈是關的(關燈時 brightness 屬性會消失)
    • has_value 回傳 False → 實體不存在、或狀態是 unavailable / unknown


    2-1 怎麼知道一個實體有哪些屬性

    到 開發者工具 → 狀態 分頁,在「實體」那欄輸入名稱,點下去。

    你會看到什麼:下方出現一個表格,列出這個實體的所有屬性名稱和目前的值。那些名稱可以直接抄進 state_attr() 的第二個參數。

    ━━ 步驟 3:防呆 —— 這一步不做,前面全都是地雷 ━━

    Home Assistant 的感測器會不定時變成 unavailable(裝置重開、Wi-Fi 斷一下、Zigbee 掉一次封包)。範本碰到 unavailable 的行為,決定了你的自動化是「暫時不動作」還是「整條炸掉」。

    貼這一段測:

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

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

    本版積分規則

    延伸閱讀

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

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

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

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