マカロニペンギンの健忘録

特にテーマを決めているわけじゃないが、私が気になったことを書いていく予定です。

Raspberry Piで監視カメラをつくる

2017年04月06日 | 電子工作

息子の部屋でお菓子が無くったという連絡を受けて、監視カメラを作るプロジェクトを立ち上げました。

ハードルは大きく分けて3つ

1.LinuxのプログラムMotionを使いこなす
2.Sambaの設定をする
3.Raspberry Piのメモリーを利用するため、ある程度画像が溜まったら自動的に削除するプログラムを作る



1−1 Motionをインストールをする sudo apt-get install motion
1−2 /etc/motion/motion.confの設定をする
1−3 設定値はサンプルを基本にして適当に設定しました。(静止画のみ、3秒おきに撮影、640×480) ※変更箇所のみピックアップ 

width 640
height 480
minimum_frame_time 3
threshold 4000
ffmpeg_output_movies off
target_dir /home/pi/Pictures
stream_port 0 


1-4 webcontrol_port 8080 であればブラウザで設定ができます。Raspberry Pi上のブラウザのURL欄に127.0.0.1:8080を入力してください。ただし、設定完了後にはSaveをお忘れなく

1−5 デーモンで動かす

 

2−1 Sambaの設定はSambaのホームページからサンプルをダウンロードして多少変更して使用しています。
「Chapter 2. 手軽な始め方: 短気な方への手引き」の「スタンドアローンサーバー」の「Example 2.1. 匿名リードオンリサーバー設定」を参考に設定しました。
ちなみにこの設定では外部から写真を閲覧はできますが、削除はできません。


 
3−1 ある容量以上に達した場合、古いファイルから削除するスクリプトをPythonで作ってみました。

# coding: Shift_JIS
import os
from operator import itemgetter
picture_space = 30720                       # 30720 = 30 * 1024

d_name = '/home/pi/Pictures/'
file_list = []
size_counter = 0

#ファイルデータ取得
for file in os.listdir(d_name):
   file_info = os.stat(d_name + file)
   file_list.append([d_name + file , file_info.st_mtime , int(file_info.st_size / 1024)])
   size_counter = size_counter + int(file_info.st_size / 1024)

#古い順にソート
file_list.sort(key = itemgetter(1))

#ファイルの削除
for file in file_list:
   if size_counter > picture_space:
     size_counter = size_counter - file[2]
     os.remove(file[0])
   else:
     break