ラズパイで取得したIoTデータをグーグルスプレッドシートに自動記録

じょるブログ

現役理系大学生による大学生に向けた情報サイト

API ラズベリーパイ 電子工作

ラズパイで取得したIoTデータをグーグルスプレッドシートに自動記録

投稿日:2019年2月10日 更新日:

今回はPythonを使って、ラズパイに接続してあるセンサーから取得したデータなどをグーグルスプレッドシートに自動で記載する方法について記載します。
グーグルスプレッドシートに記載することで、スマホなどからそのグーグルスプレッドシートにアクセスすることで、いつでもどこでもデータを確認できます。

 

概要

今回はグーグルAPIを使って、Pythonにより様々な情報をグーグルスプレッドシートに自動記入していきます。これにより、

  • スマートリモコンのプログラムに組み込むことで、エアコンがONかOFFか確認
  • スマートロックのプログラムに組み込むことで、鍵の開閉状況の確認
  • 自作玄関モニターのプログラムに組み込むことで、来客者が何時に来たかを確認
  • ラズパイに取り付けたセンサーと組み合わせることで、定期的にセンサー情報を記載、そのデータを用いて機械学習

など、様々なことができるようになります。

 

環境

  • 端末  ラズベリーパイ3
  • OS rasbian(Linux)
  • Python 3.5.3

Raspberry Pi4 ModelB 4GB ラズベリーパイ4 技適対応品

  

   

手順

API設定

GoogleAPIのサイトでAPIの設定をします。

https://console.developers.google.com/cloud-resource-manager

まず、プロジェクトを作成します。

上記のURLをクリックすると以下のような画面が表示されるので赤丸のところをクリックします。

 

すると以下のような画面が表示されるので、適当にプロジェクト名を記入し作成をクリックします。

 

 

次に、使用するAPIを有効化します。

画面左上のナビゲーションをクリックし、「APIとサービス」→「ライブラリ」と進みます。

 

検索欄にSpreadと入力し、Google Sheets APIを選択して、[有効にする]をクリックします。

 

同様に、検索欄にdriveと入力し、Google Drive APIを選択して、[有効にする]をクリックします。

 

 

続いて、認証情報を作成します。

画面左上のナビゲーションをクリックし、「APIとサービス」→「認証情報」と進みます。

 

「認証情報を作成」→「サービスアカウントキー」と進みます。

 

役割を編集者にし、サービスアカウント名を適当に入力したら作成をクリックします。

 

 

スプレッドシートの設定

作成をクリックするとjsonファイルがダウンロードされるので、その中に記載されている “client_email” のメールアドレスをコピーします。

https://docs.google.com/spreadsheets/create

にアクセスしてGoogleSheetを作成します。

 

スプレッドシートの左上の名前を好きな名前に変更して、右上の共有をクリックすると以下のようにポップアップ画面が表示されるので、先ほどコピーしたメールアドレスを貼り付けて送信をクリックします。

 

 

Pythonのモジュールインストールとプログラム作成

次にグーグルスプレッドシートに記入するためのプログラム(gspred-sample.py)を作成します。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import gspread
from oauth2client.service_account import ServiceAccountCredentials

#変更してください
key_name = '**************.json'
sheet_name = 'グーグルスプレッドシート名'

#APIにログイン
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(key_name, scope)
gc = gspread.authorize(credentials)

#セル'A1'に'TEST'と入力
cell_number = 'A1'
input_value = 'TEST'
wks = gc.open(sheet_name).sheet1
wks.update_acell(cell_number, input_value)

上記のプログラムの ‘key_name’ と ‘sheet_name’ を書き変え、名前を
gspred-sample.py として保存し、先ほどダウンロードされた jsonファイルと共に、ラズパイの同じディレクトリ上にコピーしてください。

 

続いて以下のコマンドをラズパイ上で実行し、必要なモジュールをインストールします。

pip install gspread
pip install oauth2client

以上で実行する準備が整ったので、先ほど作成したプログラムを実行してみてください。

python gspred-sample.py

グーグルスプレッドシート上のA1セルにTESTと記入されたら成功です。

 

 

補足

python3系で実行する場合は、

pip3 install gspread
pip3 install oauth2client

としてモジュールをインストールし、

python3 gspred-sample.py

で実行してみてください。

 

google ads




google ads




-API, ラズベリーパイ, 電子工作

執筆者:


  1. 高橋 より:

    はじめまして。
    仕事でラズパイを使っている高橋です。

    ラズパイで取得したIoTデータを
    グーグルスプレッドシートに自動記録の記事を参考に
    自分のラズパイでも記録できました。
    ありがとうございます。

    今現在、タクトスイッチを使い
    押した時刻をスプレッドシートに記録しているのですが、
    時刻の記録をA1、A2、A3・・・と
    徐々に下の段に記録するにはどうすればいいでしょうか?
    お手数をおかけしますが
    教えていただければ幸いです。

    • joruji より:

      コメントありがとうございます!
      お役に立てて大変うれしく思います!

      以下のコマンドを使用することで、スプレッドシートに既に入力されているデータの最終行の直下にデータが入力されます。
      (例えば、A1~A5に既にデータを入力済みの場合に以下のコマンドを使用すると、A6にデータが入力されます。)

      wks.append_row(cell_value)
      (↑wksはシート名、cell_valueは入力するデータの値)

      例として、
      cell_value = "2020/04/09"
      wks.append_row(cell_value)

      というコードを実行すると、既に入力されているデータの最終行の直下に、
      2020/04/09と入力されます。

      こちらの記事にも書いてあるので、参考にしてみてください。
      https://jorublog.site/electronic-work-smart-lock-2-gspred/

      また分からないことがございましたらお気軽にご質問ください!

      • 高橋 より:

        高橋です。
        返信ありがとうございます!
        早速試してみます。
        また分からない点ありましたらコメントしますので
        よろしくお願いします。

joruji にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

電子工作 ラズパイで玄関モニター(兼防犯カメラ)作ってみた

今回は前回のスマートリモコンに続き、2回目のIoTデバイス制作です。玄関モニター兼防犯カメラを作ってみました。作成難易度はスマートリモコンよりも簡単ですので皆さんも是非作ってみてください! 玄関モニタ …

1200円でカメラ、wi-fi、Bluetooth付きの激安マイコンで遊んでみた

    最近、研究室の3Dプリンターの稼働状況を監視するためにカメラを設置しようと思いたち、激安のカメラを探していました。 最初は以前こちらの記事で紹介したようにWebカメラとラズパイを用いてストリー …

ラズベリーパイでICカードのデータを読み取る

今回はSONYのICカードリーダー( RC-S320 )を使用して、suicaなどのICカードを読み取り、 idm(ICカードの固有番号、ICタグ)や残高、交通履歴などを取得する方法についてご紹介しま …

初心者向けREST APIの基礎

この記事では REST API の使い方、使用するのに最低限必要な知識について解説します。    そもそもAPIとは・・ APIとは Application Programming Interface …

ラズパイで SPI 7セグLED Module 8 Digital を使ってみた

半年ほど就活に専念するため、ブログの更新をしていませんでしたが、なんとか就活の方が落ち着いてきたのでまたブログを再開しようと思います。 就活中はブログは一時中断していましたが、電子工作の方は続けていた …




関連記事