|
|
長輩多半不喜歡被攝影機拍。這一篇用五個感測器做出「今天一切正常」的判斷,全篇不用攝影機、不錄音,而且每一段都是可以直接貼進設定檔的完整內容。

先講清楚這套系統在做什麼、不做什麼
它做的是:偵測「跟平常不一樣」。不是知道長輩在做什麼,而是知道有沒有異常。
它不做的是:在事情發生的當下救人。它只能讓你比「等到有人想起來打電話」早幾個小時發現。
這兩句話決定了後面所有的設計取捨。
為什麼不用攝影機
- 長輩會有被監視的感覺,而且常常直接把它拔掉或轉向牆壁。裝了但不能用等於沒裝
- 攝影機要有人看才有用。感測器是主動通知你,不用一直盯
- 洗澡、換衣服的隱私問題沒有好的解法
步驟 1:先決定架構 —— 主機放哪裡
兩種做法,結論是第一種,但理由要講清楚:
- 做法 A:長輩家放一台完整的 Home Assistant,你遠端連進去
- 優點 長輩家網路斷掉時,本地的自動化照樣運作
- 感測器的資料留在長輩家,不經過你的網路
- 缺點 你要維護兩套系統
- 做法 B:長輩家只放感測器和無線閘道,資料傳回你家的 Home Assistant
- 優點 只有一套系統要管
- 缺點 長輩家網路一斷,整套就完全失效 —— 而且失效的樣子
- 跟「長輩今天很安靜」完全一樣
複製代碼
選 A 的關鍵理由是缺點那一欄:做法 B 的失效方式和真正的緊急狀況長得一模一樣,你分不出來。
零件清單(主機部分)
- Intel N100 迷你主機(16GB 記憶體、512GB SSD),約 5,500 元。搜尋關鍵字:N100 迷你主機
- Zigbee 協調器 Sonoff ZBDongle-E,約 700 元
- USB 2.0 延長線,約 100 元。這條不能省,協調器貼著主機會被 USB 3.0 的雜訊干擾,症狀是遠處的感測器常常掉線
- 小型不斷電系統(600VA),約 3,000 元。長輩家停電時,這是唯一能讓你知道停電了的東西
為什麼不推薦樹莓派:記憶體漲價之後,樹莓派 5 的 8GB 版本已經來到約 175 美元,加上必備的 SSD 轉接比 N100 還貴,而效能只有幾分之一。這個建議在兩年前是反過來的,看到舊文章推薦樹莓派時要注意日期。
步驟 2:五個感測器,以及各自在回答什麼問題
- 感測器 位置 回答的問題 價格
- -----------------------------------------------------------------
- 門磁 冰箱門 今天有沒有吃東西 約 300
- 門磁 大門 有沒有出門、幾點回來 約 300
- 人體感應器 客廳 白天有沒有在活動 約 400
- 門磁 浴室門 進去多久了 約 300
- 人體感應器 浴室 人真的在裡面嗎 約 400
- 溫濕度計 客廳 會不會太熱或太冷 約 350
- 緊急按鈕 床頭 主動求助 約 400
複製代碼
冰箱門為什麼是最有價值的一個
- 每天一定會開好幾次,而且時間分布很規律
- 完全不涉及隱私 —— 你只知道門開過,不知道拿了什麼
- 長輩不會覺得被監視,因為那看起來就是一塊貼在冰箱上的小磁鐵
- 它同時反映了「有起床」「有進食」「行動能力正常」三件事
安裝的三個細節
- 門磁的兩塊要對齊,縫隙小於 1 公分。冰箱門的膠條有厚度,磁鐵那一半可能要墊高
- 貼之前用酒精把表面擦過。冰箱門會凝結水氣,沒擦乾淨的話 3M 膠兩個月就掉
- 人體感應器不要對著窗戶、電視或冷氣出風口。它偵測的是紅外線溫度變化,會被陽光移動和熱氣流誤觸發
配對完成之後,把每一個裝置在 Zigbee2MQTT 裡改成英文名字。
這一篇會用這幾個名字,你可以直接沿用:
- binary_sensor.grandma_fridge_door
- binary_sensor.grandma_front_door
- binary_sensor.grandma_bathroom_door
- binary_sensor.grandma_living_room_motion
- binary_sensor.grandma_bathroom_motion
- sensor.grandma_home_temperature
- sensor.grandma_home_humidity
複製代碼
為什麼一定要英文:Home Assistant 會把中文名字音譯成拼音來產生實體 ID。你照著中文寫自動化會指到一個不存在的實體,而且完全不會報錯,那則自動化就只是永遠不動作。
確認方式:到設定 → 工具 → 狀態,篩選欄輸入 grandma。
你會看到上面那幾個實體。看到一串拼音(例如 binary_sensor.a_ma_bing_xiang)代表名字還是中文的,回 Zigbee2MQTT 改。

步驟 3:把原始的感測器變成看得懂的數字
感測器給的是「開了、關了」。要判斷「今天正不正常」,需要先把它們整理成幾個每天會變的數字。
下面這一整段放進 configuration.yaml 的最左邊(沒有縮排)。
- sensor:
- - platform: history_stats
- name: Grandma Fridge Opens Today
- unique_id: grandma_fridge_opens_today
- entity_id: binary_sensor.grandma_fridge_door
- state: "on"
- type: count
- start: "{{ today_at() }}"
- end: "{{ now() }}"
- - platform: history_stats
- name: Grandma Living Room Active Hours
- unique_id: grandma_living_room_active_hours
- entity_id: binary_sensor.grandma_living_room_motion
- state: "on"
- type: time
- start: "{{ today_at() }}"
- end: "{{ now() }}"
- - platform: history_stats
- name: Grandma Front Door Opens Today
- unique_id: grandma_front_door_opens_today
- entity_id: binary_sensor.grandma_front_door
- state: "on"
- type: count
- start: "{{ today_at() }}"
- end: "{{ now() }}"
複製代碼
history_stats 的三個參數只能剛好給兩個(start、end、duration 選兩個),給三個會驗證失敗。這裡給的是 start 和 end。
|
|