SwotchBotのアプリでやればいいんですが、たくさん登録してると単純操作が面倒なので、ショートカット化してみました。
アプリを入れてるなら、アプリをショートカットで動かせばいいんですが、アプリを入れてない家族のiPhoneにも入れたかったので、せっかくなのでAPIを使ってみました。
ショートカットの設計
今回登録する機器は、照明なんですが、スイッチを1回押すと電気が付き、もう1回押すと、茶色になり、もう1回押すと消える、みたいな順番で状態が変わる照明です。
メニューを出して、下記の3つから選ぶようにしました。「何もしない」があるのは間違えたときの逃げ道(キャンセル)です。
- 何もしない
- ON/OFF(2回押し)
- ON/OFF(1回押し)
SwitchBot API
下記が公式サイトです。
最新はV1.1なんですが、簡単なV1.0にしました。
https://github.com/OpenWonderLabs/SwitchBotAPI/blob/main/README-v1.0.md
トークンの取得
いろんなサイトで記事になっていますが、トークンは、下記な感じで取得します。
- アプリを開く
- プロフィールタップする
- 設定をタップする
- アプリバージョンを10回タップする
- 「開発者向けオプション」は表示されるので、タップする
- 「トークンを取得」をタップする
- トークンが2行表示されるので上段のトークンをコピーする →自分はメモに貼っておきました
デバイスの確認
GET https://api.switch-bot.com/v1.0/devices
で登録されているデバイスが取得できるようです。
自分は、Macなので、ターミナルから、下記コマンドで取得しました。
curl -X GET -H "Authorization:トークン文字列" https://api.switch-bot.com/v1.0/devices
いっぱいでてきます。(改行したり、マスクしたり、削除したり、とか加工してます・・)
{
"statusCode":100,
"body":{
"deviceList":[
{"deviceId":"hogehoge","deviceName":"Hub Mini Main","deviceType":"Hub Mini","hubDeviceId":"000000000000"},
{"deviceId":"hogehoge","deviceName":"Hub Mini Sub","deviceType":"Hub Mini","hubDeviceId":"000000000000"}
],
"infraredRemoteList":[
{"deviceId":"テレビのデバイスID","deviceName":"テレビ","remoteType":"TV","hubDeviceId":"hogehoge"},
{"deviceId":"部屋のデバイスID","deviceName":"部屋","remoteType":"DIY Light","hubDeviceId":"hogehoge"},
・・・
・・・
・・・
{"deviceId":"ライトのデバイスID","deviceName":"ライト","remoteType":"DIY Light","hubDeviceId":"hogehoge"}]},
"message":"success"
}
今回は、「ライト」を使うので、「ライトのデバイスID」を、メモります。
ターミナルで実験
一度試します。
デバイスの制御は下記です。
POST /v1.0/devices/{deviceId}/commands
curl --request POST 'https://api.switch-bot.com/v1.0/devices/ライトのデバイスID/commands' --header 'Authorization:トークン文字列' --header 'Content-Type: application/json; charset=utf8' --data-raw '{ "command": "turnOn", "parameter": "default", "commandType": "command" }'
動きました!
やったー!
ショートカットの作成
では、いよいとショートカットを作ります。
ショートカットの使い方は、ここでは書きませんので、わかってる前提で…
(簡単ですが…)
写真とるときに、ヘッダー部分の展開を忘れましたが、そこには、下記が入っています。
Authorization トークン文字列
完成
めでたしめでたし