lume

Philips Hue

CLIP v2 over HTTPS, straight to the bridge.

Getting access

lume pair      # press the round button on the bridge first

The bridge only hands out an application key while its physical button is lit, so lume pair polls for 45 seconds. The key is saved to ~/.config/lume/hue-token.

Addressing a light

Point a lamp’s id at a light, a room or a zone — by the name shown in the Hue app, by its old v1 number, or by its v2 uuid. All three resolve, and a typo gets a suggestion rather than a shrug.

{ "type": "hue", "host": "192.168.1.53", "id": "Büro" }
{ "type": "hue", "host": "192.168.1.53", "id": "9" }
{ "type": "hue", "host": "192.168.1.53", "id": "58a6cf82-304f-4c81-abd3-88e86e2db890" }

A room controls every bulb in it through a single command, so as far as a profile is concerned an entire room is a perfectly good lamp. That is not a special case in lume: the bridge exposes rooms and single lights through the same interface, and so does lume.

When a name is ambiguous

Names are not unique across kinds — a room and a bulb inside it are commonly both called Schlafzimmer. Prefix the kind to say which one you mean:

{ "id": "room:Schlafzimmer" }
{ "id": "light:Schlafzimmer" }
{ "id": "zone:Terrasse" }

lume setup writes that prefix automatically wherever it would otherwise be ambiguous. Without a prefix, a light wins, because that is the narrower thing to have asked for.

What Hue can do that Elgato cannot

Colour, for one: lume akzent color amber, or any #rrggbb.

And lume akzent watch is genuinely live — the bridge reports every change on the whole system, including the ones you did not make, so it shows what a wall switch or the Hue app is doing.

brightness 0 is accepted but does not switch a Hue light off — it goes to its minimum and stays on. lume reports the light as on at 0 % rather than quietly turning it off on your behalf.