Elgato Key Light (Air) は REST API から直接操作する方が便利

WFH が続く状況を受けて、勤務先からリモート会議で顔を照らすためのライト(いわゆる「女優ライト」的なもの)が支給された。機種は Elgato Key Light Air というもの。

f:id:nosunosu:20210324004701p:plain
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

時間があったら音声コントロールできるようにしたい。

参考

www.ntpro.nl