Stream DeckでSwitchBotを操作する(SwitchBotAPI版)
はじめに
先日以下の記事でIFTTTと連携してStream DeckからSwitchBotを操作する方法について書きました。
その記事の中で以下ように書いたものの、SwitchBotのAPIがあれば直接呼べるのでは?
と考えていました。
IFTTTは無料ユーザーだとAppletの上限が3つまでなので、しばらく使ってみて便利そうなら有料プランを契約してすべてのSwitchBotと連携する予定です。
実は2020年6月に初めてSwitchBotを購入した際にAPIの提供について調べたことがあり、そのときはAPIが提供されていなかったので期待はしてませんでした。
しかし調べてみたところ、なんと2020年の12月にAPIのドキュメントページが公開されていました🎉!
というわけで今回はIFTTTを使用せずにStream Deckから直接SwitchBotAPIをCallしてSwitchBotに接続された機器を操作してみます。
やってみる
SwitchBotAPIトークンの取得
SwichBotAPIのトークンはSwichBotアプリから取得できます。
-
SwichBotアプリの「設定」を開いて 「アプリバージョン」を10回タップ します。
-
10回タップすると表示される「開発者向けオプション」というメニューをタップします。
-
トークンが表示されるのでメモしておきます。
操作する機器のデバイスIDの取得
PostmanやInsomniaでURLをhttps://api.switch-bot.com/v1.0/devices
、HeaderにAuthorization:SwitchBotアプリで取得したトークン
をセットしてAPIを呼び出します。(CLI使いたい人はもちろんcurlなどでもOKです。)
リクエストに成功するとトークンのアカウントに紐付いている機器一覧が取得できるので操作したい機器のdeviceId
をメモしておきます。
Stream Deckの設定
API Ninjaプラグインのインストール
- Stream Deck Storeを開きます。
- プラグイン→開発ツール→API Njnjaの「インストール」をクリックします。
API Ninjaの設定
-
BarRaiderカテゴリからAPI Ninjaをドラック&ドロップします。
-
SwitchBotAPIのドキュメントの通りAPIの呼び出し設定を行います。
ここではサンプルとしてPlugの電源オンを行います。
項目 | 設定 |
---|---|
Request Type | POST |
API URL | https://api.switch-bot.com/v1.0/devices/{取得したPlugのデバイスID}/commands |
Content Type | application/json |
Headers | Authorization:{SwitchBotアプリから取得したトークン} |
Data | {"command": "turnOff","parameter": "default","commandType": "command"} |
完成!
好きなアイコンを設定して完成です。実際に押してみてテストします。
最後に
これでIFTTTを使用せずにSwitchBotの機器を操作でき、有料プランからの脱出に成功しました。
今回使用したプラグインのAPI NinjaがWindowsのみでしかリリースされていなかったため、本記事の方法ではWinsowsでしか設定できませんが、内部処理としてはURLにアクセスしているだけなのでMacでも実現できそうです。
SwitchBot公式でStream Deckプラグインがリリースされるのを(あまり期待せずに)待ちつつ、自分でもプラグインを作ってみようと思いました(まだSDKも無いようなのでそれも含めて実装してみようかと思います)。
Discussion