LIFX Developer Zone

Confusion about how to confirm acknowledgements with LIFXLAN

#1

Hey Folks,

Feel like I have a simple question but I just can’t seem to find any resources on how to do this correctly. Basically I have an array of 10 bulbs on the same LAN for a theater I’m working with, I’m sending updates maybe once every couple of minutes over the course of an Hour. Sometimes when I’m sending commands to the bulbs they stop responding to input or won’t update until I turn them on and off again. As a work around I would want to just confirm that the lights got the command just so I can turn one on and off if it’s hanging. It would seem that I would do that via

device.set_color(RED,rapid=False)

I would expect that this would be a blocking function that would return my a successful API response. But whether I specify rapid=true or rapid=false I always get a response of None. Anyone have any ideas of,

  1. The correct way of collecting acks from LIFX bulbs in Python?
  2. A more efficient way to deal with the problem of bulbs not accepting responses?

Any input or feedback would be good. Here’s the current way I’m handleing it now if anyone wants to see the implementation.

#2

Have you asked the question in Github ? For the bulbs to stop responding like it sounds I would look at the router as well, do you have a device limit ? have you confirmed the firmware is up to date ? I used to have problems like that but have not for ages.

As you know rapid is fire and forget, false it waits for an ack. Sorry I can’t add more best to ask in github.

#3

If rapid=False (which is the default, no need to explicitly type it out), then the call is blocking. If an acknowledgement is received before timing out, the call returns. If no acknowledgement is received, the call times out and throws a WorkflowException.

If your bulbs aren’t changing but you’re also not getting WorkflowExceptions, then there is something weird going on. Things to try are updating the firmware, also physically turning the lights off and then back on. (The latter has been a particularly successful strategy for me in the past.)