背景
SwitchBot機器のAPIを使うためには「認証用トークン」と「DeviceID」を取得する必要があります。
スマートフォンのSwitchBotアプリからまずは認証用トークンとクライアントシークレットを取得します
アプリを開き「プロフィール>設定>開発者向けオプション」で取得できます。
とはいうものの、そのままだと表示されないので、「アプリバージョン」を10回タップして「開発者向けオプション」を表示します。(ファミコン時代の隠しコマンドっぽい。)
手順
デバイス一
curl --request GET 'https://api.switch-bot.com/v1.0/devices' \
--header 'Authorization: 認証用トークン'\
--header 'Content-Type: application/json; charset=utf8'
以下のように出力されます。
{"statusCode":100,"body":{"deviceList":[{"deviceId":"xxxxxxx","deviceName":"温湿度計プラス AB","deviceType":"MeterPlus","enableCloudService":true,"hubDeviceId":"xxxxxxx"},{"deviceId":"xxxxxxx","deviceName":"ハブミニ 22","deviceType":"Hub Mini","hubDeviceId":"000000000000"}],"infraredRemoteList":[{"deviceId":"xxxxxxx","deviceName":"tv","remoteType":"TV","hubDeviceId":"xxxxxxx"},{"deviceId":"xxxxxxx","deviceName":"ライト","remoteType":"DIY Light","hubDeviceId":"FD087CB12D22"}]},"message":"success"}yamadatt@ubuntu2204:~/git/hugo-luna$
以下で対象のデバイスから情報を出力。
curl -X GET -H "Authorization: 認証用トークン" https://api.switch-bot.com/v1.0/devices/対象のdeviceId/status | jq .
以下のように出力されます。
{
"statusCode": 100,
"body": {
"deviceId": "D66D086FC8AB",
"deviceType": "MeterPlus",
"hubDeviceId": "FD087CB12D22",
"humidity": 59,
"temperature": 15.5
},
"message": "success"
}
}
制約
1日あたり1万回の制約があります。
OpenWonderLabs/SwitchBotAPI: SwitchBot Open API Documents
以下の記述があるので、毎分取得ぐらいなら影響はなさそう。
Request limit The amount of API calls per day is limited to 10000 times. Going over that limit will return “Unauthorized.”
参考
これを使った。