LoginSignup
5
4

More than 1 year has passed since last update.

PythonでSwitchBot温湿度計のデータ取り込み、GoogleAppsScriptでスプレットシートへの記録を自動化をする

Posted at

初めまして、IoTが大好きで、Raspberry Piだのスマート家電だのを買いあさってる人です。
今回は、中国は深センのWonderlabsが出しているSwitchBot温湿度計を使って、
スプレッドシートに自動で温度と湿度を記録できるようにします。
ondo

事前準備

SwitchBot APIを使用するにはHub Mini,Hub Plusと連携させ、 オンラインサービスを有効にする必要があります。

温湿度計の設定を完了させていることを前提とします。
温湿度計のBluのMacアドレスを控えておいてください。
SwitchBotアプリで開発者用トークンを発行して、控えておいてください
やり方はネットで検索すればたくさん出てきます。他人任せ

Pythonのコード、設定

import requests
import json
import sys

header = {"Authorization": "your_token"}
device_id = "your_mac_address"
url = "https://api.switch-bot.com/v1.0/devices/" + device_id + '/status'

response = requests.get(url, headers=header)
json_dict = json.loads(response.text)

temperature = json_dict["body"]['temperature']
humidity = json_dict["body"]['humidity']

url2 = "your_gas_app_url"
data = {'temp': temperature, 'humi': humidity}
response = requests.post(url2, data=data)

これが温湿度計のデータを取得し、GASにデータを送るプログラムです。
your_token には自分のトークンを
your_mac_address には自分の温度計のMacアドレスを入れてください。
your_gas_app_url については次の項で説明します。

GoogleAppsScriptのコード、設定

Googleドライブにアクセスし、スプレッドシートを新規作成します。
作成したら「ツール」を開いて、「スクリプト エディタ」を開きます。

google.png

表示されたエディタに以下のコードを貼り付けてください

function doPost(e) {
  var temp = e.parameter.temp;
  var humi = e.parameter.humi;
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
  sheet.appendRow([new Date(), temp, humi]);
}

出来たらデプロイ→新しいデプロイを開き、
種類の選択を「ウェブアプリケーション」
アクセスできるユーザーを「全員」に変更してデプロイします。

スクリーンショット (47).png

この画面になったら、アクセスを承認して
Googleアカウントでログインします。
警告画面がでたら「詳細」→ 安全ではないページに移動
「Googleアカウントへのアクセスを~」の画面でアクセスを許可
GASのページに戻ると、デプロイIDとURLが表示されているので
URL(script.google.com/macros/なんとか)をコピーしてください。

このURLを先ほどのyour_gas_app_urlの場所に貼り付けてください。
あとはPythonプログラムをcrontabなどで回せば
勝手に記録してくれるようになります。
APIは一日1000回までリクエストが可能です。自分は5分に一回回しています。

あとは煮るなり焼くなりご自由に。:fire:

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4