やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

ラズパイのCPU温度をFusionTablesに記録する

ついにできた。

成果物

GitHubRaspberryPi.CpuTemp.FusionTables.Insert20170104112421531
GitHubRaspberryPi.CpuTemp.FusionTables.Insert20170104112421531

開発環境

実行

python3 CpuTempInserter.py

Raspberry Piのターミナルで実行する。指定したFusionTablesにCPU温度がInsertされる。

補足

コード 説明
CpuTempInserter.py メイン。doc_idなどキー値を指定する。
FusionTablesRequester.py FusionTablesAPIを実行する。
AccessTokenRequester.py RefreshTokenからAccessTokenを取得する。
GoogleKeysGetter.py SQLite3データベースから各キー値を取得する。

CpuTempInsert.pyからコードを追えばわかるが、必要なキーの取得はProjectIdから取ってきている。client_secretなどの重要なキーはハードコーディングせずDBから参照するようにしてある。

事前準備

課題

ダブルクリックで実行したい

run.shファイルにしてダブルクリックで実行したい。

python3 CpuTempInserter.py

しかし、以下のようなエラーが出た。

pi@raspberrypi: $ ./run.sh
': [Errno 2] No such file or directoryerter.py

cron実行したい

shバッチができたら、それをcronで定期実行したい。

  • 起動時に1回実行
  • 15|30分毎に1回実行

リクエスト上限に気をつける。たしかqueryは25000回/日、insertは5リクエスト分となり5000回/日。5000/24=208.3回/時。208/60=3.46回/分。

頻度 回/日
10分毎 (1h6)24=144回/日
15分毎 (1h4)24=96回/日
30分毎 (1h2)24=48回/日

他のデータも記録したい

SenseHATから収集できるデータを記録したい。

環境データ

  • 気温
  • 湿度
  • 気圧

本体データ

  • 方角
  • 角度

SQLiteのO/Rマップライブラリを使用して実装したい

SQL実行部分が同じようなコードばかりになる。 O/Rマップライブラリを使えばもっとすっきり実装できるかもしれない。

これまでの軌跡

本記事をあわせて36件。

RefreshTokenで一部自動化
http://ytyaru.hatenablog.com/entry/2017/02/10/000000
http://ytyaru.hatenablog.com/entry/2017/02/09/000000
http://ytyaru.hatenablog.com/entry/2017/02/08/000000
http://ytyaru.hatenablog.com/entry/2017/02/07/000000
http://ytyaru.hatenablog.com/entry/2017/02/06/000000

Python基礎学習
http://ytyaru.hatenablog.com/entry/2017/01/25/000000
http://ytyaru.hatenablog.com/entry/2017/01/24/000000
http://ytyaru.hatenablog.com/entry/2017/01/23/000000
http://ytyaru.hatenablog.com/entry/2017/01/22/000000
http://ytyaru.hatenablog.com/entry/2017/01/21/000000
http://ytyaru.hatenablog.com/entry/2017/01/20/000000
http://ytyaru.hatenablog.com/entry/2017/01/19/000000

試行錯誤
http://ytyaru.hatenablog.com/entry/2017/01/18/000000
http://ytyaru.hatenablog.com/entry/2017/01/17/000000
http://ytyaru.hatenablog.com/entry/2017/01/16/000000
http://ytyaru.hatenablog.com/entry/2017/01/15/000000
http://ytyaru.hatenablog.com/entry/2017/01/14/000000
http://ytyaru.hatenablog.com/entry/2017/01/13/000000
http://ytyaru.hatenablog.com/entry/2017/01/12/000000
http://ytyaru.hatenablog.com/entry/2017/01/11/000000
http://ytyaru.hatenablog.com/entry/2017/01/10/000000
http://ytyaru.hatenablog.com/entry/2017/01/09/000000
http://ytyaru.hatenablog.com/entry/2017/01/08/000000
http://ytyaru.hatenablog.com/entry/2017/01/07/000000

Drive, GAS, Fusion Tables
http://ytyaru.hatenablog.com/entry/2017/01/06/000000
GASのdoGet関数でFusionTablesAPIを叩く - やってみる
GASを実行する(HTTP GET) - やってみる
GASでFusionTablesAPIを叩いてみた - やってみる
GoogleAppsScriptでHelloWorldしてみた - やってみる
Fusion Tables APIに触ってみた - やってみる

準備
Googleの認証キーを取得する - やってみる
FusionTablesでテーブルを作成する - やってみる
GoogleDriveにアプリケーションを追加する - やってみる
データの共有方法について考えてみた - やってみる
ラズパイのセンサー情報を定期的にアップロードしたい - やってみる

所感

ラズパイのセンサー情報を定期的にアップロードしたいという思い付きから発足したこの企画。まさかこれほど長期に渡るとは思っていなかった。Google APIを叩くまで、かなり、とても、すごく、やたらめったら、超ベリースーパースペシャルハイパー苦労した。何度やめようと思ったことか。

元凶はGoogleのOAuth2.0。もう関わりたくないが、WebAPIを使う限り無縁ではいられないだろう。GitHubAPIはもっと簡単だったのに(ただし二要素認証を除く)。サービスごとに認証やAPIの使い方がぜんぜん違う。その調査と実装が大変。しかも技術の更新が早いから、いずれコードも変更せねばならないだろう。すべてはWebであるせい。ローカルでやればこんな苦労やリスクとは無縁でいられる。はたして苦労に見合うだけの価値があるだろうか…。はたしてWebサービスを利用すべきだろうか…。

どうでもいいが、なんと今回、記念すべき100リポジトリ目だった。

f:id:ytyaru:20170105120107p:plain

おめでとう私。えらいぞ私。がんばったね私。