Raspberry Pi 4Bで気温・湿度を取得してGoogleスプレッドシートに記録する(DHT22)後編

自宅IoT

前回でラズパイで気温・湿度が取得できたので、この情報をGoogleスプレッドシートに記録します。

Googleスプレッドシートへ書き込むためにgoogleの設定を行う

APIの設定

Googleスプレッドシートへ記録するために、GCP(Google Cloud Platform)を使用します。
クラウドテクノロジーに触れる良い機会です。

以下のリンクからGoogleスプレッドシートへ記録するためのAPI(Aplication Interface)を有効にします。

Google Cloud プラットフォーム
Google Cloud Platform では、Google と同じインフラストラクチャでアプリケーション、ウェブサイト、サービスを構築、導入、拡大することができます。
プロジェクト作成

このまま「続行」ボタンを押下します。

   このまま「認証情報に進む」ボタンを押下します。

この画面に遷移しますが、キャンセルします。

apiの有効化

キャンセル後、左ペインの「ダッシュボード」リンクへ遷移し、「+APIとサービスを有効化」リンクをクリックします。

APIライブラリへ遷移します。

Google Drive APIを検索し、有効化します。

Google Sheet API(Google SpreadSheet APIではない)も同様に検索し、有効化します。

サービスアカウント作成&キー取得

APIを有効にし、サービスアカウント(APIを呼び出す際に使用するユーザ)を作成し、キーを取得します。

「APIとサービス」画面から「サービスアカウントを管理」リンクをクリックします。

「サービスアカウント」画面で「+サービスアカウントを作成」リンクをクリックします。

「サービスアカウントの作成」画面に遷移するので、サービスアカウント名を入力して「作成」ボタンを押下します。

今回は、サービスアカウント名を「dht22_spreadsheet」にしました。
※サービスアカウント名を入力すると、サービスアカウントIDが自動で作成されます。
このIDは後ほど、googleスプレッドシートの共有先として登録します。

省略可の画面はデフォルト値のまま完了で構いません。

作成が完了したら、作成されたサービスアカウント名のリンクをクリックします。

サービスアカウントの画面で「鍵を追加」プルダウンから「新しい鍵を作成」を選択します。

jsonを選択し、作成します。

お使いのPCにjsonファイルがダウンロードされるため、大切に保管します。

Googleスプレッドシートの設定

まずはGooleスプレッドシートを作成します。

今回は気温・湿度ブックとし、日付・気温・湿度列をあらかじめ作成しておきました。

作成したら「共有」ボタンを押下します。

共有するユーザにサービスアカウントを作成した際のサービスアカウントIDを入力します。
入力すると、候補がプルダウンで表示されるため、候補を選択します。

次画面に遷移するため、「送信」ボタン押下します。
※お使いのgmailにメール送信のエラー通知が来ますが、気にしないでください。

これでGooleスプレッドシートの設定も完了です!

ラズパイの設定

ラズパイの設定をしていきます。

ライブラリインストール

スプレッドシートへの操作及び認証ライブラリをpythonにインストールします。

$ sudo pip install gspread
$ sudo pip install oauth2client

サービスアカウントキー(jsonファイル)配置&プログラム作成

サービスアカウント作成時に取得したキー(jsonファイル)を配置します。
今回は、dht22_spreadフォルダの直下にscpで配置しました。

スプレッドシートへのアクセスは前回取得したライブラリのソースを編集します

$ git clone https://github.com/kskt81/dht22_spread/
$ cd /dht22_spread
$ sudo vi dht_to_spreadsheet.py
GDOCS_OAUTH_JSON = 'your SpreadsheetData-*.json file name'
↓
GDOCS_OAUTH_JSON = './アップロードしたjsonファイル名'
※ファイルのフルパスを指定します。

GDOCS_SPREADSHEET_NAME = 'your google docs spreadsheet name'
↓
GDOCS_SPREADSHEET_NAME = '作成したスプレッドシートのファイル名'

これで準備完了です。

プログラム実行

$ sudo python ./dht_to_spreadsheet.py
Logging sensor measurements to 気温・湿度記録 every 30 seconds.
Press Ctrl-C to quit.
Temperature: 26.5 C
Humidity: 70.6 %
Wrote a row to 気温・湿度記録

実行できました!

Googleスプレッドシートを確認します。

やりました!

無事に登録されています。

30秒に1回登録を続けるので、続けて記録し、グラフ化して遷移を確認することもできます。

お疲れ様でした!

コメント

タイトルとURLをコピーしました