LINEでメッセージを入力するとRaspberryPiで動画を撮影してGoogleドライブにアップロードするプログラムとその様子

LINEで特定のメッセージを入力するとRaspberryPiに繋げたUSBカメラで動画を撮影して、それをGoogleドライブにアップロードするプログラムとその様子について投稿します。プログラミング言語はPythonを使っています。

私が家にいないときのの様子が気になったので作ることにしました。

LINE Developersだけでメッセージと動画のやり取りができればいいのですが、やり方がわからないのでGoogleドライブに動画をアップロードしてスマホでRaspberryPiで撮影した動画を見れるようにしました。

参考サイト

RaspberryPiからGoogleドライブにファイルをアップロードする方法は下記のサイトを参考にしました。

https://shiyotsuki.hatenablog.com/entry/2020/02/03/234335


RaspberryPiとLINEのメッセージのやり取りは過去に投稿したLINEでメッセージを入力するとRaspberryPiから画像が送信されるプログラムとその様子で載せている参考サイトを参考にしています。

動画がGoogleドライブにアップロードされるまでの流れ

手順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://dafee4605998.ngrok.io/callback

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

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

手順5 LINE側で操作
LINE Developersで作成したチャンネルに“確認”または“チェック”のメッセージを入力してしばらくすると、下画像のようなメッセージが返信されてRaspberryPiに繋げてあるUSBカメラで動画の撮影が始まり、撮影が終わるとGoogleドライブに動画がアップロードされます。

返信されたメッセージの180秒間の部分はプログラムで指定した撮影時間によって変わってきます。


アップロードが完了したときのLXTerminalの様子↓

Googleドライブに撮影した動画がアップロードされた様子↓(スマホのGoogleドライブで確認)

プログラム

55行目に”撮影が終了しました”または”アップロードが完了しました”みたいなメッセージをLINEに送信したかったのですが、よくわからないエラーがでてメッセージを送信できなかったので、下画像のメッセージを51~53行目にGoogleドライブのURL付きで入れています。

Googleドライブへの動画のアップロードは87行目で行っています。

動画を撮影する68~79行目の部分はこちらPythonで指定した時間動画を撮影して保存するプログラムの投稿で紹介したプログラムを少し変えたものになります。