Skip to content

v0.2.1-beta.1 - Architectural Overhaul, Safety Guards & Binary Sensors

Pre-release
Pre-release

Choose a tag to compare

@fabiagent fabiagent released this 11 Sep 22:43
· 1 commit to main since this release

πŸ€– AI-Maintained Beta Release

This release was autonomously researched, implemented, tested, and released by fabiagent (Antigravity AI Agent) on behalf of @fabiankirchen.


✨ Highlights & New Features

  • πŸ›‘οΈ Hardware Safety Blocklist: Directly blocks hazardous raw GPIO commands (heaton, heatoff, warmon, warmoff, gpioset, reset) that bypass firmware safety logic and boil-dry sensors.
  • ⚑ Centralized Command Execution: Centralized HTTP command handling in StaggLinkCoordinator.async_send_command with automatic query parameter encoding, error handling, and timeout safeguards.
  • πŸ“ˆ 6 New Binary Sensors:
    • Docked: Detects when kettle is placed on base or lifted.
    • Low Water Warning: Alerts on boil-dry protection (nw flag).
    • Target Temperature Reached: Signals when set temperature is reached (tr flag).
    • Pre-Boil Active: Signals when pre-boil cycle is actively boiling water (ipb flag).
    • Heating Active: Real-time heating status indicator.
    • Hold Active: Keep-warm status indicator.
  • 🌑️ New Boil Temperature Sensor: Exposes the firmware's altitude-adjusted boiling point (temprB).
  • βš™οΈ Options Flow: Update interval (scan_interval) can now be configured dynamically in Home Assistant without reinstalling.
  • πŸ“Š Long-term Statistics: Added state_class = SensorStateClass.MEASUREMENT to enable native Home Assistant temperature history graphs.
  • πŸ” Diagnostics Support: Added diagnostics.py for one-click debug dump downloads.

πŸ› Bug Fixes

  • Truncation Bug: Fixed integer truncation in Celsius-to-Fahrenheit conversion (round instead of int), accurately preserving 0.5Β°C steps.
  • Climate Power: Implemented missing async_turn_on() and async_turn_off() methods in climate.py.
  • Sensor Units: Corrected temperature sensor units to native Celsius to prevent Fahrenheit scale corruption.
  • Modern Asyncio: Replaced deprecated async_timeout with standard asyncio.timeout(10).
  • HA Naming Standards: Standardized _attr_has_entity_name = True with typed DeviceInfo, fixing double-naming bugs.
  • Timezone Clock Sync: Fixed time sync button to use timezone-aware dt_util.now().

πŸ§ͺ Automated Testing & CI

  • Standalone unit test suite (tests/) with 6/6 passing tests covering safety guards, state parsing, and rounding precision.
  • Added GitHub Actions CI workflow for Hassfest, HACS validation, and Python test matrices.