macOSのメニューバーからNatureRemo経由でリモコン操作する方法
Macで作業中、照明の明るさを調整したくなった時に、
NatureRemoのスマホアプリやリモコンに持ち替えするのが面倒に思い、
メニューバーあたりからNatureRemoで操作できないかを調べたところ、
簡単にできたのでメモを残しておきます。
完成形は、以下のイメージになります。
Nature Remo Local APIを使います。
NatureRemoのホスト名を調べる
まず、NatureRemoのホスト名を調べます。
以下の通りコマンドを入力して、
出力された「Remo-XXXXXX」部分が、NatureRemoのホスト名になります。
% dns-sd -B _remo._tcp
Browsing for _remo._tcp
DATE: ---Sat 20 Feb 2021---
3:32:26.968 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
3:32:26.968 Add 2 8 local. _remo._tcp. Remo-XXXXXX
リモコンの信号を取得する
Nature Remoに向けて、リモコンの信号を送ります。
(Nature Remo 3の場合、青く光ります)
以下の通りコマンドで、出力されたJSONがリモコンの信号になります。
「Remo-XXXXXX」部分は、調べたNatureRemoのホスト名に置き換えて下さい。
% curl http://Remo-XXXXXX.local/messages -H "X-Requested-With: local"
{"format":"us","freq":38,"data":[9020, ...]}
取得した信号のJSONは、次のコマンドで送信して確認することが出来ます。
% curl -XPOST http://Remo-XXXXXX.local/messages -H "X-Requested-With: local" -d '{"format":"us","freq":38,"data":[9020, ...]}'
Automatorで信号を送信するアプリケーションを作る
「Automator」を起動します。
「ファイル」→「新規」メニューから、「アプリケーション」を選択します。
アクションで「シェルスクリプトを実行」を選択して、次のようなスクリプトを指定します。
「Remo-XXXXXX」と信号のJSONは、調べたものに置き換えます。
HOST_REMO=Remo-XXXXXX.local
REMO_SIGNAL='{"format":"us","freq":38,"data":[9020,...]}'
curl -XPOST http://$HOST_REMO/messages -H "X-Requested-With: local" -d $REMO_SIGNAL
「ファイル」→「保存」メニューから、適当に名前をつけて保存します。
メニューバーにスクリプトメニューを表示する
「スクリプトエディタ」を起動します。
「スクリプトエディタ」→「環境設定」メニューの「一般」タブを選択します。
「メニューバーにスクリプトメニューを表示」をチェックします。
ユーザースクリプトを追加する
メニューバーに表示された「スクリプトエディタ」アイコンから、
「スクリプトフォルダを開く」→「ユーザ・スクリプト・フォルダを開く」を選びます。
表示されたフォルダに、Automatorで作成したアプリケーションを追加します。
以上で、
メニューバーからNatureRemo経由でリモコン信号を送ることが出来るようになります。
参考サイト
以下のサイトを参考にさせて頂きました、ありがとうございます。
Nature RemoのIPアドレスを確認したい | Nature
https://support.nature.global/hc/ja/articles/900002597106-Nature-Remo%E3%81%AEIP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%9F%E3%81%84
Nature Remo Local API でローカルからリモコン信号を送る | yuu26-memo
https://blog.yuu26.com/nature-remo-local-api/
Automatorとかで作ったスクリプトをメニューバーから使う | Amitica
https://amitica.net/archives/1225
追記: AppleScript版
(2021.5.31 追記)
よくよく考えてみると、
(Automatorでアプリケーションを作るよりも)
AppleScriptだけで完結させた方が簡単でした。
AppleScriptだけでやりたい場合は、
Automatorでアプリケーションを作る代わりに、
スクリプトエディタで以下のようなスクリプトを書いて、
ユーザ・スクリプト・フォルダに配置します。
set HOST_REMO to "Remo-XXXXXX.local"
set REMO_SIGNAL to "'{\"format\":\"us\",\"freq\":38,\"data\":[9020,...]}'"
do shell script "curl -XPOST http://" & HOST_REMO & "/messages -H \"X-Requested-With: local\" -d " & REMO_SIGNAL