I’ve been meaning to add my Elgato Keylight Air to HomeKit for a while, and thanks to this post on Reddit I finally worked out how. And it turned out to be pretty simple.

Pre-requisites

  1. Have a working Homebridge system connected to HomeKit.
  2. Install the homebridge-http-lightbulb plugin.

Before you begin

  1. Assign your Keylight Air a static IP address via DHCP.
  2. Replace 192.168.1.80 in the JSON configuration below with the IP address you assigned in the previous step.

Configuration

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
{
  "accessory": "HTTP-LIGHTBULB",
  "name": "Elgato Keylight Air",
  "debug": false,
  "onUrl": {
    "url": "http://192.168.1.80:9123/elgato/lights",
    "method": "PUT",
    "body": "{\"numberOfLights\":1,\"lights\":[{\"on\":1}]}"
  },
  "offUrl": {
    "url": "http://192.168.1.80:9123/elgato/lights",
    "method": "PUT",
    "body": "{\"numberOfLights\":1, \"lights\":[{\"on\":0}]}"
  },
  "statusUrl": "http://192.168.1.80:9123/elgato/lights",
  "statusPattern": "\"on\":1",
  "brightness": {
    "statusUrl": "http://192.168.1.80:9123/elgato/lights",
    "statusPattern": "\"brightness\":(\\d*)",
    "setUrl": {
      "url": "http://192.168.1.80:9123/elgato/lights",
      "method": "PUT",
      "body": "{\"numberOfLights\":1, \"lights\":[{\"brightness\":%s }]}"
    }
  },
  "colorTemperature": {
    "statusUrl": "http://192.168.1.80:9123/elgato/lights",
    "statusPattern": "\"temperature\":(\\d*)",
    "unit": "mired",
    "minValue": 143,
    "maxValue": 344,
    "setUrl": {
      "url": "http://192.168.1.80:9123/elgato/lights",
      "method": "PUT",
      "body": "{\"numberOfLights\":1,\"lights\":[{\"temperature\": %s }]}"
    }
  }
}

Enjoy!