LIFX Local Control

Hi Rob, I can discover my Lifx z strip with Lifx Master, any idea what is the problem? But I can control it with Lifx app.
Thanks for your time.

I'm assuming this should be "cannot discover" - not much to go on, but a few items to check:

  • If your z strip is on a different subnet than HE, ensure udp packets can be routed between them
  • Do you have the MultiZone driver installed on HE?
  • Capture logs from the Lifx Master App and post them here to give us more clues

Hi, your assumption was right on! I'm a beginner with HE, so I might not have the right answers, sorry.

So I install the MultiZone driver and now it's dicovered and I can control it with HE.

I have those driver install:

Should I install other drivers?
Is it possible to set or use Theme that are in the LIFX app or set manually different colors?

Thanks!

No worries - users of all skill levels welcome.

Glad to hear it is now discovered! You only need the drivers for devices you want to discover/control. Crossover of themes from the Lifx app is indirectly possible by setting it once from the app, then capturing it using the zonesSave command. You can then reload that later using the zonesLoad command.

To manually set different colors in different zones, you can use the setZones command - the README mentions the format for the input there, but hit us up here (with any logs from the device/app) if you run into trouble.

One additional option is to install the LIFXMultiZoneChild driver, and run the createChildDevices command on the current z strip device. This will create additional devices in HE for each zone in your z strip, which can be used and set like a standard RGBW light. On my hub, I set up dashboards with the child devices that mirror the physical layout of the zones where I installed the strip, making it easy to conceptualize how it will appear. One note if you go this route: after creating the child devices, you may have to toggle each one on and off before they start behaving properly. Any changes made in the parent device will update the child by the next 1min poll.

Hey all! I've been struggling to get my hubitat to control one of my two Lifx A19s. Any help would be greatly appreciated. I made a thread over here about it with screenshots and stuff.

One bulb is newer than the other, but both Lifx A19s. One is a much newer version with different firmware. Is that newer bulb version just not included in the current release?
Older bulb that works in hubitat- "LIFX (A19)" with v2.77 Firmware
Newer bulb that I can't add to hubitat- "LIFX (A19) LCM3" with v3.60 Firmware

Both bulbs claim to be fully up to date.

from logs:
app:482020-05-22 08:24:41.709 pm warnDevice type 'null' in namespace 'robheyes' not found - you need to install the appropriate driver

app:482020-05-22 08:24:40.449 pm infoDiscovery started

thank you!

You hit the nail on the head - should be a simple fix. From your other thread, your newer bulb reports product id 62. Need to update the LIFXMasterApp in private Map deviceVersion with a case for this id. Looks like it should belong between lines 1569 and 1570 in Rob's current Master branch, with the other A19 IDs.

PR to update: Device types by dkilgore90 · Pull Request #84 · robheyes/lifxcode · GitHub

1 Like

Thank you, I was trying something similar before but over complicating it.

It works now after I put "case 62:" on line 1570 as per your instructions. I'm a little shocked I had to add so little. Thanks again.

Are there drivers for the Candle Color bulb?

I may have missed it but I didn't see them anywhere.

@setheryb Not yet. I've been working on the tile capabilities in some spare time, though - and the candle bulb uses the same messages - so most of it should translate. The catch on my side is that I don't have either device type (tile or candle) to test against. If you'd like to test it out for me, I can throw something together and point you to the code (may take me a couple days)

@ozsmarthome @setheryb check out this branch: lifxcode/ at candle · dkilgore90/lifxcode · GitHub

Updated MasterApp and Tile driver, plus new drivers TileChild and Candle. As mentioned before, I don't have these devices myself to test out the code, but feel free to take it for a whirl and let me know how it goes (debug logs appreciated for any bugs found). We may want a separate thread to discuss initial testing and issues found?

On the candle driver...looks like there is an error thrown in the driver code on Line 72...there's a left paren missing and I think an extra right bracket or a bracket missing

I really appreciate the effort by @rob and @dkilgore90 in developing and maintaining this.

When I updated to the latest master app and the latest drivers, I started getting a block of error messages every minute.

Copy/pasted, it looks like this:

dev:5422020-06-05 14:58:55.176 warnError occured with UDP message: SocketTimeoutException: Receive timed out

dev:5452020-06-05 14:58:42.444 warnError occured with UDP message: SocketTimeoutException: Receive timed out

app:82020-06-05 14:58:32.585 warnUnhandled response for 509

app:82020-06-05 14:58:22.652 warnUnhandled response for 720

dev:15512020-06-05 14:58:22.525 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 2, 0, 0]

app:82020-06-05 14:58:22.464 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.util.LinkedHashMap, user_driver_robheyes_LIFX_Tile_228$_poll_closure4) values: [Colour tiles, TILE.GET_TILE_STATE, [tile_index:4, length:1, ...], ...] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 86 (lifxQuery)

app:82020-06-05 14:58:22.411 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.util.LinkedHashMap, user_driver_robheyes_LIFX_Tile_228$_poll_closure4) values: [Colour tiles, TILE.GET_TILE_STATE, [tile_index:3, length:1, ...], ...] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 86 (lifxQuery)

app:82020-06-05 14:58:22.365 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.util.LinkedHashMap, user_driver_robheyes_LIFX_Tile_228$_poll_closure4) values: [Colour tiles, TILE.GET_TILE_STATE, [tile_index:2, length:1, ...], ...] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 86 (lifxQuery)

app:82020-06-05 14:58:22.319 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.util.LinkedHashMap, user_driver_robheyes_LIFX_Tile_228$_poll_closure4) values: [Colour tiles, TILE.GET_TILE_STATE, [tile_index:1, length:1, ...], ...] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 86 (lifxQuery)

app:82020-06-05 14:58:22.274 errorgroovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.app.DeviceWrapper, java.lang.String, java.util.LinkedHashMap, user_driver_robheyes_LIFX_Tile_228$_poll_closure4) values: [Colour tiles, TILE.GET_TILE_STATE, [tile_index:0, length:1, ...], ...] Possible solutions: wait(), any(), trim(), next(), dump(), size() on line 86 (lifxQuery)

dev:15512020-06-05 14:58:22.227 debugstate.tileCount: null

dev:15512020-06-05 14:58:22.198 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0]

dev:15512020-06-05 14:58:22.097 debug[36, 0, 0, 52, 68, 76, 69, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0]

dev:15512020-06-05 14:58:22.032 debugpolling tiles

In the above, App 8 is LIFX Master, dev:1551 is LIFX Colour Tiles, dev:545 is LIFX Light Strip, and dev:542 is a LIFX Color bulb.

Looks like you're using the updated code that I've been working on for the TILE (I don't think @rob's code even has these packets defined) - I've been working with @ozsmarthome on the side to test it out, and we're gradually getting there. Latest source is here: lifxcode/ at candle · dkilgore90/lifxcode · GitHub

Note that the logging is verbose, the debug toggle wasn't working for Gary so I've bypassed it with log.debug in places.

We've been discussing tests and issues for the tile driver and capabilities in a side thread: https://community.hubitat.com/t/re-lifx-local-control/42045 - please let me know what's working, what's not, and any suggestions

Cheers for the swift response. I'll try the candle branch version.

If I get tired of the logging, do I just comment out the log.debug lines?

Exactly, you can comment those lines (or try switching them back to logDebug which should respect the preferences flag.)

1 Like

Hi all again

I have one of the LIFX Strip LEDs and configured as a Multizone using LocalControl.
I am trying to change the color temp and level to reflect the lighting conditions but am getting these errors -


I am using the 'Color Temperature: Lounge TV Light: 3500: 100' command.
Maybe there is a better way...can anyone advise please?

The error is coming as we try to read in the state variable lastMultizone to then apply the changed values on top - and this variable is apparently null. We would need more information about your device and any other errors (perhaps during the poll every minute?).

The only specific thing that comes to mind is that the drivers are written to use the "extended MultiZone" packets, which are supported by the gen2+ devices running a specific (or newer) firmware. Looking for the specific requirements on that, but perhaps your device is older and doesn't support it?

Hi again
How can I find out more about device.
I have just turned on the debugging for the device and turned on and off and tried to change the level.
THis is what appeared in the logs -

Happy to help diagnose if I can

The polling cycle each minute shows 1 UDP timeout - we can't directly correlate it to which packet the device did not respond to, but it would make sense if it is the GET_EXTENDED_COLOR_ZONES.

In your LIFX app on your phone, you can pull up the device details/settings - this will show you the firmware version and device type - we can start there, and compare to GitHub - LIFX/products: A JSON representation of the LIFX products to see if the extended MZ is supported on your device.

Okies thanks for this
From the LIFX app I can see the following -

I see a LIFX Z in the list as well.

For now I have reverted to the LIFX GoG driver for the Z bulb.