息子の部屋でお菓子が無くったという連絡を受けて、監視カメラを作るプロジェクトを立ち上げました。
ハードルは大きく分けて3つ
1.LinuxのプログラムMotionを使いこなす
2.Sambaの設定をする
3.Raspberry Piのメモリーを利用するため、ある程度画像が溜まったら自動的に削除するプログラムを作る
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
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)
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))
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
if size_counter > picture_space:
size_counter = size_counter - file[2]
os.remove(file[0])
else:
break