🔘

Stream DeckでSwitchBotを操作する(SwitchBotAPI版)

2021/06/28に公開

はじめに

先日以下の記事でIFTTTと連携してStream DeckからSwitchBotを操作する方法について書きました。
https://zenn.dev/07jp27/articles/streamdeck-ifttt-integration

その記事の中で以下ように書いたものの、SwitchBotのAPIがあれば直接呼べるのでは?と考えていました。

IFTTTは無料ユーザーだとAppletの上限が3つまでなので、しばらく使ってみて便利そうなら有料プランを契約してすべてのSwitchBotと連携する予定です。

実は2020年6月に初めてSwitchBotを購入した際にAPIの提供について調べたことがあり、そのときはAPIが提供されていなかったので期待はしてませんでした。
しかし調べてみたところ、なんと2020年の12月にAPIのドキュメントページが公開されていました🎉!

https://github.com/OpenWonderLabs/SwitchBotAPI

というわけで今回はIFTTTを使用せずにStream Deckから直接SwitchBotAPIをCallしてSwitchBotに接続された機器を操作してみます。

やってみる

SwitchBotAPIトークンの取得

SwichBotAPIのトークンはSwichBotアプリから取得できます。

  1. SwichBotアプリの「設定」を開いて 「アプリバージョン」を10回タップ します。

  2. 10回タップすると表示される「開発者向けオプション」というメニューをタップします。

  3. トークンが表示されるのでメモしておきます。

操作する機器のデバイスIDの取得

PostmanInsomniaでURLをhttps://api.switch-bot.com/v1.0/devices、HeaderにAuthorization:SwitchBotアプリで取得したトークンをセットしてAPIを呼び出します。(CLI使いたい人はもちろんcurlなどでもOKです。)
リクエストに成功するとトークンのアカウントに紐付いている機器一覧が取得できるので操作したい機器のdeviceIdをメモしておきます。

Stream Deckの設定

API Ninjaプラグインのインストール

  1. Stream Deck Storeを開きます。
  2. プラグイン→開発ツール→API Njnjaの「インストール」をクリックします。

API Ninjaの設定

  1. BarRaiderカテゴリからAPI Ninjaをドラック&ドロップします。

  2. 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も無いようなのでそれも含めて実装してみようかと思います)。

GitHubで編集を提案

Discussion