Local, cloud-free Home Assistant integration for the 2026-generation Zodiac Blue Connect Gold pool/spa water sensor. It decodes the sensor's passive Bluetooth advertisements into native HA sensor entities:
- pH
- ORP / redox (mV)
- Water temperature (°C)
- Conductivity (µS/cm)
- Salinity (g/L)
- Battery voltage (V) - diagnostic, disabled by default
No cloud account, no Blue Connect app, and no MQTT. Readings arrive as BLE advertisements through any Home Assistant Bluetooth proxy (or a local Bluetooth adapter) and are decoded locally into entities.
Status: early release (v0.1.x), working. The decoder is validated against a real 2026 Blue Connect Gold on a salt-water pool, cross-checked with the iAqualink+ app (pH exact, ORP within 4 mV). Field testing so far covers a single unit - see Known limitations below and
docs/PROTOCOL.mdfor per-field confidence.
The 2026 Blue Connect Gold (rechargeable USB-C battery, new app) uses a completely different, much simpler BLE protocol than the original device. Existing integrations do not work with it:
Fluidra-pool- cloud API, read-only, needs a Fluidra account.blue_connect_go- old-generation local protocol.
The new device broadcasts all its readings in a passive BLE advertisement
(manufacturer company ID 0x6A03), so a fully local integration is possible.
Bluetooth reception within range of the sensor, any of:
- An ESPHome ESP32 Bluetooth proxy (most robust), or
- A Shelly Plus/Pro (Gen2+) with its Bluetooth gateway enabled (sufficient, since all readings live in the advertisement, not the scan response), or
- A Bluetooth adapter on the Home Assistant host itself.
The sensor rotates its BLE MAC, so the integration matches it by manufacturer
ID and identifies it by the serial in its advertised name (see
docs/ARCHITECTURE.md).
- HACS → ⋮ → Custom repositories → add
https://github.com/nledenyi/blueconnect-ble, category Integration. - Install Zodiac Blue Connect (BLE) and restart Home Assistant.
- Ensure a Bluetooth proxy is near the pool. HA auto-discovers the sensor; confirm the discovery. (Or add it manually via Settings → Devices & services → Add integration.)
First readings can take up to an hour. The sensor beacons every few seconds, so discovery itself is quick - but the advertisement that carries the actual readings is only sent when the device takes a measurement, roughly hourly. Until the first readings advert arrives, the entities show unavailable. This is expected. Opening the iAqualink+ app near the pool typically wakes the device and triggers a fresh measurement if you want values sooner. After that, values survive HA restarts.
The integration supports a single-point additive offset per reading (like the
app): Settings → Devices & services → Zodiac Blue Connect (BLE) →
Configure. The applied offset is exposed as a calibration_offset attribute
on each sensor.
- The sensor takes a full measurement roughly hourly (more often while the app is in use); entities update at that cadence, and after a fresh install they stay unavailable until the first measurement broadcast arrives.
- Battery voltage scaling is plausible but unconfirmed against a reference, which is why the entity is disabled by default.
- Salinity decoding is self-consistent and close to the app but has only
been validated on one pool; conductivity and the other fields are
high-confidence. Per-field status:
docs/PROTOCOL.md. - Only the 2026 Blue Connect Gold is tested. Other 2026 variants likely share the protocol but are unconfirmed.
BLE protocol groundwork by mattsday on the Home Assistant community forum: https://community.home-assistant.io/t/zodiac-2026-version-blue-connect-pool-water-quality-monitor/1015005
This project is not affiliated with Zodiac, Fluidra or iAqualink.
This integration was built AI-first: the protocol analysis and code were written by Claude Opus, then audited by a multi-agent Claude Fable review pass for HA and HACS compliance. Every release is tested by a human against a real 2026 Blue Connect Gold in a real salt-water pool, and a human reads and answers the issues.