ラズパイの温度計測をGoogle Sheets APIで記録
もはや本ブログのメインカテゴリが定まってないように見えますが、
私の感情が高ぶったことを書いてます(適当)
raspberry piで室温を計測したら思いのほか高温になってたことが発端。
朝の9時に外出、その日は晴れで最高気温は15時に32℃の湿度68%。
部屋はその間締め切り。17時帰宅でみなさん体験したことのあるあの熱気を計測。
すると36℃の75%でした。以外と高い。
じゃあ次はこれを時系列で記録しようと。
ラズパイなのでsqliteやawsでもいいのですがちゃちゃっと表で見たいのでGoogleのSpreadSheetに挑戦。
結果、合計4時間くらい検索してやっと手ごたえを得る(読み出し成功)。
読めれば書くのはすぐでしょ、と気が抜けて達成感を得られたのでブログに。
やったことは以下。
これはいくつかの記事から読み取れて難なく終わる。
②サンプルコード
公式の英語ドキュメント(もちろんほぼ読めない)から頑張って探す。
developers.google.com③サンプルコードで読み込んでるcredential.jsonを頑張って作る
ここで1.5時間くらい試行錯誤
GCP?は始めてなんだ、すまない。
このクライアントID(~googleusercontent.com)をスプレッドシートの共有で
追加しておく(スプレッドシートの画面右上、googleアカウントの招待と同じ)
④サンプルコードにcredential.jsonを食わせる
2.5時間くらい試行錯誤
コードはとりあえず動く。
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()と入れ替えて試してみた。
最終行にEnter the authorization codeとかある!とりあえずURLにアクセスすると、
さっきまでの最後でこけてたリダイレクトがなくなってトークン?が出てきた
で、こいつをさっきのEnter...に貼り付けると動いた!
同じ階層にtoken.pickleができてるのが成功の証。
さて、今からspreadsheet書き込みなわけですがどれだけかかることやら。
追記:
なんとかできた。15分単位でcronで回してる。
形になるとやっぱうれしいし達成感がある。
本来ならグラフ埋め込みにしたいけどキャプチャで勘弁。