ラズパイで取得した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 へ返信する コメントをキャンセル

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

CAPTCHA


関連記事

初めての大学生の電子工作 スマートリモコンを作ってみた

 タイトル通り、初めて電子工作をやってみました。電子工作をやったことがないという方にもこの記事を読めば作れるように、つまづいたとこなども丁寧に説明していきます。もしわからないことなどがございましたら気 …

LINEで自作IoTデバイス[スマートロック・リモコン]を操作する(市販品も可)

    ラインから手軽にスマートデバイスを操作する方法について解説します。 この記事ではラズパイで自作したスマートデバイスをラインで操作する方法について解説しますが、IFTTT経由で操作できるものであ …

初心者向けREST APIの基礎

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

AmazonDushボタンを改造してできること- ラズパイやIoT製品との連携方法

AmazonDushボタンはひと手間加えるだけで、IoT製品等の遠隔ボタンとして使用することができます。これにより、スマートロックと連携させダッシュボタンで鍵を開閉したり、スマートリモコンのボタンとし …

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

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




関連記事