今回やること
Switchbot APIを使ってStream deckからHub miniに
- モニタの電源をONOFFさせる
- 照明の電源をONOFFさせる
を実現します。
stream deckでSwitchBotの制御やる記事のネタ(分かりやすさの都合で音あり pic.twitter.com/11VEewkpAv
— せぐ (@segu_FF14) November 2, 2021
これの利点はSwitchbot直の通信になるので
- IFTTTの登録数制限に引っかからない
- レスポンス早い
- 月額0円
単純にStream deck でトグルスイッチの作り方が分かんねえ!という人に教えておくとStream deckでは「マルチアクションのスイッチ」のアクションがトグルスイッチです。
- SwitchbotとStream deckを買う
- 動かしたいデバイスをSwitchbotに登録する
- SwitchbotのアプリでトークンIDを取得する
- POSTMANで操作するデバイスのIDを取得する
- Stream deck にプラグインを入れる
- Stream deck にボタンを追加する
SwitchbotとStream deckを買う
テレビだろうがエアコンだろうがリモコンを1台に集約できる神デバイスであるSwitchbot Hub miniとLCD搭載ボタンカスタム性無限大の神デバイスStream deckを買います。
持ってないなら買え。話はそれからだ…
動かしたいデバイスをSwitchbotに登録する
スマホにSwitchbotアプリをインストールするとスマホからHub miniを操作できるようになります。
操作したいデバイスのリモコンをHub miniに記憶させます。
SwitchbotのアプリでトークンIDを取得する
Switchbotアプリのプロフィール>設定>アプリバージョンを連打します。
すると開発者向けオプションが開けるようになるのでトークンを取得してコピーして自分のPCに控えます。
教えちゃってもリセットできるので大丈夫ですが、この英数字の羅列を他の人に教えると誰でもデバイスを遠隔操作できるようになってしまうので気をつけよう。
POSTMANで操作するデバイスのIDを取得する
ここからPOSTMANにアクセスして登録します。
POSTMANとはAPIのアプリ開発にクッソ便利なテストツールです。
デバイスリストを取得するためだけに使います。
英語ですがGoogleアカウントでサインアップできるのでそこまで難しくない。
サインアップが完了したらワークスペースを開きます。
Create a requestかプラスアイコンをクリックします。
こんなページに移動するので同じように入力してSendを押します。
GET https://api.switch-bot.com/v1.0/devices
KEY | VALUE |
Authorization | SwitchBotのアプリでコピーしたやつ |
Content-Type | application/json; charset=utf8 |
"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 アプリのなんかカラフルなボタンをクリックするとストアが開きます。
Stream deck にボタンを追加する
トグルスイッチでONOFF切り替えたいので「マルチアクションのスイッチ」をドラッグ&ドロップで追加します。
詳細なアクション設定画面に移るので先程入れた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なんてコマンドがあったり、ボリューム操作もできるようなのでリモコン操作ならなんでもできそうな感じです。
この動作をトグルで切り替えたいので○で囲った部分の数字を押して同じようにAPI Ninjaをドラッグ&ドロップします。
これでボタン押せば部屋の電気をつけたり消したりできるようになりました。
以上
圧倒的成長。