Stream DeckからNature Remo APIを実行する

前回試したNature Remo APIをStream Deckから実行してみます。

普段からPCの作業でStream Deckを使っていたので、 自室の家電もこれで制御できると便利だなと思っていたところでした。

調べてみるとStream DeckのプラグインにHTTPリクエストを投げられるものがあったので、 Nature Remo APIを叩いて自室の照明をON/OFFするボタンを作ってみました。

環境

  • macOS Monterey (Ver 12.3.1)
  • Stream Deck (ver5.2.1)

Stream Deckとは

様々なショートカットを各ボタンに割り当てることができるデバイスです。 ボタンの数は6個、15個、32個のものがありますが、ページを切り替えたりフォルダで階層を作ったりと物理的なボタンの数以上の機能を割り当てられるのでかなり便利です。

www.elgato.com

使い方の例

  • よく使うアプリケーションを起動する
  • スクリーンショットを撮る
  • 頻繁に入力するテキストをボタンで呼び出す
  • 動画の再生・停止
  • 音量調整・ミュート

Web Requestsのインストール

Stream Deckのプラグインとして、Web Requestsをインストールします。 このプラグインを使えば、キーを押した時にあらかじめ設定しておいたURLにHTTPリクエストを投げることができます。

github.com

Stream Deckのストアにアクセスし、 プラグイン > 開発ツールにあるWeb Requestsをインストールします。

Web Requestsをインストール

照明を制御するAPIの確認

照明をON/OFFするために以下のNature Remo APIを使います。

https://swagger.nature.global/#/default/post_1_appliances__appliance__light

https://api.nature.global/1​/appliances​/{appliance}​/light

{appliance}には制御する機器のIDを指定します。

IDの確認方法

Nature Remoのスマホアプリで操作する機器の名称(nickname)を確認します。

今回の場合は「照明」という名称(nickname)です。

Nature Remoアプリでnicknameを確認

次に下記エンドポイントにGETリクエストを送信します。

https://api.nature.global/1/appliances/

JSONでレスポンスが返ってきます。操作したい機器のnicknameが含まれているIDが{appliance}に指定する値です。

nicknameを確認

照明のAppliance ID

Stream Deckにボタンを作成する

機器のIDがわかったら、Stream Deckのアプリを起動して Web Requestsを実行するボタンを作成します。

Web Requestsのアクションを配置

照明ONボタンの作成

まず、照明をONにするボタンを作成します。 URLのbuttonパラメータの値としてonを指定します。

トークンはHeadersに指定します。Authorization: Bearerを忘れないように記述してください。

項目名
タイトル 照明ON
URL https://api.nature.global/1/appliances/{appliance}/light?button=on
Method POST
Headers Authorization: Bearer {TOKEN}

照明ONボタンの作成

照明OFFボタンの作成

次に照明をOFFにするボタンも作成します。 今度はbuttonパラメータにoffを指定します。

項目名
タイトル 電気のOFF
URL https://api.nature.global/1/appliances/{appliance}/light?button=off
Method POST
Headers Authorization: Bearer {TOKEN}

照明OFFボタンの作成

アイコンは好きなものを選びます。 ボタンが作成できたら、実際にボタンを押下して動作確認します。

まとめ

Nature Remo APIをStream Deckから実行してみました。ボタンを押して実際に部屋の電気を点けたり消したりできた時は感動しますね。

これでPCの操作だけでなく、自室の家電制御もStream Deckからできるようになったので万能感があって良いです。