Modern Android app (Kotlin + Jetpack Compose) that talks to Pentair ScreenLogic protocol adapters on your local network to control EasyTouch, IntelliTouch, and similar systems.
No official Pentair public SDK exists. This project implements the community reverse-engineered ScreenLogic-over-IP protocol used by Home Assistant, screenlogicpy, and node-screenlogic.
| System | How you control it | Notes |
|---|---|---|
| EasyTouch / IntelliTouch + ScreenLogic2 kit | Local TCP to protocol adapter; optional remote via Pentair dispatcher | Best documented open protocol; what this app targets first |
| IntelliCenter | Local WebSocket (~port 6681) + Pentair Pool cloud app | Different protocol; HA integration jlvaillant/intellicenter; roadmap for v2 |
| IntelliConnect / IntelliSync / IntelliFlo3 | Mostly cloud / product-specific | Official Pentair Pool app |
| RS‑485 bus (pumps, chlorinators, panels) | Serial; needs USB/RS485 adapter | Full open stack: nodejs-poolController |
- Pentair Pool — IntelliCenter and newer connected products
- ScreenLogic Connect — EasyTouch / IntelliTouch via ScreenLogic adapter (often criticized as flaky)
| Project | Language | Role |
|---|---|---|
| screenlogicpy | Python | HA core integration; full asyncio client |
| node-screenlogic | TypeScript | Mature Node client; message catalog |
| screenlogic_over_ip | Docs + JS | Protocol documentation |
| ScreenLogicConnect | C# | .NET port |
Home Assistant screenlogic |
Python | Production usage patterns |
- Discovery: UDP broadcast on port 1444 (same subnet).
- Session: TCP to adapter (often port 80).
- Handshake:
CONNECTSERVERHOST\r\n\r\n→ CHALLENGE (14) → LOCALLOGIN (27) as “Android” client. - Packet header: 8 bytes LE —
senderId (u16) | action (u16) | dataLength (i32)+ payload. - Useful actions:
12526pool status12530circuit on/off12528heat setpoint12538heat mode12556light show command
- Remote: dispatcher
screenlogicserver.pentair.com:500(stubbed; password/relay still needed for production remote).
- This is an unofficial third-party client. Pentair does not publish a supported third-party API.
- Local LAN control only is the recommended path (privacy + reliability).
- Never expose your protocol adapter directly to the internet.
- Heater/chemical control affects real equipment — test with Demo Mode first.
- Remote Connect — system code
XX-XX-XX(orPentair: XX-XX-XX) via Pentair dispatcher, same as ScreenLogic Connect - Remote access password — challenge-encrypted login (blank if you never set one)
- Demo Mode — full simulated EasyTouch-style system (no hardware)
- LAN discovery of ScreenLogic gateways
- Manual IP/port connect
- Dashboard — pool/spa temps, air, chemistry, circuit snapshot
- Circuits — toggle features (pool, spa, cleaner, lights, aux…)
- Heat — setpoints + Off / Heater / Solar / Solar Preferred
- Lights — IntelliBrite color shows and fixed colors
- Kotlin ScreenLogicClient + PasswordEncoder (HLEncoder port)
- Remember last system code / password (encrypted prefs)
- Full circuit-name parse from controller config
- Schedules UI
- Pump RPM/GPM detail
- IntelliChlor / IntelliChem controls
- Widgets + Android Auto
- Optional bridge mode talking to
nodejs-poolControllerREST/WS
This matches ScreenLogic Connect:
| Field | Where to find it |
|---|---|
| System code | Protocol adapter label, bottom right (6 alphanumeric chars). Format XX-XX-XX. App also accepts A1B2C3 or Pentair: A1-B2-C3. |
| Remote password | Optional. Set under ScreenLogic General Settings → Set Remote Access Password. Leave blank if you never set one. Some installs still use default 1234. |
Flow under the hood:
- App asks
screenlogicserver.pentair.com:500for your system name - Dispatcher returns the adapter’s public IP + port
- App connects, receives a challenge, encrypts your remote password (HLEncoder / AES-style tables used by official clients)
- Normal ScreenLogic control messages (status, circuits, heat, lights)
Security note: Anyone who knows an un-passworded system code can control that pool remotely. Set a remote password if you have not already.
- Android Studio Ladybug (2024.2+) or newer — download
- Android SDK 35, JDK 17 (bundled with Android Studio)
- Phone/emulator on API 26+
- For real hardware: phone on the same Wi‑Fi as the ScreenLogic protocol adapter
C:\Users\FrankGonzalez\Projects\PentairPoolControl
- Open the folder in Android Studio
- Let Gradle sync (downloads dependencies)
- If asked for SDK path, create
local.properties:
sdk.dir=C\:\\Users\\FrankGonzalez\\AppData\\Local\\Android\\Sdk- Run on a device or emulator → Try Demo Mode immediately
cd C:\Users\FrankGonzalez\Projects\PentairPoolControl
.\gradlew.bat assembleDebug- EasyTouch / IntelliTouch (or compatible) panel
- ScreenLogic2 protocol adapter on the home network
- Know the adapter IP (router DHCP list) or rely on discovery
- Optional 4-digit ScreenLogic password if configured
Not yet: bare IntelliCenter-only installs (different protocol — planned).
app/src/main/java/com/pentaircontrol/pool/
protocol/ # Binary ScreenLogic codec, discovery, TCP client
data/ # Models, repository, demo engine
ui/ # Compose screens + ViewModel + theme
You’re already talking to Grok (xAI). For longer sessions, higher limits, and priority while we keep shipping features:
| Plan | Where | Approx. price (US) |
|---|---|---|
| Free | grok.com / X | $0 |
| SuperGrok Lite | grok.com/plans | ~$10/mo |
| SuperGrok | grok.com/plans | ~$30/mo (often has trial) |
| SuperGrok Heavy | same | ~$300/mo |
| X Premium / Premium+ | X subscriptions | bundles Grok with X perks |
For day-to-day app development with this codebase, SuperGrok (~$30/mo) is usually the right “full” subscription. API usage for custom backends is separate on x.ai.
Subscribe: https://grok.com/plans or https://x.ai/pricing
Protocol knowledge derived from community reverse-engineering (GPL projects listed above). This Android app is original scaffolding for local control UX — not affiliated with Pentair.
You own this project folder. If you publish it, consider dual-noting:
- App code: choose MIT/Apache-2.0 as you prefer
- Protocol knowledge: respect licenses of referenced open-source clients if you copy code from them