Controlling Pool Cover with ESPHome: Need Advice on Reading LED States Internally

Here is what I am (planning on) doing but alternative approaches and suggestions are also appreciated.

Objective
I aim to internally monitor the state of LED diodes on the front panel of a pool cover controller and control its switches via relays using ESPHome. I prefer not to use light sensors glued externally to the front panel.

The Setup

  • The front panel of the pool cover controller has 7 LEDs and 4 buttons. (picture 1)
  • There’s a single ribbon cable connecting to the front panel from the main unit. (picture 2 & 3)
  • The broader segment of this cable controls the LEDs, while the narrower section is for the buttons. (picture 2 & 3)
  • Notably, the front panel is glued, so I can’t view the internal wiring (but with the input lanes matching the leds and switches it seems likely there is no “logical processing” occuring on the front panel itself). Due to the glued front panel, It is however unclear if any resistors are present for the LEDs (diodes?).

1. front panel

2. Ribbon cable

3. Ribbon cable

4. Low voltage side of the main PCB

Progress So Far
I’ve managed to connect pins to the ribbon cable and have secured a reliable connection for all (but two of the LED) pins.

The Challenge:

  • When I measure the voltage between an illuminated LED and the ground, my multimeter shows a 0V difference. Yet, the LED seems to burn brighter.
  • One particular wire, when tested for voltage relative to ground, resets the entire front UI.

Main Ask
How can I effectively connect these pins to an ESP32 to monitor the LED states without resorting to external light sensors?

Background
I currently use a Z-wave relay controller to simulate button presses. Due to an unreliable connection, commands occasionally get lost, causing uncertainties in the cover’s state. Monitoring the LEDs with ESPHome would allow for more accurate state tracking as it can be done on the ESP32 so that when it reconnects the state is updated correctly to home assistant.

Additional Resources : User manual for the pool controller (Note: Not very detailed).

Safety Note
Should anyone be inspired by this project, please be cautious when working with electronics. Ensure power is turned off when making connections to avoid any risks!

Frankly it looks like a “rip it all out and start with an esp32” job to me.

2 Likes

If you really don’t want to go down this path (I’d actually do what Nick suggests) you could use opto-isolators (you can get chips with a heap of them all in one) example This will allow you to ‘read’ the status LED’s without causing any trouble to the existing circuit.

1 Like

Hahaha yeah I probably agree with you but its a system at my parents place and they only “trust” the OEM component (it’s really only a power adapter, some relays, some IO and a controller). But ofc it’s their decision so in this case I’m stuck with building a slightly hacky integration.

It shouldn’t be that hard, controlling the system is working fine, its just determining the state of the leds by reading the voltage of the wires is a bit of a bigger speed bump than I had anticipated.

I understand. My father, now departed, wouldn’t get an internet connection because he was afraid of viruses.

There may be a way with a camera and image detection, but the optocoupler would probably be your best bet.

1 Like

I have a few on the way but I’m not 100% sure about how to wire those as I can’t use the Gnd on the main pcb. Additionally, as there is no apparent voltage difference between the wires I fear the resistors are on the main pcb.

My condolences, but this does indeed sound like a similar type of story to the constraint I’m facing here. Although no internet… wow that is hard core.

Using a connected camera with image processing is an interesting option and something I had also considered but that would require (relatively) heavy computing, which will really increase the power draw for a system that is only used a few months a year.

Also, when opening the “open” LED flashes rapidly and burns solid when fully open. This would mean that in order to detect the difference between opening and open I would have to process the image multiple times a second (which I think if I limit it to the relevant pixels should be doable on an ESP32) but this adds A LOT of complexity that I would rather avoid. (And there will be a camera sticking out of the front which would not be ideal).

Anyway, I really appreciate the input Nickrout and Sparkydave, I’ll play around with an optocoupler when they get here next week and if I’m still stuck I’ll be back here asking for more help :sweat_smile: