初めまして、IoTが大好きで、Raspberry Piだのスマート家電だのを買いあさってる人です。
今回は、中国は深センのWonderlabsが出しているSwitchBot温湿度計を使って、
スプレッドシートに自動で温度と湿度を記録できるようにします。
#事前準備
:::note warn
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ドライブにアクセスし、スプレッドシートを新規作成します。
作成したら「ツール」を開いて、「スクリプト エディタ」を開きます。
表示されたエディタに以下のコードを貼り付けてください
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]);
}
出来たらデプロイ→新しいデプロイを開き、
種類の選択を「ウェブアプリケーション」
アクセスできるユーザーを「全員」に変更してデプロイします。
この画面になったら、アクセスを承認して
Googleアカウントでログインします。
警告画面がでたら「詳細」→ 安全ではないページに移動
「Googleアカウントへのアクセスを~」の画面でアクセスを許可
GASのページに戻ると、デプロイIDとURLが表示されているので
URL(script.google.com/macros/なんとか)をコピーしてください。
このURLを先ほどのyour_gas_app_urlの場所に貼り付けてください。
あとはPythonプログラムをcrontabなどで回せば
勝手に記録してくれるようになります。
APIは一日1000回までリクエストが可能です。自分は5分に一回回しています。
あとは煮るなり焼くなりご自由に。