LINEでメッセージを入力するとRaspberryPiから画像が送信されるプログラムとその様子

LINENotify、LINEDevelopers、ngrokを用いてLINEで特定のメッセージを入力するとRaspberryPiから画像が送信されるプログラムとその様子について。

画像はRaspberryPiに繋げたUSBカメラで撮影したもので、LINEで特定のメッセージが入力されるとUSBカメラを起動します。

プログラミング言語はPythonを使っています。



目次

参考サイト

LINEに画像が送信されるまでの流れ

プログラム

LINEでメッセージと画像のやり取りをしている様子


参考サイト

これらのサイトを参考に作成しました。

https://fabcross.jp/category/make/sorepi/20200831_raspi_tadaima.html
https://datacoach.me/data/tips/python-linebot/#ngrok
https://note.com/tamurasann/n/n0ff5642fa9bd
https://hakengineer.xyz/2017/10/10/post-425/

LINEに画像が送信されるまでの流れ

手順1 RaspberryPi側で操作
まず、RaspberryPiのターミナル(LXTerminal)を開いて下のコマンドを実行
$ ./ngrok authtoken Your Authtoken

Your Authtokenの部分にはngrokに記載されているYour Authtokenを入れる


手順2 RaspberryPi側で操作
続いて、同じターミナルで下のコマンドを実行してhttpsから始まるURLをコピー
$ ./ngrok http 8080

無料プランは$ ./ngrok http 8080のコマンドを実行する度にURLが変わります。


手順3 LINE Developers側で操作
LINE DevelopersMessaging APIにあるWebhook URLEdit(編集)をクリックして、先ほどコピーしたhttpsから始まるURLを貼り付けてから、URLの末尾に/callbackをつけてupdateをクリック

上画像のURLの場合↓
https://33bad44cf610.ngrok.io/callback



手順4 RaspberryPi側で操作
$ ./ngrok http 8080を入力したターミナルは閉じずに、新しく別のターミナルを開いて下のコマンドを実行
$ python3 プログラム名

私の場合はプログラム名がLINE_pic03_4.pyなので、$ python3 LINE_pic03_4.py を実行しました


手順5 LINE側で操作
LINE Developersで作成したチャンネルに“確認”または“チェック”の特定のメッセージを入力してしばらくすると、”OK”のメッセージとRaspberryPiに繋げているUSBカメラで撮影した画像LINE Notifyに送られてくる

LINE Notifyの使い方はこちらRaspberryPiからスマホのLINEにメッセージを送信する方法の投稿で紹介しています。


LINE Developersで作成したチャンネル↓
てきとう”という名前で作成しました


スマホのLINEで友達追加した様子↓
※公式アカウントに入っている

プログラム

opencvのインストールはこちらhttps://qiita.com/masaru/items/658b24b0806144cfeb1cのサイトを参考にしました。

LINEでメッセージと画像のやり取りをしている様子

”確認”または”チェック”のメッセージやそれ以外のメッセージを入力して、正しく実行されるか試しています。

LINE Notifyに画像が送信されてきた様子↓

USBカメラで撮影した画像が暗かったので”確認”または”チェック”のメッセージを入力して”OK”が返信される度にUSBカメラを動かして良く写るようにしています。

メルカリで買った安いUSBカメラを使っているからなのか、それともラズパイに取り付けるカメラじゃないからなのか、原因はわからないが暗く写ってしまう

本当は下のような画像を撮影してLINEに送信したい

※この画像↓はスマホで撮影しました

LINEを開いた様子↓

LINE NotifyとLINE Developersで作成したチャンネル(”てきとう”)でメッセージと画像のやり取りが行われています。

電気代やRaspberryPiとカメラを固定するのに手間はかかるけど
鍵のかけ忘れやガス、火の確認。他にもペットの様子などを確認したいときにLINEで特定のメッセージを入力するとUSBカメラで撮影した画像が送信されます。

専用のデバイスを買った方が早いし楽だけど、一応RaspberryPiでも作れる。

動かなかったときにやったこと

●RaspberryPiのPythonのデフォルトをpython2.7からpython3に変更https://www.souichi.club/raspberrypi/python3-default/

●httpsから始まるURLの末尾に/callbackを付け忘れの確認

●プログラムが8000になっていたので8080に変更

●flaskとline-bot-sdkのインストールのし忘れ
自分はpip3でインストールしました
$ pip3 install flask
$ pip3 install line-bot-sdk

次に改善すること

●RaspberryPiのフォルダにある撮影した画像の名前は、撮影した日付と時刻になっているのですが、LINE Notifyに送信した画像の名前は撮影した日付と時刻になっていない

●LINE Notifyで画像を送信しないで、LINE Developersだけでメッセージの応答と画像の送信をする