Skip to content

feat: add WaterTreatment class for Vitoset Aqua#761

Open
lackas wants to merge 3 commits into
openviess:masterfrom
lackas:water-treatment-class
Open

feat: add WaterTreatment class for Vitoset Aqua#761
lackas wants to merge 3 commits into
openviess:masterfrom
lackas:water-treatment-class

Conversation

@lackas

@lackas lackas commented May 9, 2026

Copy link
Copy Markdown
Contributor

Type: New feature

Adds read-only support for the Vitoset Aqua water treatment station.

The Vitoset Aqua exposes four functional areas in its IoT-scope feature dump:

  • Softener: salt days remaining, low-salt alert threshold
  • Consumption: current/max flow, daily / 7-day / total volume
  • Leak detection: up to 5 sensors (status, leak, battery, RSSI, name, hardware/software versions) plus configurable flow alert
  • Shutoff valve: position, motor state, holiday-mode flag

Autodetect matches device model VitosetAqua* (e.g. VitosetAqua19D, VitosetAqua42D) and the type:waterTreatment role.

Setters intentionally deferred: the IoT-scope dump contains no command definitions for this device, so write operations cannot currently be implemented. Will follow up if/when commands surface.

Test data was added separately in #756.

Tests: 743 pass, includes new test_VitosetAqua.py (82 lines) and 3 autodetect tests.

Adds read-only support for the Vitoset Aqua water treatment station,
covering the four functional areas exposed by the device:

- Softener: salt days remaining, low-salt alert threshold
- Consumption: current/max flow, daily/7-day/total volume
- Leak detection: up to 5 sensors (status, leak, battery, RSSI, name,
  versions) plus configurable flow alert
- Shutoff valve: position, motor state, holiday-mode flag

Autodetect matches device model "VitosetAqua*" (e.g. VitosetAqua19D,
VitosetAqua42D) and the "type:waterTreatment" role.

Setters are intentionally left out for a follow-up: the IoT-scope dump
contains no command definitions for this device.
Comment thread PyViCare/PyViCareWaterTreatment.py Outdated
Comment on lines +37 to +43
@handleNotSupported
def getCurrentDayConsumption(self) -> int:
return int(self.getProperty("water.consumption.summary")["properties"]["currentDay"]["value"])

@handleNotSupported
def getLastSevenDaysConsumption(self) -> int:
return int(self.getProperty("water.consumption.summary")["properties"]["lastSevenDays"]["value"])

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we omit the daily / weekly end points? In my eyes it's not really necessary for HA, which is the first-class user of the this library.

Comment thread PyViCare/PyViCareWaterTreatment.py Outdated
hw_props = self._readProperties(f"water.leakDetection.sensors.leakage.{slot}.version.hardware")
sw_props = self._readProperties(f"water.leakDetection.sensors.leakage.{slot}.version.software")
sensors.append({
"slot": slot,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are not exposed as dedicated devices? What do you think of exposing them in a similar way than we do it with burners and compressors?

lackas added 2 commits June 14, 2026 11:34
Mirror the Compressor / Burner pattern instead of returning a list of
dicts: leakSensors returns LeakSensor objects with typed get* methods,
discovery via getAvailableLeakSensorSlots filters on isEnabled.
Sign up for free to 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.

2 participants