Elgato Key Light (Air) は REST API から直接操作する方が便利
WFH が続く状況を受けて、勤務先からリモート会議で顔を照らすためのライト(いわゆる「女優ライト」的なもの)が支給された。機種は Elgato Key Light Air というもの。
専用のスマホアプリから操作するようになっているのだが、スマホアプリは起動が遅くて ON/OFF するだけなのに時間がかかって利便性がいまいち。 調べてみると単純な API が提供されており、以下のように一発 REST リクエストを投げるだけで簡単に操作できることがわかった。
1. GET http://<Elgato の IP address>:9123/elgato/lights
で現在の状態を取得
IP アドレスを調べて、GET するだけで現在の設定値が JSON で返ってくる。認証等も不要。例えば以下のような感じ。
$ curl http://192.168.1.226:9123/elgato/lights # -> {"numberOfLights":1,"lights":[{"on":0,"brightness":11,"temperature":246}]}
※ちなみに、うちの ASUS のルータの接続デバイス一覧では、Elgato Key Light は "Dexatek Technology LTD" というクライアント名で表示されていた
戻り値の JSON の中身の意味は以下のとおり。
設定値 | 意味 |
---|---|
numberOfLights | ローカルネットワーク内に存在するライトの数? |
lights[i].on | ライトの ON/OFF (ON = 0, OFF = 1) |
lights[i].brightness | 明るさ (0〜100) |
lights[i].temperature | 色温度 (144〜344、暖色〜寒色) |
2. PUT http://<Elgato の IP address>:9123/elgato/lights
で状態を変更
Light のスイッチを入れたり、状態を変更する場合には、1. で戻ってきた JSON を適宜編集して PUT するだけ。
$ curl -X PUT \ -d '{"numberOfLights":1,"lights":[{"on":1,"brightness":11,"temperature":246}]}' \ http://192.168.1.226:9123/elgato/lights # -> スイッチON $ curl -X PUT \ -d '{"numberOfLights":1,"lights":[{"on":0,"brightness":11,"temperature":246}]}' \ http://192.168.1.226:9123/elgato/lights # -> スイッチOFF
時間があったら音声コントロールできるようにしたい。