SwitchBotのスマート加湿器をAPIで操作する
2021/01/19
SwitchBotのスマート加湿器を買ったので、ご多分に漏れずAPIで操作してみる。
ちなみに買ったメインの目的が加湿器をAPIを使って操作してみたいという理由だけだけど、加湿器の機能としても大変満足している。
手順
ドキュメント: SwitchBotAPI/README.md at main · OpenWonderLabs/SwitchBotAPI
APIトークンを取得する
公式アプリから取得できる。(iPhoneでしか確認していないが、Androidも変わらないはず)
- 「プロフィール」をタップ
- 「設定」をタップ
- 「アプリバージョン」を10回タップ(「開発者向けオプション」が表示される)
- 「開発者向けオプション」をタップ(トークンが生成される)
デバイスを取得する
リクエスト
curl -X GET -H 'Authorization: token' https://api.switch-bot.com/v1.0/devices
レスポンス
{
"statusCode": 100,
"body": {
"deviceList": [
{
"deviceId": "AC0123456789",
"deviceName": "リビング加湿器",
"deviceType": "Humidifier",
"enableCloudService": true,
"hubDeviceId": "000000000000"
},
{
"deviceId": "XX0123456789",
"deviceName": "リビング温湿度計",
"deviceType": "Meter",
"enableCloudService": false,
"hubDeviceId": "000000000000"
}
],
"infraredRemoteList": []
},
"message": "success"
}
デバイスのステータスを取得する
リクエスト
$ curl -H 'Authorization: token' https://api.switch-bot.com/v1.0/devices/AC0123456789/status
レスポンス
{
"statusCode": 100,
"body": {
"deviceId": "AC0123456789",
"deviceType": "Humidifier",
"hubDeviceId": "000000000000",
"nebulizationEfficiency": 1,
"humidity": 43,
"auto": true,
"childLock": false,
"sound": true,
"power": "off",
"temperature": "19.9"
},
"message": "success"
}
デバイスにコマンドを送信する
https://github.com/OpenWonderLabs/SwitchBotAPI/blob/main/README.md#command-set-for-physical-devices
電源をオン
リクエスト
curl -X POST -H 'Authorization: token' https://api.switch-bot.com/v1.0/devices/AC0123456789/commands -H 'Content-Type: application/json' -d '{"command": "turnOn","parameter": "default","commandType": "command"}''
{
"command": "turnOn",
"parameter": "default",
"commandType": "command"
}
レスポンス
{ "statusCode": 100, "body": {}, "message": "success" }
電源をオフ
リクエスト
curl -X POST -H 'Authorization: token' https://api.switch-bot.com/v1.0/devices/AC0123456789/commands -H 'Content-Type: application/json' -d '{"command": "turnOff","parameter": "default","commandType": "command"}''
{
"command": "turnOff",
"parameter": "default",
"commandType": "command"
}
レスポンス
同じなので省略
モードをオートに変更
リクエスト
curl -X POST -H 'Authorization: token' https://api.switch-bot.com/v1.0/devices/AC0123456789/commands -H 'Content-Type: application/json' -d '{"command": "setMode","parameter": "auto","commandType": "command"}''
{
"command": "setMode",
"parameter": "auto",
"commandType": "command"
}
レスポンス
同じなので省略
モードを中に変更
リクエスト
curl -X POST -H 'Authorization: token' https://api.switch-bot.com/v1.0/devices/AC0123456789/commands -H 'Content-Type: application/json' -d '{"command": "setMode","parameter": "102","commandType": "command"}''
{
"command": "setMode",
"parameter": "102",
"commandType": "command"
}
レスポンス
同じなので省略
モードを霧化効率80%に変更
リクエスト
curl -X POST -H 'Authorization: token' https://api.switch-bot.com/v1.0/devices/AC0123456789/commands -H 'Content-Type: application/json' -d '{"command": "setMode","parameter": "80","commandType": "command"}''
{
"command": "setMode",
"parameter": "80",
"commandType": "command"
}
レスポンス
同じなので省略