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

    「到家」偵測:五種訊號從零設定到組合判斷的完整步驟

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 11:47:37 | 顯示全部樓層 |閱讀模式
    「我回到家了」這件事,在 Home Assistant 裡沒有一個訊號能單獨做對。這一篇把五種訊號一個一個設起來,然後組合成一個你敢拿來開冷氣的判斷,最後教你怎麼在家裡就測完,不用真的開車出門。

    「我回到家了」這件事,在 Home Assistant 裡沒有一個訊號能單獨做對。這一篇把五種訊號一個一個設起來,然後組合成一個你敢拿來開冷

    這篇做完你會有什麼


    • 五個獨立的到家訊號,每一個都在開發者工具裡看得到狀態
    • 一個 binary_sensor.charles_zai_jia,把五個訊號合成一個不會亂跳的答案
    • 一個 binary_sensor.jia_li_zhen_de_you_ren,連訪客和睡著的人都算得進去
    • 一套不用出門就能跑的測試流程


    先把名字講清楚

    底下所有 YAML 都用 charles 這個使用者、iPhone 這支手機當例子。你自己的實體名稱幾乎一定不一樣。

    查自己名字的方法,之後每一步都會用到:開發者工具 → 狀態分頁 → 上方「實體」欄位輸入關鍵字 → 直接用滑鼠把實體 ID 複製起來,不要用猜的或用手打。

    步驟 1:先建立區域(zone),這是所有定位訊號的基礎

    沒有區域的話,GPS 回報的只是一組經緯度,Home Assistant 不知道那算不算「家」。


    • 設定 → 區域
    • 最上面那筆叫家(Home),點進去
    • 在地圖上把標記拖到你家屋頂的正上方,不要用地址搜尋的結果 —— 地址通常落在路邊
    • 半徑填 120 公尺
    • 儲存


    半徑為什麼是 120 公尺:手機在市區的 GPS 誤差常態就有 20 到 50 公尺,住大樓更差。半徑設 50 公尺的話,你人明明在沙發上,位置卻會一直在 home 和 not_home 之間跳,所有自動化跟著亂觸發。寧可範圍大一點,晚一點才判定離家。

    接著再建一個大圈,等一下第 6 步的「提前預熱」要用:


    • 同一頁 → 右下角新增區域
    • 名稱填 回家路上
    • 位置拖到跟家裡同一個點
    • 半徑填 1200 公尺
    • 圖示可以填 mdi:car


    你會看到:開發者工具 → 狀態,搜尋 zone,出現 zone.home 和 zone.hui_jia_lu_shang 兩筆,狀態是目前在該區域裡的人數(沒人就是 0)。

    看不到 zone.hui_jia_lu_shang:中文名稱被轉成拼音時會跟你想的不一樣。回開發者工具用 zone. 三個字搜尋,會把全部區域列出來,照實際看到的名字改下面的 YAML。

    步驟 2:訊號一 —— 手機 GPS

    這是唯一能「提前」知道的訊號,也是最不準的那一個。

    2-1 先把 App 裝起來並登入

    手機上安裝 Home Assistant App(iOS 在 App Store、Android 在 Play 商店),用你的帳號登入一次。

    2-2 iPhone 的設定


    • iPhone 的系統設定 → 往下找到 Home Assistant → 位置 → 選 永遠
    • 同一頁的精確位置要打開。關掉的話 iOS 只給你一個幾公里誤差的模糊座標
    • 同一頁的行動數據要打開,不然離開家裡 Wi-Fi 後就回報不了
    • 回到 Home Assistant App → 右下角設定 → 同伴應用程式 → 位置,確認背景位置更新是開的


    ⚠ iPhone 的低耗電模式會直接停掉背景定位,而且沒有任何提示。電量低的時候你的到家自動化就是不會動,這不是設定壞了。這也是為什麼後面一定要有第二種訊號。

    2-3 Android 的設定


    • Home Assistant App → 設定 → 同伴應用程式 → 管理感測器 → 位置感測器
    • 把區域式追蹤(Zone Based Tracking)打開
    • 把背景位置(Background Location)打開
    • 手機的系統設定 → 應用程式 → Home Assistant → 電池 → 選不受限制


    Android 的省電策略是各廠自己做的,小米、OPPO、三星的選項名稱都不一樣,關鍵字是「自動啟動」「背景活動」「電池最佳化」,把 Home Assistant 全部設成不限制。

    2-4 把手機綁到人


    • 設定 → 人員 → 點你自己(沒有的話按右下角新增)
    • 下方選擇要追蹤的裝置,把你的手機勾起來
    • 儲存


    2-5 驗證

    開發者工具 → 狀態,搜尋 person.


    • 你會看到 person.charles,狀態是 home
    • 點開它下面的屬性,有 latitude longitude gps_accuracy 三個欄位
    • gps_accuracy 是誤差公尺數,在室內通常是 10 到 65。超過 100 的話你的區域半徑要再放大


    再搜尋 sensor. 加上你的手機名字,你會看到 sensor.iphone_last_update_trigger 這一筆。它會寫出上一次位置更新是被什麼觸發的(例如 Significant Location Update、Background Fetch、Manual)。

    查不到 person.charles 或狀態是 unknown:手機 App 沒有登入成功,或是步驟 2-4 沒有把裝置勾起來。
    狀態一直是 not_home 但你人在家:區域半徑太小,回步驟 1 改成 120。

    步驟 3:訊號二 —— 手機連上家裡的 Wi-Fi(最實用的一個)

    這是準確度和成本的最佳平衡點:不用買任何東西、不吃手機電、進門幾秒內就知道。

    ⚠ 不要用「抓手機 MAC 位址」的老方法。 iPhone 的「私密 Wi-Fi 位址」和 Android 的「隨機 MAC」預設都是開的,每次連線的 MAC 都不一樣。網路上大量教學還停在那個作法,照抄會得到一個時好時壞的偵測。

    正確作法是讓手機 App 自己回報它連上哪個 Wi-Fi。

    3-1 打開 SSID 感測器

    iPhone:


    • Home Assistant App → 設定 → 同伴應用程式 → 感測器
    • 找到 SSID 和 Connection Type,確認都是開啟


    Android:


    • Home Assistant App → 設定 → 同伴應用程式 → 管理感測器 → 連線感測器
    • 把 Wi-Fi Connection 打開


    3-2 驗證感測器在跑

    開發者工具 → 狀態,搜尋 ssid 或 wifi。

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

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

    本版積分規則

    延伸閱讀

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

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

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

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