[BETA] LIFX Enhanced Drivers

Announcing the first "beta" of LIFX Enhanced Drivers -- built using @bcopeland's LIFX Color Legacy driver as a reference, the intent is to provide additional functionality not exposed by the built-in LIFX drivers. These drivers utilize the built-in LIFX Classes and LIFX Integration App to build and send packets to the bulbs.

The first driver targets LIFX Strips / Multizone devices. Notable differences/enhancements from the built-in driver:

  • Persists unique colors in zones when running setLevel for the Strip
  • Aggregates updates from child devices when applying a scene to avoid "popcorning" the zones (with the tradeoff of a slight -- but configurable -- delay)

I intend to eventually develop enhanced drivers for additional bulb types as well.

If you encounter issues, or have suggestions for modified/enhanced behavior -- please enable debug/verbose logging to capture as much data as possible. PRs are welcome.

8 Likes

reserved for future updates

Howdy, do your drivers support the A60 Nightvision 1200 lumen bulb?

I’ve got one coming today for my Halloween front Porch setup and I can’t find and specific support listed for it.

Sorry, no. I actually ran into some bugs with the MZ driver and flipped back to the built-in for now (better overall WAF) - still a side project I'd like to come back to, but on the back burner for now.

1 Like

Cheers, I’ve asked the question in the official thread too.

Hey,
I am looking to add "effects" to my LED strips, for example trigger the "Move Effect" for 30 seconds on the stairs every time there is a motion detected at the bottom.

Are these effects possible with the enhanced driver?

The framework is in the driver, but not tested. Would need to uncomment line 38:

capability "LightEffects"

to expose the command, then invoke setEffect with param: 1 to start the Move effect, param: 0 to stop. Current implementation does not specify the direction of motion, and has hardcoded the speed. Unfortunately hasn't gotten much love since my initial stab... it was unreliable in turning on/off (sometimes needed two sends), and I switched back to the built-in drivers for my own strips. Hoping to come back to this when life settles down :slight_smile:

1 Like

Finally came around to try and implement this.

When I try to I get the following error java.lang.UnsupportedOperationException: Cannot use rightShift() on this number type: java.math.BigInteger with value: 18374686479671623680 on line 381 (method setEffect)

And Line 381 is the following
cmds.add(new hubitat.lifx.commands.SetMultiZoneEffect(instanceId: 4824828, type: effectType, speed: 5, duration: duration))

Posting because I found this - but if its not obvious please don't go intro trouble trying to debug it

Maybe time to look at 'effects' again :laughing:

4 Likes

Everyone is talking about this, it's all the buzz

I had a dream about setEffect last night.

Also, I was a blue horse with bat wings, but that's beside the point.

Any ideas why Hubitat doesn't seem to remember the zone colors even after manually polling the strips? I'm trying to use 'set level' again without changing the zone colors, but despite the nice code you added @dkilgore90, all of the zones change to the Zone 1 color.

FWIW, I contacted LIFX about addressing brightness adjustments (using LAN protocol) without affecting the HSK values, and as expected they said nothing can be left blank; all values (HSBK) need to be re-set with each command sent. This makes sense when recalling how to program something like the Neopixel LED's. Still, it'd be nice if they were able to store zone colors on-board the device controller so we could send empty HSK values and let the device controller adjust the commands as needed.

Seems to be a question for @bcopeland