Stream deckでトグルスイッチを使う方法とSwitchbot API連携で照明ONOFFさせる方法

スポンサーリンク

今回やること

Switchbot APIを使ってStream deckからHub miniに

  • モニタの電源をONOFFさせる
  • 照明の電源をONOFFさせる

を実現します。

これの利点はSwitchbot直の通信になるので

  1. IFTTTの登録数制限に引っかからない
  2. レスポンス早い
  3. 月額0円

 

単純にStream deck でトグルスイッチの作り方が分かんねえ!という人に教えておくとStream deckでは「マルチアクションのスイッチ」のアクションがトグルスイッチです。

f:id:overwhelminggrowth:20211102231352p:plain

今回作るボタン

SwitchbotとStream deckを買う

テレビだろうがエアコンだろうがリモコンを1台に集約できる神デバイスであるSwitchbot Hub miniとLCD搭載ボタンカスタム性無限大の神デバイスStream deckを買います。

持ってないなら買え。話はそれからだ…

 

動かしたいデバイスをSwitchbotに登録する

スマホにSwitchbotアプリをインストールするとスマホからHub miniを操作できるようになります。

操作したいデバイスのリモコンをHub miniに記憶させます。

 

SwitchbotのアプリでトークンIDを取得する

Switchbotアプリのプロフィール>設定>アプリバージョンを連打します。

すると開発者向けオプションが開けるようになるのでトークンを取得してコピーして自分のPCに控えます。

教えちゃってもリセットできるので大丈夫ですが、この英数字の羅列を他の人に教えると誰でもデバイスを遠隔操作できるようになってしまうので気をつけよう。

f:id:overwhelminggrowth:20211102235554p:plain

開発者向けオプション

 

POSTMANで操作するデバイスのIDを取得する

ここからPOSTMANにアクセスして登録します。

POSTMANとはAPIのアプリ開発にクッソ便利なテストツールです。

デバイスリストを取得するためだけに使います。

英語ですがGoogleアカウントでサインアップできるのでそこまで難しくない。

f:id:overwhelminggrowth:20211103000251p:plain

POSTMAN

サインアップが完了したらワークスペースを開きます

Create a requestかプラスアイコンをクリックします。

f:id:overwhelminggrowth:20211103000655p:plain

どっちかクリック

こんなページに移動するので同じように入力してSendを押します。

 

GET   https://api.switch-bot.com/v1.0/devices

KEY VALUE
Authorization SwitchBotのアプリでコピーしたやつ
Content-Type application/json; charset=utf8

f:id:overwhelminggrowth:20211103001623p:plain

GETコマンド

"deviceId": "00-00000000000-91",
"deviceName": "寝室",
"remoteType": "DIY Light",
"hubDeviceId": "FFFFFFFFFF83"

 

みたいな文字列が出力されるので、操作したいデバイスのdeviceIdの値を控えます。

今回は寝室のライトをONOFFしたいので00-00000000000-91をコピーします。

 

あとで使うのでコピーしたデバイスIDを付け加えてこんなURLをコピーしておいてください。

https://api.switch-bot.com/v1.0/devices/00-00000000000-91/commands

 

Stream deck にプラグインを入れる

ストアからAPI Ninjaというプラグインを検索して入れます。

Stream deck アプリのなんかカラフルなボタンをクリックするとストアが開きます。

f:id:overwhelminggrowth:20211103004246p:plain

カラフルなボタン

f:id:overwhelminggrowth:20211103004121p:plain

API Ninja

 

Stream deck にボタンを追加する

トグルスイッチでONOFF切り替えたいので「マルチアクションのスイッチ」をドラッグ&ドロップで追加します。

f:id:overwhelminggrowth:20211103003956p:plain

マルチアクションのスイッチ

詳細なアクション設定画面に移るので先程入れたAPI Ninjaをドラッグ&ドロップします。

f:id:overwhelminggrowth:20211103004341p:plain

API Ninjaをドラッグ&ドロップ

API Ninjaの入力欄にこのように入力します。

項目 入力値
Request Type POST
API URL https://api.switch-bot.com/v1.0/devices/00-00000000000-91/commands
Content Type application/json
Header Authorization:"Switchbotのアプリでコピーした英数字の羅列(ダブルコーテーション抜きで)"
Data {"command": "turnOn"}

 

Data欄に入力する情報がキモになります。

電源をONにしたい場合

{"command": "turnOn"}

 

電源をOFFにしたい場合

{"command": "turnOff"}

 

スイッチのプレストリガーを押させる場合

{"command": "press"}

 

エアコンを自動 26℃ 風速3でONにしたい場合

{"command": "setall","parameter":26,1,3,on}

 

リモコンのチャンネルを15にしたい場合

{"command": "SetChannel","parameter":15}

 

他にコマンドどんなのあるかというとGithubにSwitchbot APIコマンド一覧があるのでSend device control commandsの欄を見てください。

テープライトだったら色の指定とか、カーテンだったら位置の指定とかも可。

リモコン操作できるスピーカーだったらsetMuteなんてコマンドがあったり、ボリューム操作もできるようなのでリモコン操作ならなんでもできそうな感じです。

f:id:overwhelminggrowth:20211103010107p:plain

その他のコマンド

この動作をトグルで切り替えたいので○で囲った部分の数字を押して同じようにAPI Ninjaをドラッグ&ドロップします。

f:id:overwhelminggrowth:20211103005825p:plain

トグルの処理切り替え

これでボタン押せば部屋の電気をつけたり消したりできるようになりました。

 

以上

圧倒的成長。