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

    做一個家人自己就能調的日出式鬧鐘:input_datetime、時間觸發器與漸亮迴圈完整作法

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 08:38:36 | 顯示全部樓層 |閱讀模式
    Home Assistant 內建的時間觸發器有一個很現實的問題:時間寫死在 YAML 裡。

    想把鬧鐘從 06:30 改成 07:00,你要打開設定檔、改一行、重新載入。家人完全不可能自己弄,於是這個鬧鐘的實際使用者永遠只有你一個。

    這篇把時間、開關、模式全部搬到介面上,做成一個任何人打開 App 就能調的日出式鬧鐘。

    任何人打開 App 就能調

    這篇會做完的事


    • 建三個輔助元件(時間、開關、模式),兩種建法都給
    • 把時間觸發器接到輔助元件上,並用觸發器自己的 weekday 選項過濾平日
    • 寫一段 15 分鐘從 1% 漸亮到 80% 的日出迴圈,色溫同步從暖光爬到白光
    • 依模式分流:只有燈 / 燈加音樂 / 燈加語音(語音那段會唸出當天天氣)
    • 做一張儀表板卡片,含「距離鬧鐘還有多久」的倒數
    • 加三層保險:賴床偵測、前一晚確認、以及自動化被中斷時的補救
    • 學會在不等到明天早上的情況下,把整條鏈路測一遍


    全部做完約兩小時。需要:一顆可調亮度(最好也可調色溫)的燈、一台 Home Assistant。音箱與語音那兩段是選配,沒有可以跳過。

    第零步:確認你的起點

    0-1 確認燈支援什麼

    到 開發者工具 → 狀態,篩選欄打你的燈,例如 light.zhu_wo。點那一列,右邊會展開屬性。

    你會看到類似:
    1. supported_color_modes: ['color_temp', 'hs']
    2. min_color_temp_kelvin: 2000
    3. max_color_temp_kelvin: 6535
    4. brightness: null
    5. color_mode: null
    複製代碼


    • supported_color_modes 裡有 color_temp → 色溫可調,這篇全部的功能你都做得到
    • 只有 brightness → 只能調亮度。後面所有 color_temp_kelvin 那幾行整行刪掉即可
    • 只有 onoff → 這顆燈只能開關,做不了漸亮。換一顆,或者改用「分段開燈」(第七步有替代方案)


    把 min_color_temp_kelvin 和 max_color_temp_kelvin 這兩個數字抄下來,第四步要用。超出範圍的值不會報錯,燈會自己夾在邊界上,結果就是「漸亮到一半色溫就不動了」。

    0-2 確認時區設對了

    設定 → 系統 → 一般,時區要是 Asia/Taipei。

    沒設對的話整個鬧鐘會差八小時,而且不會有任何錯誤訊息 —— 你只會在早上 2:30 被叫醒。

    驗證方式:開發者工具 → 範本,貼上:
    1. 現在(本地):{{ now() }}
    2. 時區:{{ now().tzinfo }}
    3. 現在(UTC):{{ utcnow() }}
    複製代碼

    你會看到:
    1. 現在(本地):2026-09-25 08:45:12.345678+08:00
    2. 時區:CST
    3. 現在(UTC):2026-09-25 00:45:12.345678+00:00
    複製代碼

    本地時間結尾不是 +08:00 → 時區沒設對,先回去設定。

    第一步:建立三個輔助元件

    兩條路,做一條就好。

    路線 A:介面(推薦,不會打錯字)

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

    1-A-1 建時間:選 日期與/或時間。


    • 名稱:鬧鐘時間
    • 圖示:mdi:alarm
    • 「包含日期」關閉、「包含時間」開啟


    「包含日期」一定要關掉。 兩個都開的話,這個鬧鐘只會在那個特定日期響一次,之後就再也不動了 —— 官方文件對這三種組合的說明是:只有時間的每天觸發、只有日期的在當天零點觸發一次、日期加時間的觸發一次。

    1-A-2 建開關:選 切換,名稱 鬧鐘啟用,圖示 mdi:alarm-check。

    1-A-3 建模式:選 下拉式選單,名稱 鬧鐘模式,選項一行一個填:
    1. 只有燈
    2. 燈加音樂
    3. 燈加語音
    複製代碼

    路線 B:YAML

    加進 /config/configuration.yaml 最外層:
    1. # /config/configuration.yaml
    2. input_datetime:
    3.   nao_zhong_shi_jian:
    4.     name: 鬧鐘時間
    5.     has_date: false
    6.     has_time: true
    7.     icon: mdi:alarm
    8.   nao_zhong_shi_jian_jia_ri:
    9.     name: 假日鬧鐘時間
    10.     has_date: false
    11.     has_time: true
    12.     icon: mdi:alarm-snooze
    13. input_boolean:
    14.   nao_zhong_qi_yong:
    15.     name: 鬧鐘啟用
    16.     icon: mdi:alarm-check
    17. input_select:
    18.   nao_zhong_mo_shi:
    19.     name: 鬧鐘模式
    20.     options:
    21.       - 只有燈
    22.       - 燈加音樂
    23.       - 燈加語音
    24.     initial: 燈加語音
    25.     icon: mdi:playlist-music
    複製代碼

    存檔後 開發者工具 → YAML → 檢查設定,綠燈之後完整重新啟動一次(第一次加入這三個整合,重新載入帶不起來)。

    1-4 驗證(不要跳過)

    開發者工具 → 狀態,篩選欄打 nao_zhong。

    你會看到四列:
    1. 實體                                  狀態
    2. input_datetime.nao_zhong_shi_jian     06:30:00
    3. input_datetime.nao_zhong_shi_jian_    07:30:00
    4.   jia_ri
    5. input_boolean.nao_zhong_qi_yong       off
    6. input_select.nao_zhong_mo_shi         燈加語音
    複製代碼

    把這四個實體 ID 完整複製下來,後面每一段 YAML 都要用。用介面建的話 ID 是系統從名稱產生的,不一定跟上面一樣 —— 請以你自己看到的為準。

    1-5 順便確認 timestamp 屬性

    點 input_datetime.nao_zhong_shi_jian 那一列,右邊展開屬性。

    你會看到:
    1. has_date: false
    2. has_time: true
    3. timestamp: 23400
    4. editable: true
    5. friendly_name: 鬧鐘時間
    複製代碼

    那個 timestamp: 23400 是「當天零點起算的秒數」(23400 秒 = 6 小時 30 分)。只有時間的輔助元件才是這種算法,日期加時間的會是一般的 Unix 時間戳。第六步的倒數會用到它。

    屬性裡沒有 timestamp → 你的「包含時間」沒開。官方寫得很明白:這個屬性 only available if has_time: true。

    第二步:把時間觸發器接上去

    這是整篇最短也最關鍵的一段:

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

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

    本版積分規則

    延伸閱讀

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

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

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

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