Works fine with the round Ceiling but doesn’t yet support the 26"x13" Ceiling. I’m waiting for my contact at LIFX to send me updated protcol messages for it.
Hey folks, just a heads-up that I have it working with the 26"x13" Ceiling (PR here: feat: add support for LIFX 26"x13" Ceiling by Djelibeybi · Pull Request #33 · Djelibeybi/hass-lifx-ceiling · GitHub) but this requires an update to the core LIFX integration (PR here: Add support for LIFX 26"x13" Ceiling by Djelibeybi · Pull Request #148459 · home-assistant/core · GitHub) so it may be a while before this lands in a GA/non-beta release, i.e. weeks to months, not days to weeks.
For interested developers: the 26"x13" Ceiling is a matrix light with a total of 128 zones arranged in 8 rows of 16. This makes it the largest single tile matrix now available and thus it requires two get64 requests instead of just one. This is because each get64 request only returns 64 zones (go figure).
To support this, LIFX have documented both the previously reserved fb_index field in Set64 as well as the previously private CopyFrameBuffer message.
See https://www.reddit.com/r/lifx/comments/1lh4wzh/lan_api_best_way_to_set_all_zones_of_ceiling_26/ for info.
Thats nutty, thanks a bunch for the heavy lift there.
Looks like Add support for LIFX 26"x13" Ceiling by Djelibeybi · Pull Request #148459 · home-assistant/core · GitHub is done/approved/merged, but I am not enough of a github person to know what draft is for feat: add support for LIFX 26"x13" Ceiling by Djelibeybi · Pull Request #33 · Djelibeybi/hass-lifx-ceiling · GitHub, though, that just looks like your repo, so, maybe thats a non issue?
Anything I can do to help/test if you are stuck or just need something to validate against?
I’m busy travelling at the moment but also managed to get appendicitis and required an emergency appendix removal. I’ll merge and release when I’m back home in Melbourne the week of Monday 25 August.
Oh damn, get better, don’t catch cyph from the drop bears on your way back home.
Hey folks, I just published a new release of hass-lifx-ceiling that adds support for the 26"x13" Ceiling. This update requires at least Home Assistant 2025.8.0.
Seems to be working, at least basic up/down light on/off independently.
![]()
I think we have a race condition or something. I noticed that having a mix of the ceiling and the ceiling 13x26", or the brightness on the uplight causes the downlight to come on/stay on from time to time from this automation.
Yeah, you need to give Home Assistant at least 10 seconds to notice a change in the uplight or downlight as it relies on the core LIFX integration to do the actual polling. I did it this way so that I don’t place extra stress by sending more requests to each device.
So I am holding it wrong, lol. I disabled the 2nd call for now, it’s more of a desired state than a force state? If I am describing that right.
Not quite: it is a forced state but it realies on the core LIFX integration to determine what the current state is.
In this particular instance, you should use lifx_ceiling.set_state action to adjust the uplight and downlighnt state instead of the more generic light.turn_off and light.turn_on actions. This will ensure that Home Assistant is immediately aware of the actual state of the individual zones on each of your Ceiling lights.
I would, but it doesn’t see the stuff under LIFX Ceiling.
Are you sure you’re selecting lifx_ceiling.set_state? This is a different action to lifx.set_state.
ohhhh, you mean this? If so, yeah, I was just using what the UI bubbled up and scrolled the list and it did not show till I started typing ceiling, or I need new glasses.
hmmm, takes quite a bit to return 7-8 celing lights when searching for ones to add, few sec before it even shows you a list. It also seems if you uncheck the set kelvin on it, instead of it just changing the brightness and using the current setting, it make it the much softer orange light vs the cracked out 9K I seem to like.
Interesting. I have 4 Ceiling lights and the list is instantaneously populated for me.
As for unsetting the kelvin value: it should retain the current value if the zone is currently on, i.e. if the light is on and the brightness of the zone is greater than zero.
However, due to the way in which LIFX implemented the zones, it is often impossible to determine what the color (or color temperature) should be so I default to using 3500K. This default value is documented: GitHub - Djelibeybi/hass-lifx-ceiling: Provides uplight and downlight control for LIFX Ceiling in Home Assistant
My recommendation is to specify all the values so that the integration doesn’t need to try and work it out or use the default.
I guess I don’t mind, I just would expect the default behavior to be on/off/power % without sending white temp or RGB color. That way if someone sets it from an app or in HA it would stay there until a call to change it comes. Similar to the generic on/off in HA like in my now outdated automation screenshot.
Just the way my brain thinks it should work without context. If they made the API call silly, it be what it be.
If it were that simple I would’ve modified the light.turn_on call in the core LIFX integration. The way the uplight is implemented is as the last zone of a matrix device.
For the round ceiling that’s zone 63, with zones 0-62 being the downlight. On the 26"x13" ceiling that’s zone 127 with zones 0-126 being the downlight. The latter required modifying the core integration because it takes two requests to get the state of all 128 zones instead of just one. The call to get matrix zones only gets 64 zones at a time.
So, in order to turn the uplight or downlight off while keeping the other bit on, I have to set the zones to zero brightness. They should maintain their hue, saturation and kelvin values, but there are a bunch of times when Home Assistant just can’t see those, so I have to resort to defaults.
It’s all good, I am still super grateful you took the time and initiative to make the integration, my wallet, maybe less so. It’s work I am incapable of, don’t think I am disparaging your work, just giving my unsolicited opinion in case it’s of value.



