よもやま話β版

よもやま話を書きます。内容はぺらぺら。自由に書く。

SwitchBot ハブミニをconsoleから動かす(v1.0)

目標: 電灯のON/OFFをやってみたい。

APIはv1.1があります! (2023年10月時点)

beta-chelsea.hatenadiary.jp

参考

すみません、基本的に下記見ていただいた方がよいです!二番煎じです!

SwitchBot アプリの開発者用トークンを得る

SwitchBotのアプリを立ち上げて、プロフィール > 設定 > アプリバージョンを10回タップすると「開発者向けオプション」が表示され、そこからトークンを取得できる。

アプリ画面のスクショ
普段は隠れてるけどバージョン情報を連続10回タップすると出てくる

curlでデータを取ってみる

トークンを使ってcurlで尋ねると、jsonが返ってきました。

# MY_TOKENには取得したトークンを挿入する
$ curl -H 'Authorization:MY_TOKEN' https://api.switch-bot.com/v1.0/devices

{
  "statusCode": 100,
  "body": {
    "deviceList": [
      {
        "deviceId": "******",
        "deviceName": "ハブミニ AD",
        "deviceType": "Hub Mini",
        "hubDeviceId": "000000000000"
      }
    ],
    "infraredRemoteList": [
      {
        "deviceId": "02-LIGHT-DEVISEID",
        "deviceName": "電気",
        "remoteType": "Light",
        "hubDeviceId": "************"
      }
    ]
  },
  "message": "success"
}

deviseIdを使ってPOSTする

電気のON/OFFをしたいので、remoteTypeが Lightの項目の deviseId を使用して POST を送ってみる。

# 点灯
$ curl --request POST "https://api.switch-bot.com/v1.0/devices/02-LIGHT-DEVISEID/commands" \
--header "Authorization: MY_TOKEN" \
--header "Content-Type: application/json; charset=utf8" \
--data-raw '{ "command": "turnOn", "commandType": "command" }'

# 消灯
$ curl --request POST "https://api.switch-bot.com/v1.0/devices/02-LIGHT-DEVISEID/commands" \
--header "Authorization: MY_TOKEN" \
--header "Content-Type: application/json; charset=utf8" \
--data-raw '{ "command": "turnOff", "commandType": "command" }'

無事動いた。

commandについて

GitHubに書いてあるAPIを見て確認できる。 SwitchBotハブミニについては、 Command set for virtual infrared remote devices の項目を見ると良いらしい。

OpenWonderLabs/SwitchBotAPI: SwitchBot Open API Documents

  • turnOn → 全ての家電製品に対するON
  • turnOff → 全ての家電製品に対するOFF
  • brightnessUp → Light のデバイスの明るさを上げる
  • brightnessDown → Light のデバイスの明るさを下げる

とりあえず動いた!