Skip to main content

Pentair IntelliCenter smart home integration, free and open source

Pentair IntelliCenter integration for Gladys Assistant

Pentair IntelliCenter pool panels on the local network: circuits, pumps, heating, chemistry.

Shows your Pentair IntelliCenter pool panel (i5P, i7+3, i8PS, i10PS, i10+3D) in Gladys through its local protocol (TCP, port 6681): no cloud, no account, straight on your network.

Never tested with a real panel. Not affiliated with Pentair. The integration follows the pyintellicenter library (MIT). A firmware update of the panel may change the protocol. ScreenLogic is not supported.

What you get​

One device per panel (identified by the unique name of its system, not by its IP address), with, for each object the panel shows:

ObjectFeatures
Body (pool, spa)Water temperature, heating set point, heat mode (list), heating now
Circuit (pool, spa, featured)On / off (list)
LightOn / off (list)
PumpRunning, speed (rpm), power (W)
Sensor (air, solar, water)Temperature
IntelliChempH, ORP (mV), pH and ORP set points (read only)
IntelliChlorSalt (ppm)

Plus a Status feature (connected or unreachable). Circuits that are not featured (the unused "Aux") are not shown.

  • Temperatures are in °C: a panel set to °F is converted exactly ((°F − 32) × 5 / 9). When the unit of the panel cannot be read, no temperature is published.
  • The water temperature of a body is only published while it runs (pump on): stopped, the panel keeps an old value.
  • A value that is unknown, empty, or 0 where 0 means "not available" (pH, ORP, salt) is never published.

Read every 30 seconds by default (15 s to 10 min, adjustable), one request at a time, on one connection.

Installation​

  1. Give the panel a fixed IP address in your router.
  2. In Gladys, install the integration and enter the IP address of the panel (or its host name, optionally followed by a port).
  3. Save, then add the panel from the Discovery tab.

The panel has no credentials: nothing secret is configured.

Turning off (always available)​

Choosing Off on a circuit (or a light), or Off in the heat mode of a body, depends on no option, nor on a read or a command in progress (it ends them and goes on a new connection), nor on a failed read, nor on the configuration: right after a restart, it goes to the address of the last panel read (kept in /data), and a stop not yet seen applied before a restart is sent again as soon as the container starts. A command that arrived before it and has not left yet is given up. Several stops clicked together go in one write.

It succeeds when the read back of the panel shows it (for the heating stop: the mode Off and no heating any more). Otherwise the answer says why, and the stop is kept (in /data) and checked every 15 s (each panel address has its own check) and at every read:

  • no address known (no configuration, no panel read before): nothing is sent for now; the stop is kept in memory and goes first as soon as an address is known;
  • the panel does not answer (3 s of tries, every 250 ms): tried again at every check (15 s), at every read that reaches the panel and when you click Test the connection; a stop that never left is never given up;
  • refused by the panel (a code other than 200): written again after 15 s, then less and less often (30 s, 1, 2, 4 min, then every 5 min), without end; a refusal does not count as a write;
  • not applied yet (the panel does not show it): written again 15 s after each write, 3 times at most (writes the panel accepted), then held without new writes, which the status of the integration says;
  • without confirmation in time (4.3 s): checked the same way;
  • heating stop shown but the body still heats (the panel shows the mode Off but still reports heating): watched, nothing written again; normal during a cool-down, but after 2 minutes the status asks you to check on the panel (the mode Off written comes from pyintellicenter and was not checked on a real panel); when the panel gives no heating state, the status says so ("heating state cannot be read") and the stop stays watched.

The status of the integration says where each stop is: not sent yet, sent and waiting for the read back, refused (with the code), held, still heating, or watched. When the panel moves to a new address (the same panel read there), its kept stops follow it.

A kept stop is let go when the panel shows it, or when a command of the same setting clicked in Gladys after it (option on) left without a refusal of the panel (no answer lets it go too: the command may have been applied). A new click on Off writes it again and counts its writes anew. A stop kept in /data before a restart is let go the same way, unsent, when such a command of its setting left since the start (a /data slow to read is applied when its read ends). Never by time. A command that left less than 30 s before the stop and lands after it is countered by a new write. While the heating stop of a body is not seen applied, its set point, turning its circuit on and turning a circuit group on are refused. A body "heats" while its heat mode is not seen Off or the panel still reports heating (unreadable counts as heating).

Turning on and heating (options)​

Three options, off by default:

  • Allow turning circuits and pumps on: the circuits that are not lights (pool, spa and their pumps, featured circuits). Turning on a pool or spa that heats (heat mode not seen Off, or heating still reported) also needs the heating option (its pump starts, and with it its heating). A circuit group ("Spa Mode"...) may turn a body on: it needs the heating option while a body heats or no body has been read yet.
  • Allow turning lights on.
  • Allow heating: choosing a heat source, setting the set point. A spa is limited to 40 °C, a pool to the ceiling of the configuration (35 °C by default, 40 °C at most). The bound is checked on the value written (a whole degree), after the conversion to °F when the panel is in °F: 40 °C = 104 °F; the low bound is 4 °C (40 °F).

They are lists and a set point, never a switch: a "turn everything off" never reaches them. Each command reads the panel again right before (identity, objects, unit), checks the options again right before writing, leaves within 3.5 s or not at all, and succeeds only when the read back shows the value asked ("sent, not applied yet" otherwise, then reads at 5 and 20 s). Commands arriving together (a scene) go in one write. Also refused: before the configuration is read, when another panel answers at the address, or when a stop was clicked meanwhile.

Good to know​

  • The panel is never read sooner than the interval: not by the Test the connection button, a Discovery, a reconnection to Gladys or a restart (the time of the last read is kept in /data). Only the reads that follow a command or a click on Off (5 and 20 s) and the checks of a kept stop (every 15 s, reading only the objects of the stop) are an exception.
  • A value older than 2 minutes is never sent again as new.
  • The chemistry set points (pH, ORP), the pump speeds, light shows and schedules are read only or absent in this version.
  • The Pentair app, the screen of the panel and its schedules may drive it too: the last write wins.

Configuration settings​

These are the settings Pentair IntelliCenter asks for in its configuration screen in Gladys.

SettingTypeRequiredDescription
Your IntelliCenter panelsectionNoShows your Pentair IntelliCenter pool panel in Gladys through its local protocol (TCP port 6681), without any cloud: bodies (pool, spa) with their water temperature, heat mode and heating set point, circuits, lights, pumps, temperature sensors, IntelliChem and IntelliChlor. Enter the IP address of the panel (give it a fixed address in your router), save, then add it from the Discovery tab. Turning a circuit or a heating off always works; turning things on and heating are only allowed by the options below. Never tested with a real panel. Not affiliated with Pentair.
IP address of the panelstringYesAn IPv4 address or a host name, optionally followed by a port (6681 by default).
Allow turning circuits and pumps onbooleanNoOff by default. On: Gladys may turn on the circuits that are not lights (pool, spa and their pumps, featured circuits). Turning a pool or spa on whose heat mode is not Off also needs the heating option. Turning off works either way.
Allow turning lights onbooleanNoOff by default. On: Gladys may turn on the light circuits. Turning off works either way.
Allow heatingbooleanNoOff by default. On: Gladys may choose a heat source and set the heating set point of a body (a spa 40 °C at most, a pool the ceiling below). Setting the heat mode to Off works either way.
Ceiling of the pool set point (°C)numberNoThe highest heating set point Gladys may write for a pool (35 °C by default, 40 °C at most). A spa is always limited to 40 °C. Checked on the value written, after the conversion to °F when the panel is in °F.
Refresh interval (s)numberNoHow often the panel is read, in seconds.
Language of the feature namesselectNoUsed for the feature names of the devices added from now on, for the status texts and for the command errors.

How to install Pentair IntelliCenter in Gladys​

  1. In Gladys, open Integrations: Pentair IntelliCenter appears in the catalog, next to the native integrations, with a community badge.
  2. Click Install. Gladys pulls the Docker image (ghcr.io/lm1lc3n7/gladys-intellicenter:0.1.1), starts it in a sandbox isolated from the core, and generates the integration's interface (devices, discovery and configuration).
  3. Open the Configuration screen of the integration, fill in the settings, and save.
  4. You can also install it directly from its repository URL: https://github.com/LM1LC3N7/gladys-intellicenter.

Pentair IntelliCenter requires Gladys >=5.1.0. The catalog inside Gladys refreshes every hour, so a new version becomes available at most one hour after its release.

Not running Gladys yet? It is free and open source: follow the installation guide to get started.

About external integrations​

Pentair IntelliCenter is an external integration: a community integration packaged as a Docker container and published on GitHub, that Gladys installs in one click and runs in a sandbox isolated from its core. It is published and maintained by LM1LC3N7, not by the Gladys core team.

Subscribe to the Gladys Assistant newsletter

A few emails per month about new releases and project news. Sent by Pierre-Gilles Leymarie, founder of the project. Unsubscribe anytime 🙂