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

    Google 常式與 HA 自動化怎麼分工(2026 年的分界線已經移動了)

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 11:19:08 | 顯示全部樓層 |閱讀模式
    如果你看過的教學說「Google 常式沒辦法做條件判斷、沒辦法等待」,那份教學已經過期了。Google Home 現在有一個叫「腳本編輯器」的東西,會寫條件、會延遲、會用溫度當判斷依據。分工的那條線因此整個移動過。

    這篇會做完三件事:把新的分界線講清楚、把 Google 那一側實際寫一次、把 HA 這一側的橋接做起來並驗證。

    如果你看過的教學說「Google 常式沒辦法做條件判斷、沒辦法等待」,那份教學已經過期了。

    先搞清楚 Google 那邊有兩套東西

    很多人混在一起講,所以先分開:


    • 常式(Routine) —— Google Home App 裡點選單建的那種。「說某句話 → 做幾件事」。介面友善,但只能排一串動作
    • 腳本編輯器(script editor) —— 同一個 App 裡的進階入口,用 YAML 寫。這裡才有條件判斷與延遲


    「Google 常式做不到條件判斷」這句話,講的是第一種。第二種做得到。

    腳本編輯器實際長什麼樣

    這是官方範例的原樣,貼進去就能跑(裝置名稱要換成你自己的):
    1. metadata:
    2.   name: Synchronize two lights
    3.   description: If one light is turned on, turn the other on.
    4. automations:
    5. - starters:
    6.   - type: device.state.OnOff
    7.     device: Light A - Office
    8.     state: on
    9.     is: true
    10.   condition:
    11.     type: device.state.OnOff
    12.     device: Light B - Living Room
    13.     state: on
    14.     is: false
    15.   actions:
    16.   - type: device.command.OnOff
    17.     devices:
    18.     - Light B - Living Room
    19.     on: true
    複製代碼

    看三個地方:`starters`(什麼事情發生時啟動)、`condition`(還要滿足什麼才做)、`actions`(做什麼)。`condition` 就是 if。

    延遲也有,是一個動作型別:
    1. metadata:
    2.   name: Smoke detector lights
    3.   description: When smoke is detected, flash lights red then off.
    4. automations:
    5. - starters:
    6.   - type: device.state.SensorState
    7.     device: Smoke Detector - Kitchen
    8.     state: currentSensorStateData.SmokeLevel.currentSensorState
    9.     is: high
    10.   actions:
    11.   - type: device.command.ColorAbsolute
    12.     devices:
    13.     - Light - Living Room
    14.     color:
    15.       name: "red"
    16.   - type: time.delay
    17.     for: 5sec
    18.   - type: device.command.OnOff
    19.     devices: Light - Living Room
    20.     on: false
    複製代碼

    `time.delay` 就是「等一下再做下一件事」。

    裝置怎麼引用:官方的寫法是「裝置名 - 房間名」,例如 `Light - Living Room`。名字要跟 Google Home App 裡顯示的一字不差,包含中間那個前後有空格的減號。名字打錯時編輯器會在存檔那一刻用紅字標出來,不會讓你存進去 —— 這是它少數會當場告訴你錯了的地方。

    所以「做不到」的清單要重寫

    刪掉三項,留下四項,而留下來的這四項才是真正決定分工的:

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

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

    本版積分規則

    延伸閱讀

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

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

    GMT+8, 2026-11-10 01:02 , Processed in 0.129978 second(s), 25 queries .

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