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/
この記事が気に入ったらサポートをしてみませんか?