Skip to content

v3.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 14 Sep 04:51

Release v3.0.0

Version 3.0.0 is a major release that significantly improves connection stability over the LoRA radio link, protects against device configuration errors, expands spa control capabilities, and modernizes collection data structures.


🚨 Breaking Changes & Migration Guide

  • Collections are now dictionaries keyed by hardware ID (int) instead of lists:

    • Spa.jets: now dict[int, Jet] (previously list[Jet])
    • Spa.light_zones: now dict[int, LightZone] (previously list[LightZone])
    • Spa.energy_savings: now dict[int, EnergySavingSchedule] (previously list[...])

    Migration:

    # Before (v2.x)
    jet_1 = spa.jets[0]
    for jet in spa.jets:
        ...
    
    # After (v3.0.0)
    jet_1 = spa.jets[1]  # Direct access by hardware ID (1, 2, ...)
    for jet in spa.jets.values():  # Iterate values
        ...

🌟 Highlights & Key Improvements

  1. LoRA Link Stability & Dropout Prevention (#19):

    • Queries (/status, /spaConnectStatus) are now executed sequentially instead of in parallel via asyncio.gather, avoiding socket starvation and radio queue contention on the HNA's single-threaded web server.
    • Removed aggressive backoff retry storms on routine polling (request_retries=0 default). Polling failures now fail fast instead of locking up the radio for 30+ seconds.
    • Added automatic fallback for spa_connected if /spaConnectStatus temporarily drops while /status succeeds.
  2. HNA vs. SNA Adapter Detection (#18):

    • Added automatic validation to ensure connections target the Home Network Adapter (HNA) rather than the Spa Network Adapter (SNA). Connecting to an SNA will now raise a clear HotSpringSNADetectedError.
  3. Expanded Controls & Capabilities (#13, #15):

    • Added controls for spa locks (temperature lock, spa lock), clean cycle, and energy savings schedule configuration.
    • Added jet speed types (single-speed, two-speed, blower), capabilities, and concurrent mode support.
  4. Telemetry, Diagnostics & Runtime Tracking (#16):

    • Added runtime hours tracking for the heater and individual jet pumps (with 16-bit hardware counter rollover handling).
    • Added raw test point metrics (currents, voltages, sensor flow/limits, and board diagnostics).

What’s changed

🚨 Breaking changes

  • refactor(models)!: store jets, light_zones, and energy_savings as dicts keyed by ID @Moustachauve (#17)

✨ New features

  • feat(jets): expose jet capabilities, speed types, and runtime status @Moustachauve (#13)
  • feat(controls): add switch, lock, and schedule controls @Moustachauve (#15)
  • feat(models): add runtime tracking, fix counter overflow, and expand diagnostics @Moustachauve (#16)
  • feat(client): detect HNA vs SNA and guard against connecting to SNA @Moustachauve (#18)

🐛 Bug fixes

  • fix(client): serialize queries sequentially and prevent retry storms on LoRA link @Moustachauve (#19)