Skip to content

Releases: rellerton/ha-aiper

v1.3.3

Choose a tag to compare

@github-actions github-actions released this 22 Aug 14:49

Release v1.3.3

  • Strengthened the physically validated S1 charging reconciliation: Charging
    now overrides both an omitted in_water field and an explicitly replayed
    stale wet value. This remains model-specific; other cleaners keep their
    payload-reported water state.

Full Changelog: v1.3.2...v1.3.3

v1.3.2

Choose a tag to compare

@github-actions github-actions released this 22 Aug 14:38

Release v1.3.2

  • Suppressed an observed Scuba S1 MQTT lifecycle replay where redundant cloud
    topics briefly republished an older Cleaning snapshot immediately after a
    Parked or Charging report. The narrow two-second guard is enabled only for
    Scuba_S1_2025, preserves the newer terminal state and battery/runtime/water
    fields, and does not block a later genuine cleaning start.
  • Fixed Scuba_S1_2025 charging reports that omit in_water: charging now
    authoritatively clears a stale submerged state. Other models retain their
    existing payload-driven water semantics.

Full Changelog: v1.3.1...v1.3.2

v1.3.1

Choose a tag to compare

@github-actions github-actions released this 21 Aug 15:45

Release v1.3.1

  • Added a reusable, capability-gated Estimated Cleaning Time duration sensor.
    It is enabled initially only for Scuba_S1_2025, whose runtime units,
    lifecycle timer, reset, charging, and stale-report behavior have been
    physically validated. It anchors to the separate raw Current Cleaning Time
    sensor and advances locally once per minute only while normalized state is
    Cleaning/running/not charging; changed cloud samples correct the estimate
    immediately, while unchanged stale snapshots do not suppress progression.
    The estimator restores across Home Assistant restarts only when Cleaning is
    still authoritative and resets to zero otherwise. If Aiper remains falsely
    latched at Cleaning after the physical robot stops, the estimate can continue
    until a newer lifecycle report arrives. The same mechanism can be enabled
    for other Aiper robots after their runtime and lifecycle semantics are
    validated; no other model profile changes in this release.
  • Fixed S1 path/mode capability refreshes briefly republishing stale cached
    lifecycle values over newer MQTT state. Capability refreshes now update only
    their path and mode fields, preserving current status, battery, water state,
    and runtime.
  • Fixed config-entry diagnostics reading the obsolete hass.data runtime
    location. Diagnostics now use ConfigEntry.runtime_data while retaining a
    compatibility fallback for older loaded entries.

Full Changelog: v1.3.0...v1.3.1

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 21 Aug 13:12

Release v1.3.0

Added

  • Added hardware-verified Scuba_S1_2025 clean-path support using the official
    app's AT+AUTO? query and AT+AUTO=0/1 set contract. This model no longer
    uses speculative REST, shadow, or fallback command variants for clean path.
  • Added the app-derived Scuba_S1_2025 cleaning-mode profile: Auto, Floor,
    Wall, and Scheduled. The S1 now queries with AT+MODE?, writes only the
    corresponding AT+MODE=1/2/3/5 commands, and no longer exposes Waterline.
  • Added bounded S1 clean-path write confirmation so stale immediate readback
    cannot briefly revert a newly acknowledged selection in Home Assistant.
  • Added an explicit S1 capability profile that retains the observed MicroMesh
    consumable while suppressing unsupported temperature, charge-type, roller,
    tread, and propeller entities.
  • Fixed Scuba_S1_2025 post-cycle charging reconciliation. A fresh REST
    charging status now supersedes an hours-old MQTT Cleaning/Wet report and
    coherently reports Charging, Not running, Dry, Mode 0, and zero active
    cleaning runtime. If explicit status is absent, three increasing battery
    samples spanning at least two minutes may provide the same fallback only
    when no newer MQTT Machine report exists. Diagnostics identify the trigger
    used. Other device models retain the existing MQTT precedence.
  • Fixed the S1 flipping from Wet to Dry when a fresh REST poll reports Cleaning
    together with a stale in_water=0. For this model, active Cleaning is always
    Wet. Observed status 10 represents parking underwater and remains Wet when
    REST omits a newer water-state report.
  • Fixed recent MQTT lifecycle state being retained indefinitely over newer REST
    status. MQTT now remains authoritative per field for two polling intervals;
    after that, fresh REST can update running, status, charging, and mode. Active
    cleaning remains visible even when the independent cloud-online flag is
    false, and redacted diagnostics report each field's source and age.
  • Fixed MQTT remaining disconnected after temporary AWS credentials expire or
    the AWS IoT connection is interrupted. REST-backed entities stay available,
    signing credentials refresh without blocking Home Assistant, and a
    rate-limited watchdog rebuilds and re-subscribes prolonged connections.
    Device callbacks are retained even when MQTT is unavailable during initial
    setup, and diagnostics expose connection-recovery timing without credential
    material.
  • Persisted the last confirmed Scuba_S1_2025 clean-path preference across
    integration restarts. S1 path and mode queries now also run on an independent
    five-minute timer, so frequent MQTT push updates cannot postpone them by
    continually resetting the general coordinator refresh.

Full Changelog: v1.2.4...v1.3.0