目標: 電灯のON/OFFをやってみたい。
注
APIはv1.1があります! (2023年10月時点)
参考
すみません、基本的に下記見ていただいた方がよいです!二番煎じです!
- Raspberry PiとNode-REDでSwitchBotの温湿度計データを取得する | DevelopersIO
- reTerminalで環境確認デバイス制作!第4回:ホームオートメーション!| Device Plus - デバプラ
- OpenWonderLabs/SwitchBotAPI: SwitchBot Open API Documents
SwitchBot アプリの開発者用トークンを得る
SwitchBotのアプリを立ち上げて、プロフィール > 設定 > アプリバージョンを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 のデバイスの明るさを下げる
とりあえず動いた!