Lifx Group of Groups Driver (ST port)

community_driver

#81

Update 11/27/18:
v2.0.20181029
See updated driver below. I am leaving the original sync driver in the original post for those that prefer it. I only have one Lifx bulb remaining that will soon be converted to hue so this will be my last update of this driver. I will do my best to fix any bugs but will not be adding any new features.

I originally ported this driver from ST and converted it from asynchronous to synchronous because HE did not support it in the early goings. Now that they do support async, I have reverted this driver back to that method and added a new setState() method. This was requested, tested and approved by @kilowatts so direct any questions his way...just kidding. Big Thank You to @kilowatts for taking the time to test this out for me.

So pretty much everything is the same except for the aforementioned async calls to the Lifx servers and the new setState() command.

Set State command's input value is a map. Managing 4 separate inputs in HE did not respond as expected, so I set this up as a map similar to how setColor works.

setState(map) syntax:
[power:<val>,color:<val>,level:<val>, duration<val>]

power value options: on, off
color value option: see Color Options below
level value options: 0-100
duration value options: 0-3155760000 (in seconds)

*All inputs are optional

Example 1:
To transition from an off state to a brightness of 100, with a color of blue, over 5 minutes
[power:on, color:blue, level:100, duration:300]

Example 2:
To transition to the color red over 2 minutes and a brightness of 85
[color:red, level:85, duration:120]

Example 3:
To transition to off state over 1 minute
[power:off, duration:60]

Color options can be any Hex RGB code OR
Any of the "color name"s listed below (derived from CSS Color Module Level 4):

Named Numeric Color name Hex rgb Decimal
aliceblue #F0F8FF 240,248,255
antiquewhite #FAEBD7 250,235,215
aqua #00FFFF 0,255,255
aquamarine #7FFFD4 127,255,212
azure #F0FFFF 240,255,255
beige #F5F5DC 245,245,220
bisque #FFE4C4 255,228,196
black #000000 0,0,0
blanchedalmond #FFEBCD 255,235,205
blue #0000FF 0,0,255
blueviolet #8A2BE2 138,43,226
brown #A52A2A 165,42,42
burlywood #DEB887 222,184,135
cadetblue #5F9EA0 95,158,160
chartreuse #7FFF00 127,255,0
chocolate #D2691E 210,105,30
coral #FF7F50 255,127,80
cornflowerblue #6495ED 100,149,237
cornsilk #FFF8DC 255,248,220
crimson #DC143C 220,20,60
cyan #00FFFF 0,255,255
darkblue #00008B 0,0,139
darkcyan #008B8B 0,139,139
darkgoldenrod #B8860B 184,134,11
darkgray #A9A9A9 169,169,169
darkgreen #006400 0,100,0
darkgrey #A9A9A9 169,169,169
darkkhaki #BDB76B 189,183,107
darkmagenta #8B008B 139,0,139
darkolivegreen #556B2F 85,107,47
darkorange #FF8C00 255,140,0
darkorchid #9932CC 153,50,204
darkred #8B0000 139,0,0
darksalmon #E9967A 233,150,122
darkseagreen #8FBC8F 143,188,143
darkslateblue #483D8B 72,61,139
darkslategray #2F4F4F 47,79,79
darkslategrey #2F4F4F 47,79,79
darkturquoise #00CED1 0,206,209
darkviolet #9400D3 148,0,211
deeppink #FF1493 255,20,147
deepskyblue #00BFFF 0,191,255
dimgray #696969 105,105,105
dimgrey #696969 105,105,105
dodgerblue #1E90FF 30,144,255
firebrick #B22222 178,34,34
floralwhite #FFFAF0 255,250,240
forestgreen #228B22 34,139,34
fuchsia #FF00FF 255,0,255
gainsboro #DCDCDC 220,220,220
ghostwhite #F8F8FF 248,248,255
gold #FFD700 255,215,0
goldenrod #DAA520 218,165,32
gray #808080 128,128,128
green #008000 0,128,0
greenyellow #ADFF2F 173,255,47
grey #808080 128,128,128
honeydew #F0FFF0 240,255,240
hotpink #FF69B4 255,105,180
indianred #CD5C5C 205,92,92
indigo #4B0082 75,0,130
ivory #FFFFF0 255,255,240
khaki #F0E68C 240,230,140
lavender #E6E6FA 230,230,250
lavenderblush #FFF0F5 255,240,245
lawngreen #7CFC00 124,252,0
lemonchiffon #FFFACD 255,250,205
lightblue #ADD8E6 173,216,230
lightcoral #F08080 240,128,128
lightcyan #E0FFFF 224,255,255
lightgoldenrodyellow #FAFAD2 250,250,210
lightgray #D3D3D3 211,211,211
lightgreen #90EE90 144,238,144
lightgrey #D3D3D3 211,211,211
lightpink #FFB6C1 255,182,193
lightsalmon #FFA07A 255,160,122
lightseagreen #20B2AA 32,178,170
lightskyblue #87CEFA 135,206,250
lightslategray #778899 119,136,153
lightslategrey #778899 119,136,153
lightsteelblue #B0C4DE 176,196,222
lightyellow #FFFFE0 255,255,224
lime #00FF00 0,255,0
limegreen #32CD32 50,205,50
linen #FAF0E6 250,240,230
magenta #FF00FF 255,0,255
maroon #800000 128,0,0
mediumaquamarine #66CDAA 102,205,170
mediumblue #0000CD 0,0,205
mediumorchid #BA55D3 186,85,211
mediumpurple #9370DB 147,112,219
mediumseagreen #3CB371 60,179,113
mediumslateblue #7B68EE 123,104,238
mediumspringgreen #00FA9A 0,250,154
mediumturquoise #48D1CC 72,209,204
mediumvioletred #C71585 199,21,133
midnightblue #191970 25,25,112
mintcream #F5FFFA 245,255,250
mistyrose #FFE4E1 255,228,225
moccasin #FFE4B5 255,228,181
navajowhite #FFDEAD 255,222,173
navy #000080 0,0,128
oldlace #FDF5E6 253,245,230
olive #808000 128,128,0
olivedrab #6B8E23 107,142,35
orange #FFA500 255,165,0
orangered #FF4500 255,69,0
orchid #DA70D6 218,112,214
palegoldenrod #EEE8AA 238,232,170
palegreen #98FB98 152,251,152
paleturquoise #AFEEEE 175,238,238
palevioletred #DB7093 219,112,147
papayawhip #FFEFD5 255,239,213
peachpuff #FFDAB9 255,218,185
peru #CD853F 205,133,63
pink #FFC0CB 255,192,203
plum #DDA0DD 221,160,221
powderblue #B0E0E6 176,224,230
purple #800080 128,0,128
rebeccapurple #663399 102,51,153
red #FF0000 255,0,0
rosybrown #BC8F8F 188,143,143
royalblue #4169E1 65,105,225
saddlebrown #8B4513 139,69,19
salmon #FA8072 250,128,114
sandybrown #F4A460 244,164,96
seagreen #2E8B57 46,139,87
seashell #FFF5EE 255,245,238
sienna #A0522D 160,82,45
silver #C0C0C0 192,192,192
skyblue #87CEEB 135,206,235
slateblue #6A5ACD 106,90,205
slategray #708090 112,128,144
slategrey #708090 112,128,144
snow #FFFAFA 255,250,250
springgreen #00FF7F 0,255,127
steelblue #4682B4 70,130,180
tan #D2B48C 210,180,140
teal #008080 0,128,128
thistle #D8BFD8 216,191,216
tomato #FF6347 255,99,71
turquoise #40E0D0 64,224,208
violet #EE82EE 238,130,238
wheat #F5DEB3 245,222,179
white #FFFFFF 255,255,255
whitesmoke #F5F5F5 245,245,245
yellow #FFFF00 255,255,0
yellowgreen #9ACD32 154,205,50

#82

Thanks @stephack! We all need a bit of "lemon chiffon" and "blanched almond" in our lives. :+1:


#83

Setting my lampposts on Christmas mode has never been easier. Three custom commands for setState():

[color:red, level:85, duration:3]
[color:green, level:85, duration:3]
[color:white, level:85, duration:3]

And then just make a rule that executes them in sequence. :christmas_tree:


#84

Hey @stephack. Thanks for the update.
Just curious - why are you switching all over to Hue away from LIFX? I’ve just started recently doing the reverse for large rooms as the LIFX bulbs go much brighter than Hue bulbs


#85

Lol...the reason I bought Lifx initially was because of the extra lumens. At my old house the lifx bulbs were the only source of light for the entire living area. Hue bulbs were simply not bright enough. My existing house has an excess of lights. Lifx is more expensive per bulb and hue has better color reproduction. They also have local hub to hub support. Long story short, the benefits of Lifx no longer matter to me. The benefits of Hue do.


#86

I can agree with all of that. LIFX has richer and brighter colors overall, but they are quite expensive. I'm stuck with them now though, so the best I can hope for is local LIFX integration with Hubitat.


#87

Is that even possible for local integration? I thought everything goes via the cloud?

@stephack sorry, just to be clear, the latest update is v1.3.6? Sorry for sounding dumb, just you mention v2.0.20181112 at the start of the update post.


#88

I can see how it would be confusing. 1.3.6 is the last update from the original author for the ST version. When you install the driver it will state a driver version on the driver detail page. It should be 2.0.20181029.
I had delayed releasing this for so long and wanted to get it off my to do list that I never added my usual notes at the top of the driver...and somehow listed the wrong version in my post above. It should actually be 2.0.20181029. I will update it now.


#89

It's possible:


#90

Not quite following you here. I installed the Lifx GOG driver, got the API token. So where do I copy the token over to? You say "type in the group name you want to control EXACTLY as displayed in the LIFX appp". Where do I type in that name at?

Are you saying that you are replacing your Lifx bulbs with Hue equivalent bulbs so that you prefer having the Hue hub as your connection into the Hubitat hub? Just trying to get my head around what I should be looking at with migrating my system over from ST which is a mix of 5 Hue and 4 Lifx bulbs and 7 GE Link bulbs. Dude I will get your Lifx bulbs off your hands and swap you my Hues :blush:


#91

I was saying that....until a few days ago when the HE team announced UDP support. I'm hoping this means someone with more talent than myself can get Lifx Connected via the LAN protocol.

By install I assume you mean you installed the driver. What you need to do next is go to the Devices page and click Add Virtual Device button. Then create a virtual device with whatever name and label you would like and choose the Lifx GOG as the driver. After you click save, it should present you with all the input boxes to enter you API key and group names. Enter them, click save and test.


#92

Oh, UDP support at last? Must have missed the announcement.


#93

you didn't miss it, it's actually old news but not well explained. @mike.maxwell mentioned it back in mid-september, offering developers some code. @chuck.schwer responded 3 days ago with some of that code.

UDP sending is available but there's some unclarity around that word that implies receiving doesn't exist. An App that sends a UDP message CAN get a reply. "replies" to the same port, get sent to an app's Parse method, is my understanding, and that Broadcast UDP is not available.

Thus a developer could presumably try their hand at Lifx or similar.

The implication is that sending has to be first.


#94

As far as I can tell from the LIFX Lan Protocol docs everything starts with a UDP broadcast from the driver to the devices on the network so that should be fine.