Raspberry Pi で温度・湿度・気圧を Google Spreadsheet に記録する(失敗)

前回、Raspberry Pi で湿度(および気温、気圧)を計測することに成功した。

Raspberry Pi で温度・湿度・気圧を計測する|荒川仁志|note
https://note.com/hitoshiarakawa/n/n351b059b2c92

次は、定期的に Google Spreadsheet に記録していこう。私が欲しいデータは湿度だけだが、一応温度と気圧も記録していくことにした。

環境:Raspberry Pi Zero W、Raspberry Pi OS Stretch、macOS Catalina Version 10.15.6 から SSH 接続、AE-BME280(温湿度・気圧センサモジュールキット)

【最後まで読むと分かるが、この方法は結局うまくいかなかった。】

(1)Google Spreadsheet で新規ドキュメントを作成する。

(1-1)その時、以下の URL の xxxxxxxxxxxxxxxxxxxx が ID となる。

https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxx/edit#gid=0

(1-2)シート名を「log」とする。

(2)Raspberry Pi に gspread をインストールする。

$ pip install gspread

参考:
gspreadライブラリの使い方まとめ!Pythonでスプレッドシートを操作する | たぬハック
https://tanuhack.com/library-gspread/

(3)【Google の Service Account を作成する】

(3-1)Google Developers Console の APIs and services でプロジェクトを作成する。

Google Developers Console
https://console.developers.google.com/

(3-2)一番上の「ENABLE APIS AND SERVICES」をクリック。

Google Drive API を検索し、ENABLE をクリックし有効化。

(3-3)「Google Cloud Platform>PRODUCTS>APIs and services>Dashboard」をクリックして再びプロジェクトトップに戻る。

再度、一番上の「ENABLE APIS AND SERVICES」をクリック。

Google Sheets API を検索し、ENABLE をクリックし有効化。

(3-4)「Google Cloud Platform>PRODUCTS>APIs and services>Credentials>+ CREATE CREDENTIALS>Service account」をクリック。以下のように記入。

・Service account name:適当な名前
・Service account ID:適当な名前(Service account name を記入すると自動生成される)
Service account description:適当な説明文(任意)

「CREATE AND CONTINUE」をクリック。

Select a role で、「Quick access>Basic>Editor」を選択。

Condition はとりあえず何も記入せず、「CONTINUE」をクリック。

Grant users access to this service account の項目は特に何も記入せず、「DONE」をクリック。

(3-5)「Service Accounts>Manage service accounts」をクリック。

作成された Service Account の Actions の「3点アイコン>Manage keys」をクリック。

「ADD KEY>Create new key」をクリック。JSON を選択して「CREATE」をクリック。JSON ファイルがダウンロードされる。

(3-6)1で作成した Spreadsheet へ行き、「Share」をクリック。3-5 でダウンロードした JSON ファイル内の client_email を Editor として追加する。

(4)3-5 の JSON ファイルを credentials.json に名前を変え、Raspberry Pi の /home/pi/.config/gspread/credentials.json に配置する。

(5)以下のサイトのスクリプトファイル bme280.py を編集し、Spreadsheet の ID、シート名を入力。/home/pi/scripts/bme280.py に配置する。

Raspberry Piで測定した温度湿度気圧をGoogle Spreadsheetsに記録する
https://rcmdnk.com/blog/2020/10/13/computer-raspberrypi-iot-google/

(スクリプトの 98 〜 101 行目 print(f" の部分は、 print(" に修正する。)

(6)ただ、5のスクリプトを実行しようとすると、前回インストールした smbus2 は Python3 でインストールし直した方が都合がいいと気付いた。

Python3の開発用パッケージ、pip、python-smbus をインストールする。

$ sudo apt -y install python3-dev
$ sudo apt -y install python3-pip
$ sudo pip3 install smbus2

参考:
RaspberryPi(Raspbian)にpipをインストール - turtlechanのブログ
https://turtlechan.hatenablog.com/entry/2019/06/07/191450

(7)そしてスクリプトを実行してみたが、コンソール上でも正しく表示されないし、Google Spreadsheet にも書き込まれない。

$ python3 bme280.py 
datetime : {now}
temperature : {temp:.2f} degree
pressure    : {pres:.2f} hPa

よく分からないので、この方法はここで諦めることにした。

参考:
Raspberry Piで測定した温度湿度気圧をGoogle Spreadsheetsに記録する
https://rcmdnk.com/blog/2020/10/13/computer-raspberrypi-iot-google/

Authentication — gspread 4.0.0 documentation
https://docs.gspread.org/en/latest/oauth2.html#service-account

Raspberry Piで温度と湿度を定期的に取得してスプレッドシートに記録する。 - ファーマーズハウスさわ
https://www.nakakamado.com/2021/02/raspberrypi-spreadsheet.html

【もう迷わない】Pythonでスプレッドシートに読み書きする初期設定まとめ | たぬハック
https://tanuhack.com/operate-spreadsheet/

Python - Raspberry Pi 4 で"from smbus2 import SMBus"のコードにエラー発生。(smbus2インストール済)|teratail
https://teratail.com/questions/297296

Raspberry PiでPythonプログラミング入門 – Indoor Corgi
https://www.indoorcorgielec.com/resources/raspberry-pi/raspberry-pi-python/


この記事が気に入ったらサポートをしてみませんか?