外出中も家を確認できる「自宅警備員」
開発背景
外出時に、「照明の消し忘れ」、「忘れ物がないか」、「泥棒に入られていないか」など家の状態が気になってしまうことがあります。そこで、家に常駐して外から家の状態を確認することができ、家の照明を消すことができ、照明を消し忘れていないか通知してくれるIoTシステム「自宅警備員」を開発しました。
設計
本システムは、外出判定とUIを担当する「Androidアプリ」、AndroidアプリとRaspberry Piを繋ぐ「Webサーバ」、照明の状態判定、カメラ画像の撮影、照明の操作を担当する「Raspberry Pi」の3つで構成されています。
Androidアプリは、ユーザが家から出たかどうかの判定、Webサーバから受け取ったカメラ画像の表示、照明がついているかどうかのメッセージの表示を行います。
Webサーバは、Raspberry Piから受け取ったカメラ画像と照明がついているかどうかのメッセージをAndroidアプリに送信、また、Androidアプリから受け取った外出判定と照明を操作するコマンドのRaspberry Piへの送信を行います。
Raspberry Piは、Webサーバから外出判定と照明操作コマンドを受け取り、照明の状態判定、カメラ画像の撮影、照明の操作を行います。
実装
AndroidアプリのUIは以下のようになっています。
自宅の位置を保存し、自宅から200m離れた際にWebサーバに外出判定を送信します。また、Webサーバから1分ごとに部屋の画像を取得します。外出判定とメッセージの取得はアプリがバックグラウンドにある状態も行います。
Webサーバについては、現在の状態をDBに保存しておき、AndroidアプリとRaspberryPiは定期的にAPIサーバにリクエストを行うことでDBの状態を取得します。APIサーバの実装にはHono、デプロイにはRenderを用いていて、DBの実装にはSQLite、デプロイにはTursoを用いています。
RaspberryPiについては、「部屋の撮影」、「家電操作」、「自宅警備員」の3つの機能があります。
- 部屋の撮影
毎分の部屋の撮影と、外出判定を受け取った際に撮影を行い、撮影した画像をWebサーバに送信します。カメラについては、Raspberry Pi Camera Module V2をpiacamera2で制御します。回路図は以下のようになっています。 - 家電操作
事前にリモコンの出力を記録しておき、Webサーバから指示を受け取った際に指示に対応した赤外線LEDパターンを出力します。これにより、部屋の家電を操作することができます。 - 自宅警備員
部屋の画像から照明がつけっぱなしかどうかや、忘れ物がないかをVLM(Gemini)を用いて判断します。その後、Webサーバに判断結果を送信します。
まとめ
外出時の「照明の消し忘れ」や「防犯・忘れ物への不安」といった日常的な課題を解消するため、遠隔監視・遠隔操作・AIによる自動判断を統合したIoTシステム「自宅警備員」を開発しました。今後の課題・展望としては、対応する家電機器・操作コマンドの拡張があります。本システムにより、外出時におけるユーザの心理的負担を軽減し、安心で快適なスマートホーム環境を実現するための基盤を構築しました。
コメント