Skip to content

feat: add holiday support for Velis Slp (Nuos) devices - #182

Open
dpmworld wants to merge 1 commit into
fustom:mainfrom
dpmworld:feat/slp-holiday-support
Open

feat: add holiday support for Velis Slp (Nuos) devices#182
dpmworld wants to merge 1 commit into
fustom:mainfrom
dpmworld:feat/slp-holiday-support

Conversation

@dpmworld

Copy link
Copy Markdown

The official Ariston NET app exposes a dedicated holiday endpoint for Slp devices at POST /api/v2/velis/slpPlantData/{gw}/holiday, but the library only exposes a holiday setter on AristonGalevoDevice that targets the Galevo path /remote/plantData/{gw}/holiday. There was no way to schedule or clear a holiday on a Nuos heat pump from Python.

This change adds:

  • AristonAPI.set_velis_slp_holiday (sync + async) that POSTs to the Slp-specific endpoint with {"new": holiday_end_date} (or {"new": null} to clear).
  • AristonNuosSplitDevice.set_holiday(holiday_end) (sync + async) that accepts a datetime.date (or None) and forwards it to the API after formatting the ISO string the cloud expects, mirroring the existing Galevo set_holiday shape.

The endpoint and its presence in the app were verified by inspecting the strings table in the official APK's classes.dex files.

The official Ariston NET app exposes a dedicated holiday endpoint for
Slp devices at `POST /api/v2/velis/slpPlantData/{gw}/holiday`, but the
library only exposes a holiday setter on `AristonGalevoDevice` that
targets the Galevo path `/remote/plantData/{gw}/holiday`. There was
no way to schedule, clear, or read the holiday state on a Nuos heat
pump from Python.
This change adds:
* `AristonAPI.set_velis_slp_holiday` (sync + async) that POSTs to the
Slp-specific endpoint with `{"new": holiday_end_date}` (or
`{"new": null}` to clear).
* `AristonNuosSplitDevice.set_holiday(holiday_end)` (sync + async)
that accepts a `datetime.date` (or `None`) and forwards it to the
API after formatting the ISO string the cloud expects, mirroring
the existing Galevo `set_holiday` shape.
* `NuosSplitProperties.HOLIDAY_UNTIL = "holidayUntil"` and two new
read-only properties on `AristonNuosSplitDevice`:
- `holiday_end_date` -> the ISO date string the cloud has on file
(or `None` when no holiday is scheduled)
- `holiday_active` -> `True` when `holidayUntil` is non-null
The Slp payload does not expose a dedicated boolean: an active
holiday is signalled by `holidayUntil` being a non-null string.
* The setters now optimistically write `holidayUntil` back into
`device.data`, so the new properties reflect the requested change
immediately without waiting for an `update_state()` round-trip
(mirrors the cache-update pattern used by the temperature and
operation-mode setters).
The endpoint, the field name `holidayUntil`, and the fact that no
dedicated boolean exists were verified against the official APK
(`com.remotethermo.aristonnet` v6.0.7773.40338): the endpoint string
is present in `classes*.dex`, and the `SlpPlantDataDto` Kotlin model
declares `holidayUntil: String?` with the matching `@SerialName`.
@dpmworld
dpmworldforce-pushed the feat/slp-holiday-support branch from d9f30fa to cda2c1cCompareMay 8, 2026 11:38
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@dpmworld