Do 'hue' want a strobe up there?

Geplaatst door Leon Meijer op Woensdag, 12 juni 2013 in Weblog

Sorry for the non-English people, this one will be in English;

For those building apps for the hue lighting system this might be interesting.

Read this first
This post contains undocumented features of the Philips hue lighting system.
Use of the code below is at your own risk. It is possible that Philips will put limits in place to prevent the system from producing this many flashes (strobes) per second.

On the day of the Developers Conference I was told that maybe this entire feature will be removed or changed in a way that it will no longer strobe.

For those playing computer games, there is always a warning for people suffering from epilepsy, read with care and don't say I didn't warn you :-)

Warning!
LED strobe lights are are very powerful devices, use them with extreme care. The visual stimulation is so intense, they can spell quite a hypnotic effect. But what is much lesser known is that they can also trigger epileptic seizures.

So dont' let your buddies fool around with LED strobes if it is your party. There may be someone in your company suffering from epilepsy and intense stobing could be dangerous for them.

As shown in the youtube video below I finally got the 'strobe' function of Hue up and running.

The pointsymbol API
On the developers page of Hue they wrote that the pointsymbol is an object and that it's reserved for future functionality and my guess is that it's much more then a strobe feature. My guess is that it can be used to put multiple lights different states simultaneously without the need of calling the lights/#/state API.

Each light can have 8 symbols stored, turning the light off using the wall switch will reset the pointsymbol but only the light forgets it, on the bridge you'll still see the previous symbol but you'll have to set it again.

To set a pointsymbol do a HTTP PUT request to:

http://yourbridge/yourapikey/lights/#/pointsymbol

The value must be an object with at least one "symbol" for example:

{"1":"0A00F1F01F1F1001F1FF100000000001F2F"}

What's that? Well, I'm still trying to find out what the line above is exactly doing when transmitted to the light(s) but... it strobes. I have more strobe lines that work e.g. changing the first 0A to 14 will make the effect more yellowish and increasing that value will make it flash faster.

I managed to get pink, yellow, blue, green and white like strobes but what value contains the color? I tried XY colors, XY colors in HEX and RGB (decimal and hexadecimal) but couldn't really figure out yet how to apply colors. I've also got the brightness changed by playing around but how this value is build is undocumented and unfortunately I'm unable to do it for you. But I'm guessing that the value contains sections maybe for each individual LED inside the hue light (or a group of lights) there are eleven LEDs inside the lightbulb so it might be a bit much to put in a hexadecimal string of max 41 characters (a problem you might face if the hex is shorter then 41 characters is that the symbol won't be set). When filming the flashing lights you see the effect like it is circling above the lightbulb (and sometimes makes the light look off and the effect flying above it :-P it's a kind of magic) so maybe that's in there.

If you find out before it got documented please let me know!

The symbolselection API
Now you've got the symbol(s) set to e.g. 5 lights (like I have done in the Youtube below) you need "transmit" the symbol using a symbol selection.

To do this do a HTTP PUT request to:

http://yourbridge/yourapikey/groups/#/transmitsymbol

I've got this code from a video created by Q42, they display the output of Fiddler2 (HTTP debugger) on screen and using a screenreader I snatched the value of the screen...

It looks like:

{"symbolselection":"01010501010102010301040105","duration":2000}

This is the point where car drivers in your street think they're catched by a cam...

My guess is that 0101 stands for go from light number 1; in steps of 01 symbol at a time; to light 05 but changing the first 01 looks nothing changed and the second 01 makes the effect not applying at all so what is 0101?
05 is the number of lights used. Then after 010105 it does: 0101 (light one, do symbol one) and 0102 (light two, do symbol one) and 0103 (light three, do symbol one) etc...

As far as I know there is not such "wait for, then go" so you'll see all the lights playing the pointsymbol set in the pointsymbol API (each light can have 8 different pointsymbols with a minimum of 10 characters (the other 31 can be zero, but this needs documentation :-)).

Don't forget to set the duration parameter in milliseconds, 65000 (one minute and five seconds) is the max on my hue bridge, but I think having it running for 2 seconds might be enough :-).

note
The pointsymbol API is applied on the light(s).
The transmitsymbol API is applied on the group(s). The light numbers in the symbol selection are hexadecimal (1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10,etc


Thank hue
For reading this post and hopefully someone can clarify a few things behind the pointsymbol sauce.


Youtube
Here's a youtube video showing my five dining table lights doing the strobe effect using the code above:


1 Reactie for this entry

Geeft reacties weer als Lineair | Samengevoegd

  • Jarno
    Intresting, ill will have a loo at this if i can get it todo what i want / understand the hexidicimal strings

    since it seems some values are not only respomseable for color, it might just be that some values only uses like 7 bits and that the 8th bit belongs to a different value (causing overflow when changing the hexidicmal values)

Reactie toevoegen

Ingestuurde reacties zullen eerst worden gecontroleerd voor deze geplaatst worden.

Standaad emoticons zoals :-) en ;-) worden geconverteerd naar afbeeldingen.
Email adressen worden niet getoond en zijn alleen zichtbaar voor de blogger.
Woorden vet markeren d.m.v. *woord*, onderstrepen d.m.v _woord_.