Repository navigation
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[Unreleased]
[0.2.3] - 2025-09-12
Fixed
- Spa heater control now works correctly
- Fixed issue where
set_heater off spawas failing with "NO ACK" error - Heat source byte now preserves existing pool/spa settings when updating specific target
- Uses proper bit masking to update only pool bits (4-5) or spa bits (6-7) independently
- Added heat source state parsing from heartbeat packets
- Fixed issue where
[0.2.2] - 2025-09-12
Fixed
- Auxiliary equipment control completely rewritten with proper toggle logic
- Hardware only supports toggling circuits, not setting absolute ON/OFF states
- Now reads current state from heartbeat packets and only toggles when needed
- Returns
Falsewhen current status cannot be determined (improved error handling) - Sends only specific aux bit instead of full equipment byte (matches Node.js implementation)
Added
toggle_aux_equipment()method for direct toggle operations without state checking- Smart no-op behavior - skips command when already in desired state
- Enhanced status messages showing state transitions: "Aux1 OFF → ON — ✓ ACK"
- Comprehensive test coverage for toggle behavior and edge cases
Changed
- Breaking API behavior:
set_aux_equipment()now fails fast when status unavailable - Updated reference documentation with detailed toggle protocol explanation
- Improved error messages and user feedback
[0.2.1] - 2025-09-11
Fixed
- Auxiliary equipment control now uses correct enable bit 2 instead of bit 0
- Commands should now receive proper ACK responses from controller hardware
Added
- Auxiliary equipment control commands for aux1-aux8 circuits
compoolctl set-aux <aux_name> <state>command for controlling auxiliary equipment- Real-time auxiliary equipment status display in monitor output
- Auxiliary equipment state parsing from heartbeat packets (aux1_on-aux8_on using 3820 system layout)
- Service mode safety check - all commands are blocked when service mode is active
- Comprehensive test coverage for all auxiliary equipment functionality and safety features
[0.1.2] - 2025-01-18
Added
- Heater control command
set-heaterfor controlling heating modes - Support for four heating modes: off, heater, solar-priority, solar-only
- Comprehensive unit tests for heater control functionality
- Extended timeout support for monitoring to handle connection delays
get_status()method to PoolController for retrieving single heartbeat packet status- Development workflow guidance in CLAUDE.md
- CI workflow optimization to skip documentation-only changes
Fixed
- Packet buffering issues in monitor causing burst delivery of stale packets
- Reduced read chunk size from 64 to 24 bytes for smoother real-time monitoring
- Linting issues with trailing whitespace in test files
Changed
- Monitor timeout increased from 1s to 30s to handle longer delays between packets
- Improved monitoring stability for network-based serial connections
[0.1.1] - 2024-12-18
Added
- Comprehensive CHANGELOG.md with version history
- MIT LICENSE file for open source compliance
- CONTRIBUTING.md with development guidelines
- Pre-commit configuration for local development
- Comprehensive GitHub Actions CI/CD workflows with PyPI trusted publishing
Fixed
- MyPy type annotation errors in connection.py and monitor.py
- Import organization and code formatting issues
- Removed .coverage file from version control
Changed
- Updated release workflow to use PyPI trusted publishing (more secure)
- Enhanced release workflow with full quality checks
- Updated CLAUDE.md with development best practices and troubleshooting
[0.1.0] - 2024-12-18
Added
- Initial release of pycompool
- RS-485 communication with Pentair/Compool LX3xxx controllers
- Pool and spa temperature control commands
- Real-time heartbeat packet monitoring
- Command-line interface with Fire framework
- Protocol parsing for temperature and status data
- Serial connection management with context managers
- Comprehensive test suite with mocked connections
- Modern Python packaging with pyproject.toml
- Ruff linting and mypy type checking
- Documentation and README
Features
compoolctl set-pool <temp>- Set pool temperaturecompoolctl set-spa <temp>- Set spa temperaturecompoolctl monitor- Real-time monitoring of heartbeat packets- Support for both hardware RS-485 and network connections
- Temperature encoding/decoding (0.25°C for water, 0.5°C for air/solar)
- Graceful signal handling for monitoring mode
Technical Details
- Supports Python 3.9-3.13
- Built with modern tooling (uv, ruff, pytest, mypy)
- Modular architecture separating protocol, connection, and control logic
- Comprehensive error handling and logging
- Type hints throughout codebase
What's Changed
- Fix spa heater control by preserving heat source settings by @mcolyer in #6
- chore: sync v0.2.3 release metadata by @mcolyer in #7
- style: apply ruff formatting by @mcolyer in #8
Full Changelog: v0.2.2...v0.2.3