ラズパイで監視カメラを作ってみた

August 05, 2018

こちらのサイトを参考にラズパイZeroと下記リンクの専用カメラを使って監視カメラを作ってみました。


サインスマート Raspberry Pi 用 カメラモジュール Camera Module for ラズベリーパイ

motionという動き検出を行ってくれるソフトを使いますが、/dev/video0がなかったので、こちらの手順を参考にしてV4L2ドライバをロードするための設定が必要でした。

motionで動きを検出した時に撮影される画像の保存の時には下記のようなスクリプトを作って自作の画像アップロード用サーバ(Spring BootでWEBAPIを実装)にアップロードするようにしました。

# -*- coding: utf-8 -*-
import requests
import sys
import os
import random

URL = 'https://xxxx/api/images'

path = sys.argv[1]
with open(path,'rb') as image:
  image = open(path,'rb')
  files = {'upload_file': ('camera.jpg', image, 'image/jpeg')}
  data = {'filetype':'jpeg'}
  r = requests.post(URL, files=files, data=data)
  print r.text

os.remove(path)

デフォルトでは、頻繁に画像が撮影されてしまい、スクリプトが次々に起動されてラズパイの動作がおかしくなるので、motionの設定(/etc/motion/motion.conf)を修正しています。具体的には、event_gapを5、output_pictureをbestにデフォルトから変更しました。こうすることで、5秒に1枚(もっとも変化があった画像?)だけ、動きがあれば撮影されるようです。

また、アップロードサーバに画像がPOSTされるとスマホアプリ(HomeWatcherという自作のAndroidアプリ)にFirebaseで通知して、通知をタップすると撮影画像を確認できるようにしました。