Hi everyone,
I’m working on integrating the KL8300-HV83G controller with the KL8-3H-FACE3 panel (spa/pool management system) into Home Assistant using ESPHome and an ESP32.
Goal: Retrieve useful data, especially the water temperature.
What I’ve tested so far
1. Documentation research
- No public technical documentation available (pinout, protocol, datasheet).
- Researched across:
- Forums (Home Assistant, Domoticz, Jeedom…)
- GitHub (e.g., bbqkees/BalboaSpaWifi)
- Chinese sites (1688, Alibaba – PCB photos, no docs)
- Distributors (Poolstar, iPool…)
- Wayback Machine
→ Conclusion: The 8-pin connector on the KL8300 is likely UART TTL 5V.
2. Hardware tests
- Voltage measured on each pin:
- GND and 5V lines clearly identified
- Other pins are either 0V, floating, or fixed at ~5V
- UART sniffing with ESP32:
- Voltage reduction using resistor divider (2×1kΩ in series for R1, 1kΩ for R2 to GND)
- UART RX pins tested: GPIO16, GPIO17, GPIO4
- Baud rates tested: 9600, 19200, 38400, 57600, 115200
- ESPHome YAML shows raw UART frames in hexadecimal
- Built-in LED (GPIO2) toggles when data is received
Results
- No UART data received
- UART logs stay empty
- LED never blinks (no bytes detected)
Hypotheses
- Wrong TX pin on the KL8300
- Data only sent under certain conditions (keypad activity, pump on, heating?)
- Protocol may require master polling/init sequence
- Possibly inspired by Balboa protocol (framing with 0x7E?)
- Could be non-UART format (SPI? multiplexed data? something proprietary?)
Call for collaboration
If you:
- Own a KL8300-based spa system
- Have captured or decoded any UART or bus activity
- Have internal photos, schematics, or frame dumps
- Want to participate in open-source reverse engineering
Please reach out or contribute.
I can host a GitHub repository to centralize pinouts, logs, frame samples, and decoding efforts.
Hardware setup
- ESP32 DevKit V1
- ESPHome 2025.4.1
- Voltage divider to protect RX input (5V → 3.3V)
- Breadboard setup
Thanks in advance to anyone willing to test, share, or contribute. Even failed attempts are useful for the community.