ラズパイで取得した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/

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

      • 高橋 より:

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

高橋 へ返信する コメントをキャンセル

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

CAPTCHA


関連記事

Google Apps Scriptを使用してスプレッドシート上の図形を押した際に、プログラムを実行させる

    大学生の電子工作 ラズパイでスマートロック作ってみた⑤の記事に関連して、スプレッドシート上に設置したボタンを押した際に Google Apps Scriptを用いたプログラムを実行することで、 …

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

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

ラズパイでスマートロック作ってみた② - 扉の開閉状況をGoogleスプレッドシートに記録

以前作成したスマートロックに、扉の開閉状況をGoogleスプレッドシートに記録する、という機能をつけたので、そのやり方について紹介します。   搭載した機能 スイッチで鍵の開閉外部サービス(Googl …

物理ボタンをIoT化 – ESP32で Swich bot を自作し、スマホからスイッチをON,OFFできるようにしてみた

   この記事ではESP32をIoTデバイスとして使用し、家の電気のボタンや電子レンジのボタンなどの、あらゆる物理ボタンを押すことのできるスイッチボットを作成する方法について解説します。 市販されてい …

GASで簡単にLINE botを作成! – API基本設定からメッセージ取得・送信方法まで解説!

  この記事ではGAS(google app script)とLINE message APIを使って、LINE BOTを作る方法について解説していきます。 今回は、メッセージを送信したら送信したメッ …




関連記事