はじめに
Motion Webで紹介されているmotionの動体検知の開始/一時停止をcronで制御する方法を試したらハマったので紹介します。
Raspberry Piでmotionを起動している前提で話を進めます。
0 9 * * * root /usr/bin/lwp-request http://localhost:8080/0/detection/start > /dev/null
0 18 * * * root /usr/bin/lwp-request http://localhost:8080/0/detection/pause > /dev/null
環境
- モデル:Raspberry Pi 3 Model B
- raspbian:8.0
- moiton:3.2.12
- LWP:6.18
手順
- LWPのインストール
- ターミナルから実行して動作確認
- cronの仮設定 & 動作確認
- cronの本設定
1. LWPのインストール
最初にLWPをインストールします。
$ perl -MCPAN -eshell
cpan> install Bundle::LWP
cpan> quit
2. ターミナルから実行して動作確認
いきなりcronで実行するのではなく、まずはターミナルから実行して動作確認します。
下記のコマンドを実行してmotionの一時停止ができるか確認します。
$ lwp-request http://localhost:8080/0/detection/pause
Webブラウザからmotionの動体検知状況を確認します。下記の手順で確認ができます。
http://[Raspberry PiのIPアドレス]:8080/
detection
status
「Detection status PAUSE」と表示されると成功です。
"> /dev/null"までコマンドを実行すると出力が破棄されエラーがあってもわからないのでターミナルでの動作確認時は抜くとよいです。
3. cronの仮設定 & 動作確認
いよいよcronから制御させます。ターミナルで下記のコマンドを実行してcrontabの設定ファイル編集を行えるようにします。
$ crontab -e
動作確認のため直近で実行されるように仮設定します。
11 * * * * /usr/local/bin/lwp-request http://localhost:8080/0/detection/pause > /dev/null
※ 11の箇所は現在時刻の2分後以降を設定
※ crontab -eで設定するとユーザ名は不要なためrootを削除しています
※ Raspberry PiでLWPをインストールすると"/usr/local/bin/"にインストールされるためパスを変更しています
crontab設定後にターミナルでcronを再起動します。
$ sudo /etc/init.d/cron restart
Webブラウザからmotionの動体検知状況を確認してstatusがPAUSEだったら成功です。
4. cronの本設定
cronからの動作確認がとれたら後は本設定のみです。お好みの時刻に動体検知の開始/一時停止を設定します。下記にMotion Webに紹介されているのと同じ実行時刻設定の例を示します。
0 9 * * * /usr/local/bin/lwp-request http://localhost:8080/0/detection/start > /dev/null
0 18 * * * /usr/local/bin/lwp-request http://localhost:8080/0/detection/pause > /dev/null