高木のブログ

SwitchBotのスマート加湿器をAPIで操作する

2021/01/19

SwitchBotのスマート加湿器を買ったので、ご多分に漏れずAPIで操作してみる。
ちなみに買ったメインの目的が加湿器をAPIを使って操作してみたいという理由だけだけど、加湿器の機能としても大変満足している。

手順

ドキュメント: SwitchBotAPI/README.md at main · OpenWonderLabs/SwitchBotAPI

APIトークンを取得する

公式アプリから取得できる。(iPhoneでしか確認していないが、Androidも変わらないはず)

  1. 「プロフィール」をタップ
  2. 「設定」をタップ
  3. 「アプリバージョン」を10回タップ(「開発者向けオプション」が表示される)
  4. 「開発者向けオプション」をタップ(トークンが生成される)

デバイスを取得する

リクエスト

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"
}
レスポンス

同じなので省略


Written by ytkg, Twitter, GitHub

Pixela