Skip to content
Collapsed Pool Light card in Home Assistant showing the on toggle, preset color swatches, and Lock current color button

Pool Light Controller Bridge for ColorSplash XG & Home Assistant

Apps, Home Automation

I have a pool light with a Hayward / J&J Electronics ColorSplash XG (LPL-XG-CTRL-1) controller, and I’ve been frustrated for a while that the only way to control it is Hayward’s phone app. I have to reconnect to Bluetooth every time I use it, the interface is frustrating, and there’s no direct control over RGB colors. If I had a do-over, I would have bought a light with finer color control, but I’m trying to make the best of it.

The fixture itself only offers 5 garish solid colors, and 7 “Shows” that either switch quickly between colors (2 Shows) or blend gradients between several colors (5 Shows). If you want to set the light to any solid color other than the presets, you play one of the Shows, and then hit the “Color Lock” button when it shows a color you like, which saves it in a single “Return” slot that you can then recall directly. No way to enter RGB values. Disappointing design choices, but it gave me something to work with.

Home Assistant + ESPHome Integration

A screenshot of the pool light card in the Home Assistant dashboard, with on/off tillage and color preview, experimental color picker, built-in and user preset swatches, an Effect menu, and a button to color lock during a show.

With Claude’s help, I reverse-engineered the BLE protocol (full protocol notes in the repo for those curious), and built an ESP32 bridge that holds the Bluetooth link to the controller and makes it accessible in Home Assistant over the ESPHome API. After refining it for several weeks, v1.0.0 went out today after a 5-day soak test. Repo here:

https://github.com/Vixen-Labs/colorsplash-xg-ha

In Home Assistant you get light.pool_light with on/off plus the 12 hardware effects (5 solid colors and 7 animated Shows), a select.pool_active_preset for native scene integration, 5 user preset slots stored on the bridge itself, Lock and Return as buttons, and a handful of diagnostic sensors (RSSI, command count, error count, BLE connected, last command). For the dashboard side there’s a custom Lovelace card with an experimental color wheel and preset swatches, plus a stock-YAML version if you’d rather not load custom resources.

The experimental color picker in the card is a “best match via Show-scrub” approximation, based on color analysis of video taken of the animated Shows (something I hope to improve the accuracy of in v1.1). The user presets are saved as a recipe of Show command + time offset for the color lock moment that gives you the color you want.

Happy to answer questions, and if anyone has a ColorSplash XG pool light installed, Comment below, and let me know how the bridge works for you!

Leave a comment

Your email address will not be published. Required fields are marked *

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)