Raspberry Pi3(ラズパイ)でも、コマンドでGoogle Drive

(2019-02-11 初稿 - 2020-08-13 転記・追記 )

はじめに

以前にUbuntuでコマンドラインからGoogle Driveを利用する方法を紹介しました。リンク作成検討中 ^^;

  • ubuntu でも、Google Drive を便利に使いたい(grive)

今回は、Raspberry Pi3で温度を計測したデータをテキストファイルに書き出して、Google Driveに保存し、他のPC等から閲覧や解析をするために、設定を行いました。

なお、Dropbox Uploaderを利用してRaspberry Pi3とGoogle Driveの同期をとることも考えましたが、初期設定がgdriveの方が楽そうだったので、gdriveを選びました。

このページの記述は、以下のサイトを参考にさせていただきました(多謝 m(__)m)。

ダウンロードとインストール

以下のコマンドでダウンロードします。

cd /home/pi/bin

wget -O gdrive https://docs.google.com/uc?id=0B3X9GlR6EmbnVXNLanp4ZFRRbzg&export=download

ダウンロードしたファイルに実行権を与えます。

chmod +x gdrive

最初に実行するときには、以下のコマンドを実行します。

gdrive about

コマンド実行後に表示されるURLコピーしてブラウザでアクセスします。

アクセス後、表示される認証コードをコピーして、ターミナルに貼り付けてエンターキーを押します。

使い方

使い方は、gitのページをコピペです。手抜き (^^ゞ

gdrive [global] list [options] List files

gdrive [global] download [options] <fileId> Download file or directory

gdrive [global] download query [options] <query> Download all files and directories matching query

gdrive [global] upload [options] <path> Upload file or directory

gdrive [global] upload - [options] <name> Upload file from stdin

gdrive [global] update [options] <fileId> <path> Update file, this creates a new revision of the file

gdrive [global] info [options] <fileId> Show file info

gdrive [global] mkdir [options] <name> Create directory

gdrive [global] share [options] <fileId> Share file or directory

gdrive [global] share list <fileId> List files permissions

gdrive [global] share revoke <fileId> <permissionId> Revoke permission

gdrive [global] delete [options] <fileId> Delete file or directory

gdrive [global] sync list [options] List all syncable directories on drive

gdrive [global] sync content [options] <fileId> List content of syncable directory

gdrive [global] sync download [options] <fileId> <path> Sync drive directory to local directory

gdrive [global] sync upload [options] <path> <fileId> Sync local directory to drive

gdrive [global] changes [options] List file changes

gdrive [global] revision list [options] <fileId> List file revisions

gdrive [global] revision download [options] <fileId> <revId> Download revision

gdrive [global] revision delete <fileId> <revId> Delete file revision

gdrive [global] import [options] <path> Upload and convert file to a google document, see 'about import' for available conversions

gdrive [global] export [options] <fileId> Export a google document

gdrive [global] about [options] Google drive metadata, quota usage

gdrive [global] about import Show supported import formats

gdrive [global] about export Show supported export formats

gdrive version Print application version

gdrive help Print help

gdrive help <command> Print command help

gdrive help <command> <subcommand> Print subcommand help

Tips

実は、Google Driveは、ファイル名でフォルダを管理しているのではなくて、File IDで管理しています。

したがって、室温を書き込んだテキストファイル(room_temp.txt)を毎時に追記して、アップロードすると、1日あたり24個のroom_temp.txtが作成されてしまいます。

この点に注意するために、このページを作りました。^^;

例として、ひとつのファイルを更新する場合は、以下のようにします。

gdrive list

1GyJqEM-rPVPuOG2p5R08S7iGJ3OhyPhB room_temp.txt bin 27.0 B 2019-02-11 21:01:05

最初のフィールドに出てくる意味不明の文字列が File IDになります。

したがって、このファイルを毎時変更するためには、以下のコマンドを実行します。

gdrive update 1GyJqEM-rPVPuOG2p5R08S7iGJ3OhyPhB ./room_temp.txt

listで調べて、uploadで更新するのを、ワンライナーで書くと以下になります。

gdrive update $(gdrive list | grep room_temp.txt | cut -d' ' -f1) ./room_temp.txt

ときどき、File IDが拾えないようです。^^;

Tips

実は、Google Driveは、ファイル名でフォルダを管理しているのではなくて、File IDで管理しています。

したがって、室温を書き込んだテキストファイル(room_temp.txt)を毎時に追記して、アップロードすると、1日あたり24個のroom_temp.txtが作成されてしまいます。

この点に注意するために、このページを作りました。^^;


例として、ひとつのファイルを更新する場合は、以下のようにします。

gdrive list

1GyJqEM-rPVPuOG2p5R08S7iGJ3OhyPhB room_temp.txt bin 27.0 B 2019-02-11 21:01:05

最初のフィールドに出てくる意味不明の文字列が File IDになります。

したがって、このファイルを毎時変更するためには、以下のコマンドを実行します。

gdrive update 1GyJqEM-rPVPuOG2p5R08S7iGJ3OhyPhB ./room_temp.txt

listで調べて、uploadで更新するのを、ワンライナーで書くと以下になります。

gdrive update $(gdrive list | grep room_temp.txt | cut -d' ' -f1) ./room_temp.txt

ときどき、File IDが拾えないようです。^^;

Crontabに登録する

実行して、エラーがでなくなったら crontab に登録します。

crontab -e

3 * * * * /home/pi/bin/up-gdrive # 毎時3分にファイルをアップデート すべてメール

3 * * * * /home/pi/bin/up-gdrive 1> /dev/null # 同上 エラーのみメール

3 * * * * /home/pi/bin/up-gdrive > /dev/null 2>&1 # 同上 エラーメールも送らない

いずれも、毎時3分になると、ファイルをアップデートします。

上の設定では、メールが頻繁に来ることになるので、2番目のエラーが起きたときのみメールが来るように設定するのがおすすめです。

なお、初めてcrontab を設定するときには、exim4またはpostfixなどのメールトランスファーエージェント(MTA)が必要なようです。

crontabのエラーは、/var/log/syslogに(CRON) info (No MTA installed, discarding output)等と出ますので、つぶやかない場合は、確認してみてください。

筆者は、以下のとおりインストールしました。

sudo apt-get install exim4

デフォルトの設定では、local (そのPC内のメールしか送らいない)設定になっていますが、念のために以下で確認してください。

less /etc/exim4/update-exim4.conf.conf


dc_eximconfig_configtype='local' # この行が local になっていればOK

なお、本格的に外向きにメールを送りたいときには、以下のページを参考に設定してみてください。

ただし、メール設定のエラーは多大な迷惑をかけますので、設定はくれぐれもご注意ください。リンク作成検討中 (^^ゞ

  • debianサーバでメールを送る(exim4編)

おわりに

Raspberry Pi3で、部屋の温度やCPU温度を計測すると、どうしてもファイルに保存しておきたくなります。

保存したファイルを効率よくアップする方法について考えてみました。

また、より良い方法があったら追記します。