LoginSignup
0
0

SwitchBot API を使い iPhoneショートカットでスイッチ操作

Posted at

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

トークンの取得

いろんなサイトで記事になっていますが、トークンは、下記な感じで取得します。

  1. アプリを開く
  2. プロフィールタップする
  3. 設定をタップする
  4. アプリバージョンを10回タップする
  5. 「開発者向けオプション」は表示されるので、タップする
  6. 「トークンを取得」をタップする
  7. トークンが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" }'

動きました!
やったー!

ショートカットの作成

では、いよいとショートカットを作ります。
ショートカットの使い方は、ここでは書きませんので、わかってる前提で…
(簡単ですが…)

こんな感じにしています ↓↓↓
IMG_9309.PNG

写真とるときに、ヘッダー部分の展開を忘れましたが、そこには、下記が入っています。

Authorization   トークン文字列

完成

めでたしめでたし

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0