新しいラズパイ4で動体検知カメラ motion + LINE Notify + Node-RED を試してみる (2)

新しいラズパイ4で動体検知カメラ motion + LINE Notify + Node-RED を試してみる (1)”の続きです。

 

新しく買った”Raspberry Pi 4″と手元にあった”LABISTS Raspberry Piカメラモジュール 1080P 5M OV5647センサー ケース付き“を使って動体検知カメラ、そして”LINE Notify“と”Node-RED“を絡めた電子工作に挑戦しています。

前回のTALKでは、ラズパイで動体検知カメラの定番ソフトウェア”Motion“のセットアップについてお話しましたので、今回はその続きです。

 

< LINE Notifyのアクセストークンを取得する >

LINE Notify“とは、Webサービスからの通知を公式アカウント”LINE Notify”を通じて”LINE“で受信するサービスです。”Webサービス”という箇所を”ラズパイ”と置き換えれば、今回やろうとしていることをイメージできるかと思います。

“LINE Notify”を利用するためには、以下の手順で、アクセストークンを取得する必要があります。

LINE Notify“にアクセスして、ご自身の”LINE“アカウントでログインして下さい。ログイン後、”マイページ”に移動します。

“マイページ”の”アクセストークンの発行(開発者向け)”欄にある”トークンを発行する”ボタンをクリックして下さい。

“LINE Notify”のAPI仕様は、”LINE Notify API Document”で閲覧できます。

トークン名は”LINE”のトーク画面に表示される通知の発信者名です。自分自身のアカウントに対して通知する場合は、”1:1でLINE Notifyから通知を受け取る”を選択して下さい。

“発行する”ボタンをクリックすると、アクセストークンが発行されます。アクセストークンは、以降、画面には表示されませんので、このタイミングに必ずメモって下さい。

発行済みのトークンを削除する場合は、”マイページ”で”解除”ボタンをクリックします。

 

発行済みのアクセストークンが使えることを確認しておきましょう。

ラズパイのターミナル画面で以下のコマンドを入力すると、”LINE”のトーク画面に”メッセージ”という通知が届くはずです。

curl -X POST -H 'Authorization: Bearer アクセストークン' -F 'message=メッセージ' https://notify-api.line.me/api/notify

※ ネット検索すると、コマンドではダブルコーテーションを使ったサンプルを多く見かけます。具体的な理由は分かりませんが、POOHの環境ではうまく実行できず、上記のようにシングルコーテーションであれば正常に動作したので、以降、シングルコーテーションを使ったサンプルを掲載します。

 

< LINE NotifyのAPIで画像付きメッセージを通知する >

“LINE”のトーク画面にメッセージを送れるようになったので、今後は画像付きのメッセージを送ってみましょう。

先程のコマンドに、画像ファイルの保存先を示す”imageFile=”を追記するだけです。

curl -X POST -H 'Authorization: Bearer アクセストークン' -F 'message=メッセージ' -F 'imageFile=@画像ファイルの保存先' https://notify-api.line.me/api/notify

サンプルのシェルスクリプトでは、ラズパイで撮影した静止画を、”メッセージ”という文言と合わせて送信するコードです。

 

< Motionで動体検知した画像データをLINEで通知する >

それでは、今回のメインテーマである動体検知した画像をLINEに通知する仕組みを作ります。仕組みと言っても、実は”Motion”の設定ファイルにコマンドを追記するだけです。

sudo nano /etc/motion/motion.conf

“Motion”で動体検知したタイミング (イベント発生時)に実行するコマンドを、”on_picture_save”の”value”部分に記述すると、”Motion”自身がそのコマンドを実行してくれます。これは便利ですよね。ちなみに、動画を送る場合は、”on_motion_detected”というイベントを利用します。

画像の保存先に”@%f”を指定しておくと、”Motion”の設定ファイルの”target_dir”項目で設定したパスが自動的に挿入されます。これも便利!

on_picture_save curl -X POST -H 'Authorization: Bearer アクセストークン' -F 'message=画像を送ります' -F 'imageFile=@%f' https://notify-api.line.me/api/notify

設定が完了した後、ラズパイを再起動すれば、早速、動体検知した画像がLINEに届くようになります。

ただ、”Motion”の設定ファイルの”event_gap”、”threshold”、”output_pictures”に各項目を適切な値にチューニングしていないと、とんでもない量の通知が一度に届いてしまいます。”LINE Notify”のしきい値で一定量以上の通知があると制限が掛かるので、無限ループ状態になることはありませんが、同じような画像が大量に送られるとなると、スパムと同じことになってしまいます。ですので、本番稼働前に、必ず設定値のチューニングは済ませておいて下さい。

こちらのサンプルは、”output_pictures”項目を”best”に設定した際の画像です。動体検知イベントのうち最もピクセル数に変化が見られた場面を、しっかり捉えていますよね。

 

< Node-REDのノードでLINE Notifyを体験してみる >

以上で、今回のテーマはクリアできたわけですが、折角なので、”Node-RED”を使った”LINE Notify”を体験してみることにします。

今回利用するのは、”node-red-contrib-line-notify“というノードです。

今回はノードの使い勝手を確認するだけなので、”inject” – “line notify” (“node-red-contrib-line-notify”) – “debug”ノードを単純に接続したフローを作りました。

“line notify”ノードのプロパティ画面で、”トークン”欄の右側にある鉛筆アイコンをクリックします。

こちらの画面で、”LINE Notify”でアクセストークンを発行した際に設定したトークン名と、発行されたアクセストークンを入力します。これで準備完了です。

 

設定はとても簡単で、画像付きのメッセージを通知する場合は、”フルサイズ”欄に送信する画像ファイルのURLを入力します。

ステッカー付きのメッセージを通知する場合は、”ステッカー”欄に送信するステッカーの”PackageID”と”ID”入力します。

ステッカーの定義情報は、”こちら” (PDF)を参照して下さい。

メッセージは勿論のこと、画像ファイルのURL、ステッカーの種類のいずれも、前方のノードからのmsg変数で設定することもできるので、いろいろと応用が効きそうですね。

 

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

初めてでもできる超初心者のLINE入門 2019年最新版 [ standards ]
価格:1100円(税込、送料無料) (2020/3/14時点)

楽天で購入

 

 

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

ゼロからわかる!大人のためのLINE徹底活用ガイド (コスミックムック)
価格:997円(税込、送料無料) (2020/3/14時点)

楽天で購入

 

 

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

これからはじめるLINE基本&活用ワザ改訂2版 (できるポケット) [ 小暮正人 ]
価格:1320円(税込、送料無料) (2020/3/14時点)

楽天で購入

 

 

ホームページ “THE POOH FILES”にも是非お立ち寄り下さい。
Adobe Stock“でベストショットな写真素材を販売中です。是非ご覧下さい。

tomohiko

長年に渡りMacintosh向けの自作アプリを作り続けているPOOHです。最近はiPhone,iPad向けアプリ開発にも挑戦中。グルメ、旅行、露天風呂、写真、サイクリング、映画、STAR TREKが大好き。レトロでSFなおもちゃを大量にコレクション。プレーリードッグと同居中。

おすすめ

コメントを残す