行く記憶の流れは絶えずして

戻ってこないのでメモするところ

ラズパイの温度計測をGoogle Sheets APIで記録

もはや本ブログのメインカテゴリが定まってないように見えますが、

私の感情が高ぶったことを書いてます(適当)

 

raspberry piで室温を計測したら思いのほか高温になってたことが発端。

朝の9時に外出、その日は晴れで最高気温は15時に32℃の湿度68%。

部屋はその間締め切り。17時帰宅でみなさん体験したことのあるあの熱気を計測。

すると36℃の75%でした。以外と高い。

 

じゃあ次はこれを時系列で記録しようと。

ラズパイなのでsqliteawsでもいいのですがちゃちゃっと表で見たいのでGoogleのSpreadSheetに挑戦。

結果、合計4時間くらい検索してやっと手ごたえを得る(読み出し成功)。

読めれば書くのはすぐでしょ、と気が抜けて達成感を得られたのでブログに。

 

やったことは以下。

Google Sheet APIの有効化。

 これはいくつかの記事から読み取れて難なく終わる。

②サンプルコード

 公式の英語ドキュメント(もちろんほぼ読めない)から頑張って探す。

 ラズパイはpythonで書いたのでpythonのやつ

developers.google.com③サンプルコードで読み込んでるcredential.jsonを頑張って作る

 ここで1.5時間くらい試行錯誤

 GCP?は始めてなんだ、すまない。

f:id:taketsuru:20190729230848p:plain

まずはOAuthクライアントIDの作成

f:id:taketsuru:20190729230947p:plain

その他を選択、名前は適当

f:id:taketsuru:20190729231014p:plain

作成を押すと完了ポップアップが出るが無視、右端の下矢印からjsonをダウンロード

 このクライアントID(~googleusercontent.com)をスプレッドシートの共有で

 追加しておく(スプレッドシートの画面右上、googleアカウントの招待と同じ)

④サンプルコードにcredential.jsonを食わせる

 2.5時間くらい試行錯誤

 コードはとりあえず動く。

f:id:taketsuru:20190729231531p:plain

応答が返ってくるもここからどうすればいいのか

OAuthってよく分からないけどgoogleの画面にいって許可ボタン押すやつかな...とか

考えながらこのURLをssh元PCのブラウザで開く。

すると曖昧な記憶通りの画面(googleアカウントログイン→アクセスを許可しますか?)が

開くが、最後のリダイレクトでこける。

URLをみるとhttp://localhost:38573とかになってる。

なんじゃこりゃ、こんなポート開けた覚えないぞとなりながら夕食。

ネットサーフィンしてから戻ってきて改めて考えなおす。

そもそもこのURLを表示してるコードを見てみるか。

google-auth-oauthlib.readthedocs.io

見てみた。

run_local_server()ってやつらしい。

pythonの組み込みサーバーを起動してるっぽい...?

一つの方法としてはサンプルコードの35行目のrun_local_server()コール時に

raspiのipと開いてるポート渡してPCからアクセスでもいいと思う。

だがソースをみているとrun_local_server()の上にrun_console()っていうのがあって

こっちなら早いんじゃないのrun_local_server()と入れ替えて試してみた。

f:id:taketsuru:20190729232820p:plain

なんか挙動が違う

最終行にEnter the authorization codeとかある!とりあえずURLにアクセスすると、

さっきまでの最後でこけてたリダイレクトがなくなってトークン?が出てきた

f:id:taketsuru:20190729233135p:plain

やったぜ。

で、こいつをさっきのEnter...に貼り付けると動いた!

同じ階層にtoken.pickleができてるのが成功の証。

 

さて、今からspreadsheet書き込みなわけですがどれだけかかることやら。

 

追記:

なんとかできた。15分単位でcronで回してる。

形になるとやっぱうれしいし達成感がある。

本来ならグラフ埋め込みにしたいけどキャプチャで勘弁。

f:id:taketsuru:20190731081325p:plain

湿度はY軸分けたい