我用 Home Assistant 搭建了一個「全自動」養貓方案。

編註:文中「xx/xx」格式的鏈接均為 Github 項目,可以將其復制後粘貼在「https://github.com/」後訪問。

自從去年意外收養了一隻流浪貓之後,單身生活突然就開始「喧囂」起來。

作為一隻奶牛貓,叫做 Nova 就很合理,名字來源是 DOTA2 英雄 Luna 的坐騎。

Nova 經歷了絕育加上眼瞼內翻手術之後,跟我建立起了患難與共的革命友誼。

但是作為一個典型的上班族,雖然不經常出差,也沒辦法時時刻刻照顧到貓 ,當然更多的原因是懶 。

因此從今年開始陸續購入了一些智能家居設備,盡可能使得我和 能夠相安無事、和諧共處。

這是一篇鴿了快一年的文章,期間設備、想法都在演進,至此這一套系統已經平穩運行相當長一段時間,並且已經隨著我搬了一次家。

分享出來希望對各位 家長有所幫助。

理念目標

簡而言之就是,在一個地方《Home Assistant》控制和同步所有貓相關的設備及狀態,並實現設備聯動。

如果你現在也在用自動貓砂盆、喂食器這些設備,你也一定會有這樣的痛點:

• 各家設備都有一個專用 App,占用後臺並且推送廣告;

• 除了米家出的喂食器和飲水機等,都不支持接入米家,也就是基本沒有設備聯動的可能性。

系統組成

我把和貓相關的設備分為這樣幾個層次和類別:

智能類: 即自動貓砂盆、喂食器和飲水機這三大件。

如果有長期出差需求的,可以說是必不可少。

傳感類: 一般是攝像頭或加上傳感器,出門在外掌握貓貓動態。

環境類: 掃地機器人、空氣凈化器之類清潔設備。

貓雖然比較愛幹凈,但是扒拉出來的貓砂和換毛期一簇簇的毛發,自然會加重清潔負擔。

為什麼選擇 Home Assistant

我選擇用自建的 Home Assistant 來管理相關設備的最主要理由很簡單。

以上的這些設備基本很難用一個 App 控制,每個設備都需要廠商專門的應用來使用,這就帶來兩個問題:

1. 我的手機上需要跑不少不必要的應用,並給我推送通知;

2. 無法完成一些跨設備的自動化操作。

盡管 Home Assistant 的搭建和維護成本不低,但是最後的效果是讓我非常滿意的。

我用 Home Assistant 搭建了一個「全自動」養貓方案。

我選了哪些設備

智能類自動喂食器:米家智能寵物喂食器 ⭐⭐⭐⭐ •飲水機:米家智能寵物飲水機 ⭐⭐ •貓砂盆:小佩智能貓廁所 PURA MAX ⭐⭐⭐

選擇的時候主要考慮兩點,一是足夠安全,二是能夠比較簡單地接入 Home Assistant。

喂食和喂水的直接選了米家,畢竟萬一自建的服務掛了,還能比較輕松地遠程控制設備。

而且能通過 al-one/hass-xiaomi-miot 非常輕松地接入 Home Assistant。

不過據說米家的喂食器會存在出糧偏少的情況,盡管我沒有遇到,還是建議定時喂食測試幾天之後確定貓合適的食量。

喂水的話其實並不必要,會有比較重的清洗和耗材負擔,還不如每次換一大碗新鮮的水。

貓砂盆的選擇可以說是讓人眼花繚亂,我選擇的時候還沒有能接入米家的設備,所以主要在小佩《 hasscc/petkit 》和 Catlink《 hasscc/catlink 》 都有比較靠譜的第三方集成。

因此品牌大概是確定下來,如果有同樣接入 Home Assistant 的需求,可以在 GitHub 上先搜索一下是否已經有集成。

最後剛好趁著小佩的 PURA MAX 打折,就以不到 900 的價格拿下了。

用了大半年的感受還是非常好的,我再也不用每天早上趕著上班急急忙忙鏟屎了。

其餘的優缺點供大家參考:

優點: 安全,官方配件齊全並且不貴。

貓砂盆通過前後傾倒使得結塊順著內部管道進入集便器,加上內置的傳感器有點過於靈敏,整個過程基本沒有卡貓可能。

另外在三方店鋪《比如拼多多》購買官方配件比較便宜,尤其推薦加購控砂盒。

缺點: 沒有一鍵清砂功能,邊緣容易粘底。

這算是這個結構帶來的額外的麻煩,雖然官方也售賣自動傾砂板能把所有貓砂倒入集便器,但是我試了下效率很低,並且還要自己手動去安裝和卸載。

同樣的原因內壁容易在使用過程中變得很臟,但是非常難清洗。

另外就是我家貓經常尿在邊緣,因為底部是弧形的,邊緣貓砂淺,經常會有粘底的貓砂需要手動鏟除。

不過這個問題在我換成膨潤土貓砂之後完美解決了。

最後小佩的第三方集成時常會出現請求失敗的情況,不清楚是小佩服務器還是集成的問題,如果當下這個時間點有合適的價格我應該會選擇能接入米家的產品,這樣也就意味著接入 HA 也比較穩定。

除此之外,後來發現小佩之前的產品據傳出現過問題,如有顧慮的謹慎購入。

傳感類• 攝像頭:樂橙 TA3 ⭐⭐⭐ • 傳感器:米家門窗傳感器《查看有沒有偷偷進我臥室》,米家人體傳感器《查看進食情況》⭐⭐

基於同樣的原因,我選擇了支持 ONVIF 標準的樂橙 TA3,可以比較直接接入 Home Assistant。

在選擇上建議大家選擇帶揚聲器比較便宜的設備即可,使用頻率不會很高。

理論上也可以在 Home Assistant 搭建一套本地的目標識別服務來記錄貓的行蹤,但是目前我還沒去折騰,僅僅在長時間離家的時候遠程招呼一下貓確認情況。

傳感器也不是必需的,不過因為之前租的房子比較老舊,臥室的門可以被貓撓開,所以出現過貓偷偷進去然後自己把自己鎖在裡面的情況,並且實在憋不住尿在了我床上。

不過與其實時給我通知貓潛入的消息,我直接在拼多多買了一個插銷從外面把門鎖住了。

環境類• 掃地機器人:石頭 G10S ⭐⭐⭐⭐ • 空氣凈化器:米家空氣凈化器 F1

在今年春天貓換毛之前我從未設想過,一隻 7 斤重的小貓咪能掉多少毛。

後來漸漸家裡地上都是北京春天地面楊絮一般的貓毛的時候,我才意識到我需要一個掃地機器人來拯救我。

同樣我選擇了能接入米家和 Home Assistant 的石頭 G10S,支持自動集塵和自動清洗拖佈,並且可以加裝自動上下水實現完全無人管理。

如果不需要拖地功能,建議購買帶自動集塵功能的即可。

另外我還二手購入了一個米家空氣凈化器 F1,結論是沒啥卵用,對於吸附貓毛來說太為難它了,並且我也不對貓毛過敏所以沒有辦法評判它的具體效果。

展示、控制和自動化

這部分會省略一些不必要的細節,僅提供必要的鏈接,畢竟都是現成的比較成熟的項目。

前端展示

這裡先主要羅列一下用到的資源和文檔。

相關設備主要集中在 專屬的 Tab,另外有空氣凈化器和掃地機器人的卡片的 Tab。

• 主題: Minimalist

• 卡片:

• 掃地機器 人:PiotrMachowski/lovelace-xiaomi-vacuum-map-car

• 空氣 凈化器:denysdovhan/purifier-card

• 卡片自定義: thomasloven/lovelace-card-mod

• 實體信息提取 :Templating – Home Assistant

Minimalist 是帶了相當多卡片模版的一款 HA 主題,總體來說比較容易上手配置。

但是由於其實也很少會通過 UI 來控制設備,並且 HA 後續會在重新設計默認界面,引入更多的內置卡片,如果想要避免折騰慎重入坑 HA 前端。

同樣掃地機器人和空氣凈化器的卡片我稍微用 card-mod 修改過以和其他卡片風格保持一致。

最後要額外提一下,如果要展示一些實體的屬性的話,需要使用 HA 的模版語法來提取屬性,並通過卡片透出。

這裡舉一個簡單的例子,從自動喂食器的 feedserve.outfood_num 屬性來獲取今天已經投喂的貓糧克數。

豎線 | 分割的是過濾器,分別表示默認值為 0 之後乘 5,這樣就把份數轉化為克數了。

– sensor:
– unique_id: mmgg_inland_pet_feeder_outcount
icon: mdi:food
name: “出糧總數”
unit_of_measurement: “g”
state: >
{{ state_attr(‘sensor.mmgg_inland_9103_pet_feeder’,’feedserve.outfood_num’ ) | default(0) | int(0) * 5}}

自動化

之前我是通過 Node-RED 實現自動化,後面就全部切成內置的自動化了。

Node-RED 的有點是界面比較直觀、上手快、容易調試,不過更推薦大家直接使用內置的自動化,是完全能夠替代的。

這裡簡單用幾個例子拋磚引玉了。

各種通知

前文提到我的一個主要需求是把不必要的 App 都禁用掉,這樣需要 HA 來給我進行相應的通知。

主要有以下幾個:

• 喂食器出糧通知

• 貓上廁所通知

• 維護類通知: 集便器滿了、飲水機沒水了、喂食器沒糧了

這裡用的就是自帶的 Confirmable Notification Blueprints,直接添加成腳本即可。

這裡就不貼 YAML 了,本身是用 UI 配置的,這裡指的注意的是文本裡面也可以使用 Template 在通知裡面透出相應的值。

可以先把想要的通知腳本先制作好,然後再設置自動化觸發這些通知腳本。

自動喂食

首先要做的是替換掉米家 App 進行自動喂食。

如果使用過米家的就會發現幾個痛點:

• 每天隻有三個固定時間可以投喂

• 開關自動投喂必須進 App,沒有辦法語音和自動化,更別說周末關掉自動投喂,工作日打開自動投喂這種更復雜的需求了。

首先,我們制作一個投喂的腳本,這個腳本會觸發自動喂食器進行投喂動作,這裡需要通過 YAML 設置。

這裡調用了 al-one/hass-xiaomi-miot 提供的 xiaomi_miot.call_action 服務。

siid 和 aiid 確定了對目標實體執行的具體動作,可以從 mmgg – 小米/米家產品庫 – Xiaomi Miot Spec 找到對應的設備提供的指令集。

投喂還需要指定份數,這個值我另外設置了一個輔助元素,默認是 5 份即 25g,可以根據自家小貓咪的食量設置。

alias: 投喂 Nova
fields:
num:
description: 投喂份數,每份 5g
example: “3”
sequence:
– service: xiaomi_miot.call_action
data:
siid: 2
aiid: 1
params:
– “{{ states(‘input_number.tou_wei_fen_shu’) }}”
entity_id: switch.mmgg_inland_feeding_measure
mode: single
icon: mdi:food

緊接著我們設置一個自動化,每天固定時間調用這個腳本進行喂食,直接用 UI 設置如下圖所示。

注意這裡設置了一個環境條件會判斷另外一個輔助元素「自動喂食」是否打開,這個可以讓我控制停止自動喂食計劃,比如我帶貓回老家或者周末在家自己喂貓。

自動清掃貓砂盆區域

這個例子我們實現一下貓上完廁所之後掃地機器人自動清掃貓砂盆區域或者自動開啟空氣凈化器。

這個自動化的邏輯很簡單,貓砂盆提供了一個「進入次數」的傳感器,當這個傳感器變化時,會通知到我的手機,這個通知腳本已經在第一個例子裡面做好了。

通知提供了一個「清掃地面」的按鈕,這個按鈕可以觸發另一個「打掃貓砂盆」的腳本。

核心的動作如下,即發送 app_zoned_cleaned 指令來進行固定區域的清掃,參數為矩形的四個頂點。

快捷控制

除去自動化,偶爾也需要手動控制。

因為打開 HA 應用太慢,可以通過設置腳本為桌面快捷方式或者磁鐵來控制,如果有 WearOS 手表的話,也可以設置如下右滑快捷方式開關。

當然如果有小愛音箱,也可以直接通過語音來控制實體或者輔助元素。

後語

俗話說得好,相逢即是緣、沒有醜貓貓隻有懶主人。

如果「不幸」命中註定遇到且又很懶,希望上文能對大家有一點點的幫助。

貓貓敬禮 (^^ゞ!

https://sspai.com/post/79141?utm_source=wechat&utm_medium=social

作者:yzlnew

責編:克萊德