猫のケアというのは大変なもので、自分がどれだけ餌をあげたか、猫はどれだけ食べたか・残したか、など認知的なタスクが結構多い。自分のうっかりミスで猫が空腹で過ごしてしまう事態は避けたいので、この部分はテクノロジーを使って解決しようとXiaomiの自動給餌機と自動給水機をブラックフライデーで購入した。

Xiaomiの製品らしく同等製品と比べると一回り安い。Xiaomi Homeアプリも、食べた量の記録・通知や自動給餌設定など最低限必要なものは揃っている。

この2台を導入したおかげで普段の餌やり・水やりにかかる負担はだいぶ軽くなった。予想外に遅く帰ることになったり、2~3日家を空けるなどの人間都合のイベントがあっても猫の食事に影響がないというので安心感もある。

アプリの標準機能には限界がある

しばらく使っていて気づいたのは「ボウルにまだ食べ残しがあるときは給餌をスキップする」というよくあるシーンがどうも標準機能ではできないということだった。Xiaomiアプリの自動化機能もあるが、ボウルの重さをトリガーとして使えない。データとしては存在するのに、アプリには実装されていない。

Home Assistantとn8nで制御する

実はこれが購入の決め手になったのだが、Xiaomiは公式でHome Assistant統合を出している。

GitHub - XiaoMi/ha_xiaomi_home: Xiaomi Home Integration for Home Assistant
Xiaomi Home Integration for Home Assistant. Contribute to XiaoMi/ha_xiaomi_home development by creating an account on GitHub.

さらにHome Assistantはn8nと連携できるため、スマートホーム以外のWebサービスとも組み合わせてオートメーション構築がとてもラク。

Home Assistant node documentation | n8n Docs
Learn how to use the Home Assistant node in n8n. Follow technical documentation to integrate Home Assistant node into your workflows.

給餌機本体からのトリガーがないのでセルフホストn8nから定期的にポーリングして猫が餌を食べた記録をDiscordに送信したり、ボウルの餌の量に応じて自動給餌スケジュールをon/offするようにした。

気になった時にDiscordで確認できるのは楽だし、複数人家族の時は全員が確認できるのは便利そう。n8n経由でinfluxDBに保存しておくこともできるのでと後々データ分析したい場合はそちらに全部ぶち込んでおくと良い。

現状は通知がやや多くなってしまっているので、n8nのデータテーブルに一時的に貯めておいてまとめて報告するようにしたい。

Xiaomiの癖のある仕様

Xiaomi製品の制御はXiaomiのMIoT(Mi Internet of Things)プロトコルというのを通じてやりとりする必要がある。これがなかなか癖が強い。状態を取得すると色々と情報は取れる。実際には何を示しているのかはアプリを見ながら解釈していく作業が必要だった。

給餌スケジュールの更新はこの給餌プログラム更新というのを何とかするのだろうとずっと試行錯誤していたが、最終的にはDeep Wikiを使ってtext.set_valueサービスを使用してtextエンティティを更新する方法を見つけてなんとか打開した。

この癖の強い仕様はコミュニティもかなり悪戦苦闘しているようで、ドキュメントが中国語であることも日本人ユーザーとして大変な部分ではあるが、LLMの助けがあるので何とかなる。

猫の従僕として本質に集中していく

導入してかなり楽になった。子供の時に猫を飼っていたときは餌やりは個々人の感覚で適当に行なっていたが、今は1日に食べてるグラム数や食べている時間帯なども把握できている。それでいて餌やり以外の世話に認知資源を回せるのでより猫とニャンニャンできるようになった。

食事・給水という部分の自動化にXiaomiを組み込むことに抵抗がある人もいるかもしれないが、実際にXiaomiが担当しているのは餌やりの部分のみで、人間は確認と管理に集中できる。確認方法もDiscord・アプリ・目視と多重化されているので、日々の世話の何かで異変に気づくチャンスはむしろ増えている。

自動給餌機/給水機では乾燥剤やフィルターなどで案外ランニングコストがかかってくるが、3Dモデルを公開している人もいるのでDIYで安価に抑える方法もありそう。

Xiaomi Smart Pet Food Feeder Desiccant by GirayAkbay
This model is designed so that the dehydration box in the “xiaomi Smart Pet Food Feeder” machine is refillable.Add pause command mid print. Carefully open the existing dehydration box, enlarge the middle of the felt to 48 mm and place it inside the print and continue printing. Preferably, glue it carefully from the edges with hotglue. (cloth or paper tovel could also work)After printing, it is necessary to cut open the filling hole.The cover of the box can be glued with a non-toxic adhesive after the dessicant is filled. When the dessicant gets humid, it can be removed from the notch on the edge to be replaced and refilled.
Xiaomi Pet Fountain Filter by normen
Fill the smaller tray with 3mm activated carbon pellets and combine with the larger tray, then insert into fountain.OpenSCAD model might follow, I have to clean it up from dependencies. Nudge me if you need to adapt.

なお、今回はXiaomiを買ってみたが、ペット周りの自動化はPetkit製品がコミュニティの統合なども多く公開されているので良さそう。使ってる人いたら教えて欲しい。

GitHub - Jezza34000/homeassistant_petkit: 😺🐶 Control your PetKit devices with camera support, all in Home Assistant
😺🐶 Control your PetKit devices with camera support, all in Home Assistant - Jezza34000/homeassistant_petkit

なお、自分で餌をあげないと本当にただ自分の周りをうろつくでかい生物としか認識されなさそうなので、適宜美味しいものを手で与えるようにしている。