Skip to content

v0.2.3

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Sep 21:18
3476e83

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 spa was 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

[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 False when 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-heater for 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 temperature
  • compoolctl set-spa <temp> - Set spa temperature
  • compoolctl 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