Technical documentation for developers working on the Pentair IntelliCenter Home Assistant integration.
| Metric | Value |
|---|---|
| Current Version | 3.6.6 |
| Quality Scale | Platinum |
| Test Coverage | 217 tests |
| Home Assistant | 2025.11+ required |
| pyintellicenter | 0.1.15+ required |
| Document | Description |
|---|---|
| CHANGELOG.md | Version history and release notes |
| ARCHITECTURE.md | Technical architecture and design |
| QUALITY_SCALE_COMPLIANCE.md | Home Assistant quality scale compliance |
intellicenter/
├── custom_components/intellicenter/
│ ├── __init__.py # Entry point, PoolEntity base class
│ ├── config_flow.py # UI configuration flow
│ ├── coordinator.py # Connection coordination
│ ├── diagnostics.py # Diagnostic data export
│ ├── const.py # Constants
│ ├── manifest.json # Integration metadata
│ ├── strings.json # English strings (source)
│ ├── translations/ # 12 language translations
│ └── Platforms:
│ ├── light.py # Pool/spa lights
│ ├── switch.py # Circuits, bodies
│ ├── sensor.py # Temperature, chemistry
│ ├── binary_sensor.py # Pumps, schedules
│ ├── water_heater.py # Heater control
│ ├── climate.py # UltraTemp heat pump
│ ├── number.py # Setpoints
│ └── cover.py # Pool covers
├── tests/ # 216 automated tests
├── docs/ # This documentation
└── README.md # User guide
| Project | Repository | Description |
|---|---|---|
| intellicenter | joyfulhouse/intellicenter | Home Assistant integration (this repo) |
| pyintellicenter | joyfulhouse/pyintellicenter | Protocol library (PyPI) |
As of v3.5.0, the protocol layer has been extracted to a standalone package:
- pyintellicenter handles all TCP communication, protocol parsing, and state management
- intellicenter focuses on Home Assistant entity creation and integration
This separation enables:
- Independent versioning and releases
- Reuse of the protocol library in non-HA projects
- Cleaner testing and development workflows
- Python 3.12+
- uv package manager
- Home Assistant dev environment (for testing)
# Clone repositories
git clone https://github.com/joyfulhouse/intellicenter.git
git clone https://github.com/joyfulhouse/pyintellicenter.git
# Install dependencies
cd intellicenter
uv sync
# Install pyintellicenter in dev mode (for local changes)
uv pip install -e ../pyintellicenter
# Run tests
uv run pytest
# Lint and format
uv run ruff check --fix && uv run ruff format
# Type checking
uv run mypy custom_components/intellicenter/ --ignore-missing-imports# All tests
uv run pytest
# With coverage
uv run pytest --cov=custom_components/intellicenter --cov-report=html
# Specific test file
uv run pytest tests/test_config_flow.py -v
# Run with verbose output
uv run pytest -v┌─────────────────────────────────────────────────────────┐
│ Home Assistant │
│ ┌─────────────────────────────────────────────────┐ │
│ │ intellicenter integration │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ light │ │ switch │ │ sensor │ ... │ │
│ │ └────┬────┘ └────┬────┘ └────┬────┘ │ │
│ │ └───────────┼───────────┘ │ │
│ │ │ │ │
│ │ ┌────────────────┴──────────────────────┐ │ │
│ │ │ PoolEntity + Coordinator │ │ │
│ │ └────────────────┬──────────────────────┘ │ │
│ └───────────────────┼─────────────────────────────┘ │
│ │ │
│ ┌───────────────────┼─────────────────────────────┐ │
│ │ pyintellicenter │ │
│ │ ICProtocol → Controllers → PoolModel │ │
│ └───────────────────┼─────────────────────────────┘ │
└──────────────────────┼──────────────────────────────────┘
│
TCP/6681 (local)
│
┌──────────┴──────────┐
│ Pentair │
│ IntelliCenter │
└─────────────────────┘
Home Assistant Layer (intellicenter):
- Platform modules create entities based on pool equipment
PoolEntitybase class provides common functionalityIntelliCenterCoordinatormanages connection lifecycle- Config flow handles setup, discovery, and options
Protocol Layer (pyintellicenter):
ICProtocolhandles TCP transport and message framingModelControllermanages state and attribute trackingPoolModelrepresents pool equipment as objectsConnectionHandlerimplements reconnection logic
- IntelliCenter sends
NotifyListmessages when equipment changes ModelControllerupdates thePoolModelstate- Dispatcher signals notify Home Assistant entities
- Entities call
async_write_ha_state()to update HA
When changes are made to the protocol library:
- Bump version in
pyintellicenter/pyproject.toml - Commit and push changes
- Create a GitHub release to trigger PyPI publish:
cd ../pyintellicenter gh release create v0.1.X --title "v0.1.X" --notes "Release notes"
- Update requirement in
intellicenter/manifest.json
- Update version in
manifest.json - Update
CHANGELOG.md - Create PR and merge to main
- Create GitHub release
- Issues: GitHub Issues
- Discussions: GitHub Discussions