動体検知で撮影した画像をLINEに自動送信する:名刺サイズの超小型PC「ラズパイ」で遊ぶ(第11回)(2/3 ページ)
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。ラズパイに接続したカメラで動体検知したときに、撮影した画像をLINEに送る方法を紹介します。
LINEに画像とメッセージを送信するように設定する
ではLINEに静止画とメッセージを送信するように設定しましょう。設定場所はmotion.confの「on_picture_save」というところです。
Ctrl+Wで検索したら、以下のように記述します。
on_picture_save curl -X POST -H "Authorization: Bearer (発行されたトークン)" -F "message = ラズパイから画像を送ります" -F "imageFile=@%f" https://notify-api.line.me/api/notify
「Authorization: Bearer」のあとには半角スペースが入ります。これは前回でも解説した方法と同じで、curlコマンドで送信するやり方です。「imageFile=@%f」にある「%f」はmotionが出力する絶対パスでのファイル名です。
以上の設定が終了したら、motionを起動しましょう。
$ sudo motion
すると、動きを検知したときにLINE宛に画像が送信されます。
画像が送られてこない場合は、motionが起動しているかコマンドで調べます。
$ service motion status
これを実行したとき、以下のように表示されていれば動作しています。
● motion.service - LSB: Start Motion detection Loaded: loaded (/etc/init.d/motion; generated) Active: active (exited) since Mon 2019-11-18 10:41:53 JST; 1min 4s ago Docs: man:systemd-sysv-generator(8) Process: 319 ExecStart=/etc/init.d/motion start (code=exited, status=0/SUCCESS 11月 18 10:41:53 raspberrypi systemd[1]: Starting LSB: Start Motion detection... 11月 18 10:41:53 raspberrypi motion[319]: Not starting motion daemon, disabled v 11月 18 10:41:53 raspberrypi systemd[1]: Started LSB: Start Motion detection.
この表示の3行目にある、「Active: active (exited)」が「motionが動いている」という意味になります。上記の表示が出るのに画像が送られていないときは、トークンの文字列が正しく記述されているか確認してみてください。また、重複起動していると正常に動作しない場合がありますので、以下のように入力して、重複を確かめましょう。
$ ps -def | grep motion
以下のように表示されていれば問題ありません。
root 614 1 12 10:59 ? 00:00:34 motion pi 758 597 0 11:04 pts/0 00:00:00 grep --color=auto motion
コマンドを入力すると上記の内容が表示されます。なお、起動を確かめようとして複数回「motion」コマンドを入力すると、二重起動してしまうことがあります。「root」の行にある「motion」が2つある場合は重複しています。
root 557 1 11 11:27 ? 00:00:17 motion root 866 1 0 11:30 ? 00:00:00 motion pi 878 811 0 11:30 pts/0 00:00:00 grep --color=auto motion
といった場合です。この場合は「sudo pkill motion」と入力して、motionのプロセスを削除したら、「sudo motion」で起動してもよいでしょう。ラズパイ自体を再起動させるのも1つの手です。
ちなみに筆者の環境でのテスト結果ですが、motionが何枚も画像を作成してそれを一度にLINEに送ろうとした場合、送信の間隔があまりにも短いと届かないことがありました。LINE当てに画像が届いていないときはこれに引っかかった可能性もありますので、しきい値を大きくするなどして調整してみてください。
なお、ラズパイ起動時にmotionを自動起動させるためには、
$ sudo nano /etc/rc.local
として「rc.local」ファイルを開いたら、「# By default this script does nothing.」のあとに「motion &」と記述しておくと、ラズパイ起動時に自動起動します。
Copyright © ITmedia, Inc. All Rights Reserved.