やりたいこと
我が家に赤ちゃんがもう少しでやってくる予定です。スマホで家庭内遠隔見守りを実現したいなと思い自作しました。家事などで赤ちゃんから離れるときに利用することを想定しています。ベビーモニタという商品が世の中にはあるので、N番煎じです。
デモ動画
おうちカメラのデモ動画 pic.twitter.com/nSCZwddsNg
— YU2TA7KA (@UGKGbrothers) 2019年6月7日
システム構成
システム構成図
ハードウェア
名前 | 用途 | 価格 |
---|---|---|
ラズパイ環境(Raspberry Pi 3 Model b+) | ストリーミングの配信。定期撮影データの保存。 | 8,800円 |
Raspberry Pi Official Camera V2 | ラズパイに装着して、撮影を行う。 | 4,580円 |
スマートフォン | ストリーミング配信視聴端末。日常利用していない古いものを利用。Simカードなし。 | 0円 |
お菓子の箱 | ラズパイ収納ケースとして利用。 | 0円 |
WiFi無線ルータ | 家庭内ネットワークの構築。 | 4,480円 |
ソフトウェア
名前 | 用途 |
---|---|
MJPG-streamser | ストリーミング配信 |
cron | 定期撮影の実行 |
systemd | ラズパイ起動時にアプリケーションを実行開始する(未実装) |
Google フォト | 定期撮影したデータをAPIで自動でアップロードする(未実装) |
$ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 9.9 (stretch) Release: 9.9 Codename: stretch $ uname -a Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux
機能
ストリーミング配信
カメラで撮影した画像をMJPG-streamserによりストリーミング配信します。同じWiFi環境にある端末からブラウザでアクセスすることが可能です。そのため、遠隔から赤ちゃんの状態を確認することができます。
定期撮影
cronにより定期的に撮影を行います。いろいろな姿の赤ちゃんを撮影できる見込みです。
手動撮影
MJPG-streamserのsnapshot機能によりブラウザから撮影が可能です。
今後実装したい機能
- ラズパイ起動時の自動実行(最優先)
- 気温表示
- 気温によるエアコン制御
- 定期撮影した画像をGoogle フォトへ自動アップロード
- 撮影画像による表情分類
参考サイト
Raspberry Pi 3 の標準カメラで撮影した動画をブラウザに配信する方法まとめ - Qiita
http://g-action.gack2u.com/timelapse/
http://www.shurey.com/js/samples/2_msg10.html
Raspberry Piでスケジュール実行する方法 - Qiita
Raspberry Piでcronを使った時の話し - Qiita
Raspberry Pi で systemd を使ってプログラムを自動実行する - Qiita
おわりに
ラズパイ起動時の自動実行を実装できればひとまず運用できそうな見込みです。動画配信の機能自体はすぐに実装できたのですが、定期撮影や撮影したデータの扱い、systemdなどの制御で手間取っています。ネット上に情報は多いので、一歩ずつやっていけばなんとかなりそうかなと思います。
ラズパイでいろいろやってて思うのは、家庭内WiFi環境あるとおうちハックが捗ります。むしろ無いとかなり機能が制限されるか家中にLANケーブルが這うことになりそうです。学生のときはバリバリ有線LANで作業してたので、改めて技術革新しているなぁと思いました(今さら)。
エラー対応メモ
cron関係
MTAのインストール不足
CRON[1614]: (CRON) info (No MTA installed, discarding output)
$ sudo apt-get install postfix
コマンドメモ
mjpg-streamerのインストール
$ sudo apt-get install -y cmake libv4l-dev libjpeg-dev imagemagick $ git clone https://github.com/jacksonliam/mjpg-streamer.git $ cd mjpg-streamer/mjpg-streamer-experimental $ make
動画の配信
$ ./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -x 640 -y 480 -fps 30 -q 10"
http://[IPアドレス]:8080
でブラウザからアクセス
mjpg-streamer/mjpg-streamer-experimental/www/stream_simple.html
にカメラ画像のみを表示するサンプルWebページがある。ここに好きな情報を追加していく。